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>
(define quad
  (lambda (turtle s)
    (
      (pencolor turtle 255 0 0)
      (penwidth turtle 5)
      (forward turtle s)
      (right turtle 90)
      (forward turtle s)
      (right turtle 90)
      (forward turtle s)
      (right turtle 90)
      (forward turtle s)
      (right turtle 90))))

(clear canvas1)
(home turtle1) 
(quad turtle1 s)    
</eval>
|}

===Aufgabe 1===