Grundlagen der funktionsorientierten Programmierung mit SCHEME/Turtle-Befehle

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>SchemeJS</language>
== Scheme-Strachelemente zur Turtle-Grafik ==

Die folgende Tabelle enthält die wesentlichsten Sprachelemente der Turtle-Grafik.

<table border="1" cellspacing="1" cellpadding="8">
<tr>
<td><b>Syntax</b></td><td><b>Semantik</b></td>
</tr>
<tr valign="top">
<td><tt>(move&nbsp;&lt;turtle&gt;&nbsp;&lt;x&gt;&nbsp;&lt;y&gt;)</tt></td>
<td>positioniert die Turtle in der Zeichenfläche,<br />
x ... Spaltenkoordinate, y ... Zeilenkoordinate,<br />
der Koordinatenursprung befindet sich in der ''linken oberen'' Ecke der Zeichenfläche,</td>
</tr>
<tr valign="top">
<td><tt>(forward&nbsp;&lt;turtle&gt;&nbsp;&lt;x&gt;)</tt></td>
<td>lässt die Turtle x Schritte vorwärts gehen,</td>
</tr>
<tr valign="top">
<td><tt>(backward&nbsp;&lt;turtle&gt;&nbsp;&lt;x&gt;)</tt></td>
<td>lässt die Turtle x Schritte zurück gehen,</td>
</tr>
<tr valign="top">
<td><tt>(pendown&nbsp;&lt;turtle&gt;)</tt></td>
<td>setzt den Stift ab, so dass Turtle-Bewegungen eine Spur hinterlassen,</td>
</tr>
<tr valign="top">
<td><tt>(penup&nbsp;&lt;turtle&gt;)</tt></td>
<td>hebt den Stift an, so dass Turtle-Bewegungen keine Spur hinterlassen,</td>
</tr>
<tr valign="top">
<td><tt>(penwidth&nbsp;&lt;turtle&gt;&nbsp;&lt;x&gt;)</tt></td>
<td>setzt die Breite des Stiftes auf den Wert x,</td>
</tr>
<tr valign="top">
<td><tt>(pencolor&nbsp;&lt;turtle&gt;&nbsp;&lt;r&gt;&nbsp;&lt;g&gt;&nbsp;&lt;b&gt;)</tt></td>
<td>legt den Fabwert des Stiftes fest,<br />
mögliche Zahlenwerte für rot (r), grün (g) und blau (b) sind: 0&nbsp;...&nbsp;255,</td>
</tr>
<tr valign="top">
<td><tt>(right&nbsp;&lt;turtle&gt;&nbsp;&lt;x&gt;)</tt></td>
<td>dreht die Turtle um x Grad nach rechts,</td>
</tr>
<tr valign="top">
<td><tt>(left&nbsp;&lt;turtle&gt;&nbsp;&lt;x&gt;)</tt></td>
<td>dreht die Turtle um x Grad nach links,</td>
</tr>
<tr valign="top">
<td><tt>(hide&nbsp;&lt;turtle&gt;)</tt></td>
<td>macht die Turtle unsichtbar,</td>
</tr>
<tr valign="top">
<td><tt>(show&nbsp;&lt;turtle&gt;)</tt></td>
<td>macht die Turtle sichtbar,</td>
</tr>
<tr valign="top">
<td><tt>(penerase&nbsp;&lt;turtle&gt;)</tt></td>
<td>die Turtle löscht eine gezeichnete Linie (wie ein Radiergummi),</td>
</tr>
<tr valign="top">
<td><tt>(clear&nbsp;&lt;canvas&gt;)</tt></td>
<td>löscht die Zeichenfläche,</td>
</tr>
</table>

== Test ==

Mit den nachfolgenden Definitionen können die vorgestellten Sprachelemente bequem ausprobiert werden: 

<code id="5bb9bbae7e9aa">
(define center
  (lambda (turtle)
    (move turtle 200 150)))

(define black
  (lambda (turtle)
    (pencolor turtle 0 0 0)))

(define red
  (lambda (turtle)
    (pencolor turtle 255 0 0)))

(define brown
  (lambda (turtle)
    (pencolor turtle 100 50 0)))

(define orange
  (lambda (turtle)
    (pencolor turtle 255 100 0)))

(define yellow
  (lambda (turtle)
    (pencolor turtle 255 200 0)))

(define green
  (lambda (turtle)
    (pencolor turtle 0 255 0)))

(define blue
  (lambda (turtle)
    (pencolor turtle 0 0 255)))

(define pink
  (lambda (turtle)
    (pencolor turtle 200 50 200)))

(define n-eck
  (lambda (turtle len n)
    (letrec
        ([zeichnen
          (lambda (m winkel)
            (if (> m 0)
                (begin
                  (forward turtle len)
                  (right turtle winkel)
                  (zeichnen (- m 1) winkel))
                'ok))])
      (zeichnen n (/ 360 n)))))
</code>

<canvas w="400" h="300"></canvas>

<run id="5bb9bbae7ea30">
(clear canvas1)
(center turtle1)
(pink turtle1)
(n-eck turtle1 50 7)
</run>

Zurück zu [[Grundlagen der funktionsorientierten Programmierung mit SCHEME/Rekursionen|Rekursionen]] bzw. [[Grundlagen der funktionsorientierten Programmierung mit SCHEME/Fraktale|Fraktalen]].