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)
(
(penwidth turtle 10)
(forward turtle s)
(right turtle 90)
(forward turtle s)
(right turtle 90)
(forward turtle s)
(right turtle 90)
(forward turtle s)
(right turtle 90)
#t)))
(quad turtle1 50)
</eval>
|}
===Aufgabe 1===