An dieser Stelle gehen wir davon aus, dass die Arbeit mit einer Turtlegraphik bekannt ist. Wir haben sie bei rekursiven Graphiken kennen gelernt. Wir möchten nun eine Klasse entwerfen, welche auf einer Leinwand (Canvas) folgende Aufträge erfüllen können soll:
hoch; hebt den imaginären Zeichenstift runter; senkt den imaginären Zeichenstift links (winkel : Real); Ändert die Zeichenrichtung um den angegebenen Winkel nach links. rechts (winkel : Real); Ändert die Zeichenrichtung um den angegebenen Winkel nach rechts. vorwaerts (length:Real); Bewegt den Zeichenstift um die angegebene Länge in der gegebenen Richtung vorwärts. Ist der Stift gesenkt, wird dabei eine gerade Linie gezeichnet, sonst wird der Stift an eine neue Position bewegt, ohne eine Linie zu zeichnen. |
Dafür benötigen wir folgende Eigenschaften (innere Zustände):
(* Das Präfix h_ bedeutet: HAT *) h_xpos,h_ypos:Real; Koordinaten der Turtle auf der Zeichenfläche h_winkel:Real; Zeichenrichtung h_gesenkt:Boolean; Gibt an, ob der imaginäre Stift gesenkt ist oder nicht (* Das Präfix k_ bedeutet: KENNT *) k_Leinwand:TCanvas; Vermerk darüber, auf welcher Leinwand die Turtle zeichnen soll |
Darüber hinaus benötigen wir eine Methode zum Erzeugen einer Turtle. Dabei soll der Turtle die Leiwand (Canvas) bekannt gegeben werden, auf der sie sich darstellt. Methoden zum Erzeugen eines Objektes nennt man auch Konstruktoren (constructor).
Also benötigen wir einen
constructor createturtle (x_param,y_param,winkel_param : Real; gesenkt_param : Boolean; Leinwand_param : TCanvas); Erzeugt eine Turtle auf der durch 'Leinwand_param' angegebenen Leinwand an der Stelle mit den Koordinaten 'x_param' und 'y_param'. Die Zeichen- richtung wird durch 'winkel_param' angegeben und der Stiftstatus ist durch den Parameter 'gesenkt_param' festgelegt. |
Als Methode zum Entfernen eines Turtleobjektes (destruktor) können wir die aus der Vorgöngerklasse geerbten Methoden free und destroy benutzen.
Das führt uns zur Vorgängerklasse: Wir nehmen die Ur-Klasse aller Delphi-Klassen: TObject.
Auf der nächsten Seite findet Ihr nun den kommentierten Programmcode zur Umsetzung dieser Ideen in Delphi:
![]() |
|
![]() |
|
![]() |
Zur
nächsten Seite ![]() |
© 2000 LK 12 If und G. Kubitz | Hannah-Arendt-Gymnasium, Lengerich |