Inhaltsverzeichnis
FAQ
Bis ich Zeit finde, eine systematische Anleitung zu erstellen, finden Sie hier Antworten auf häufig gestellte Fragen.
Transformation mehrerer Objekte gleichzeitig (Verwendung von Gruppen!)
Will man mehrere Objekte gleichzeitig transformieren (z.B. drehen), so geht das mit Hilfe eines Objektes der Klasse GRUPPE. Ein solches Objekt kann beliebig viele andere Objekte (auch andere Gruppen!) enthalten. Jede Transformation einer Gruppe wirkt auf alle Objekte, die in der Gruppe enthalten sind.
Das Hinzufügen von Objekten zu einer Gruppe geschieht mit Hilfe der Methoden schlucke(Objekt o) bzw. kopiere(Objekt o) der Klasse GRUPPE. Hier ein Beispiel, an dem leicht klar wird, wozu das ganze gut ist:
r1:RECHTECK r2:RECHTECK g:GRUPPE r2.verschieben(30,0) r2.füllfarbeSetzen(gelb) wiederhole 360 mal r1.drehen(1) r2.drehen(1) *wiederhole g.schlucke(r1) g.schlucke(r2) wiederhole 360 mal g.drehen(1) *wiederhole
Was ist der Unterschied zwischen "schlucke" und "kopiere"?
Anhand eines Beispiels wird der Unterschied am einfachsten klar:
r1:RECHTECK r2:RECHTECK g1:GRUPPE r2.verschieben(30,0) r1.füllfarbeSetzen(gelb) r2.füllfarbeSetzen(rot) g1.schlucke(r1) g1.kopiere(r2) g1.verschieben(0,30)
Der Methodenaufruf g1.schlucke(r1) bewirkt, dass das Objekt r1 zum Gruppe-Objekt g1 hinzugefügt wird. Das Objekt wird also Bestandteil der Gruppe.
Der Methodenaufruf g1.kopiere(r2) bewirkt, dass eine Kopie des Objekts r2 zur Gruppe g1 hinzugefügt wird. Das Objekt r2 wird selbst nicht Bestandteil der Gruppe. Offenbar wird der Unterschied, wenn am Ende des Programms die Gruppe g1 um 30 Pixel nach oben verschoben wird: das Objekt r2 bleibt zurück. Nur seine Kopie wird als Bestandteil der Gruppe g1 um 30 Pixel nach oben verschoben. Rechts ist der Endzustand der graphischen Programmausgabe zu sehen.
Warum läuft EOS nicht auf MAC-Rechnern?
EOS ist in Delphi 6 geschrieben und läuft leider nur auf Windows Betriebssystemen. Für plattformübergreifende Programmierung (Java) war zum Zeitpunkt der Entwicklung (ca. 2004) mein damaliger Rechner einfach zu langsam.
Die einzige Möglichkeit, EOS auf einem Mac zum Laufen zu bringen, bestünde darin, Windows (z.B. XP) in einer virtuellen Maschine (z.B. VirtualBox) zu installieren. Ob sich der Aufwand lohnt, ist aber fraglich.
Wie kann ich den Hintergrund ändern?
Sobald man ein Objekt instanziert, z.B. mit
r: Rechteck
instanziert EOS ein Zeichenfenster, weist ihm das Objekt (hier: r
) zu und öffnet es. Alle weiteren instanzierten Objekte werden demselben Zeichenfenster zugewiesen. Dies erleichtert Programmieranfängern den Einstieg in EOS, hat aber den Nachteil, dass es im Programm keine Variable gibt, mit der man das FENSTER-Objekt ansprechen kann. Möchte man Eigenschaften des FENSTER-Objekts ändern, so muss man es im Programm instanzieren und ihm alle Objekte zum Zeichnen zuweisen:
f:FENSTER r:RECHTECK f.hintergrundfarbeSetzen(grün) f.gitteraus() f.zeichne(r)
Erst nach dem Ausführen der Anweisung f.zeichne®
erscheint das Rechteck im Zeichenfenster.