Scheme Turtle

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>Scheme</language>

==Turtle Geometrie==

Die Turtle Geometrie ist aus der Programmiersprache LOGO sehr gut bekannt. Es handelt sich um eine koordinatenfreie Geometrie. Die Idee besteht darin, einen kleinen Zeichenroboter, dargestellt als Schildkröte (Turtle genannt), mit bestimmten Befehlen zu steuern. Da die Turtle am Bauch einen Stift besitzt, kann sie bei ihren Bewegungen eine Spur hinterlassen. Das Schildkrötensymbol lässt die jeweils aktuelle Blickrichtung der Turtle erkennen. Die Vorwärts/Rückwärts-Bewegungen finden in dieser Blickrichtung statt. Diese kann durch Rechts/Links-Drehungen der Turtle verändert werden.

===Zeichenfläche===

Als erstes benötigen wir eine "Spielwiese", auf der sich unsere Turtle tummeln kann. Das folgende Rechteck zeigt dieses Areal, das auch als Zeichenfläche (Canvas, auch Leinwand) bezeichnet wird.

Die folgende Zeichenfläche zeigt die Canvas-Standardgröße.  

<canvas></canvas>

<popup name="Canvas-Größe">
Hinweis für Autoren einer solchen Wiki-Seite: Mit den Attributen <tt>width</tt> und <tt>height</tt> werden die Breite und Länge explizit festgelegt. Beispiel: 
<nowiki><canvas width=300 height=200></canvas></nowiki>
</popup>

Auf diese Zeichenfläche setzen wir nun eine Turtle.
<eval id="4b40587e614de">
(clear canvas)
(home turtle)
</eval>

Der Befehl ''home'' setzt die Turtle etwa in die Mitte der Zeichenfläche. Wenn uns die aktuelle Turtle-Position nicht gefällt, bewegen wir die Turtle auf einen anderen Platz.

===Turtle-Bewegungen===
<code id="4b40587e6015c" hidden>(home turtle)</code>
<eval id="4b40587e61cad">
(forward turtle 50)
</eval>

lässt die Turtle 50 Schritte vorwärts laufen. Analog gilt dies auch für ''backward'' (rückwärts). Soll keine Spur gezeichnet werden, kann die Turtle den Stift anheben (und später wieder absenken).

<code id="4b40587e6092b" hidden>(clear canvas)(home turtle)</code>
<eval id="4b40587e624ad">
(forward turtle 20)
(penup turtle)
(forward turtle 20)
(pendown turtle)
(forward turtle 30)
</eval>

Da die Zeichenfläche nun den sichtbaren Bereich dieser Seite verlässt, brauchen wir entweder eine neue Wiki-Seite oder auf dieser hier eine neue canvas. Wir nehmen hier den zweiten Weg. 

<canvas></canvas>

Im Evaluationsfenster müssen wir allerdings beachten, dass wir nun <tt>canvas2</tt> ansprechen. Auf canvas2 sitzt turtle2. Allgemein sitzt auf canvas_n turtle_n, wobei n=2,3,4,5. Der Standardfall ist n=1, ohne die 1 zu schreiben.

In folgendem Beispiel kommen Drehbewegungen (um einen bestimmten Winkel) und Vorgaben für Linienstärken und deren Farbe hinzu.

<eval id="4b40587e63056">
(clear canvas2)
(home turtle2)
(penwidth turtle2 5)
(pencolor turtle2 255 0 0)
(forward turtle2 50)
(right turtle2 90)
(pencolor turtle2 255 255 0)
(forward turtle2 50)
(right turtle2 90)
(pencolor turtle2 0 255 0)
(forward turtle2 50)
(right turtle2 90)
(pencolor turtle2 0 0 255)
(forward turtle2 50)
(hide turtle2)
</eval>

Am Arbeitsende wird die Turtle versteckt. Mit ''show'' kann die Turtle wieder sichtbar gemacht werden.

[[Scheme Turtle 2]]