Rekursive Prozeduren 1

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>Scheme</language>
Heute beschäftigen wir uns mit einen Turtle ist eine Zeichenroboter die man sich vorstellen kann wie eine Schildkröte mit stift am Bauch
Der Turtle lebt auf einer Zeichenfläche (<tt>canvas</tt>).

In den folgenden Beispielen werden Sie auf verschiedenen <tt>canvas</tt> mit verschiedenen <tt>Turtles</tt> arbeiten.
um diese anzusprechen hat jede fläche und jeder Turtle einen eigenen Namen welcher immer vorher angegeben wird. In der regel wird die erste Zeichenfläche <tt>canvas1</tt> mit <tt>turtle1</tt> auf <tt>canvas2</tt> <tt>turtle2</tt> und so weiter 

Sämtliche Kommandos, die eine Turtle versteht, finden sich in der folgenden Liste. Das
Aufrufmuster ist:
([comando] [turtle] [parameter])


{| border='1px'
|+ Turtle Befehle
! Befehl !! Beschreibung
|-
| home
| setzt den Turtle auf die Mitte der Zeichenfläche
|-
| move turtle x y
| setzt den Turtle die x und y Koordinate der Zeichenfläche
|-
| forward turtle x
| lässt den Turtle x Schritte nach vorn gehen
|-
| backward turtle x
| lässt den Turtle x schritte nach hinten gehen
|-
| pendown turtle
| setzt den stift ab und lässt den turtle zeichnen (standart)
|-
| penup turtle
| nimmt den stift hoch und der turtle hört auf zu zeichnen
|-
| penwidth turtle x
| Setzt die Stärke des Stiftes auf x
|-
| pencolor turtle r g b
| Setzt die Farbe des Stiftes auf Rot Gelb Grün (Werte der Farben im bereich 0 - 255)
|-
| right turlte x
| Dreht den Turtle um x Grad nach Rechts
|-
| left turtle x
| Dreht den Turtle um x Grad nach Links
|-
| hide turtle
| Blendet den Turtle aus
|-
| show turtle
| Blendet den Turtle ein
|-
| clone turtle
| Clont den Turtle in der Aktuellen Position
|-
| panerase turtle
| Der Turtle löscht Linien über die er Fährt (wie ein Radiergummi)
|-
| clear canvas
| Löscht die Zeichenfläche
|-
|}




Setzen sie sich mit der folgenden Beispiel auseinander und testen sie eigenen Funktionen mit dem Turtle
{|
|-valign="top"
|<canvas width=500 height=300></canvas>||<eval>
(clear canvas1)
(home turtle1)

(define quad
  (lambda (turtle s)
    (begin  
      (penwidth turtle 10)
      (pencolor turtle 255 0 0)
      (forward turtle s)
      (right turtle 90)
      (forward turtle s)
      (right turtle 90)
      (forward turtle s)
      (right turtle 90)
      (forward turtle s)
      (right turtle 90))))
 
(quad turtle1 50)
</eval>
|}

===Aufgabe 1===