Zur Themenübersicht     

Die Objektklasse TTurtle

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: