Turtlegrafik (I)
Aus ProgrammingWiki
Inhaltsverzeichnis |
Wie zeichnet die Turtle ein Quadrat?
Wir erinnern uns: Eine kleine Schildkröte (engl. turtle) besitzt am Bauch einen Zeichenstift und gehorcht aufs Wort!
Diese Schildkröte bewegt sich auf einer Sandfläche, die wir als Zeichenfläche (engl. canvas) bezeichnen.
Da es mehrere "schlaue" Schildkröten und mehrere Zeichenflächen gibt, geben wir jeder Schildkröte und jeder Zeichenfläche eine Nummer.
Turtle1 auf Zeichenfläche1: |
Turtle2 auf Zeichenfläche2: |
|
Wir wollen die nachfolgenden Anweisungen ausführen und anschließend vergleichen. |
||
Vergleichend stellen wir fest:
- Die Darstellungen sind zunächst identisch.
- Gleiche Anweisungen lassen sich in Wiederholungen (Zählschleifen) beliebig oft ausführen.
Zählschleifen haben folgende Syntax:for (zaehler = von; zaehler <= bis; zaehler = zaehler + schrittweite) { //Anweisung(en) }
Bei einer Anweisung können die geschweiften Klammern entfallen.
- Anweisungen können modularisiert, d.h. in Prozeduren unter einem geeigneten Bezeichner (Namen) zusammengfasst werden.
- Prozeduren können Parameter (Platzhalter) haben, die z.B. Objekte in variabler Größe zeichnen lassen.
Turtle-Befehle
Die folgende Tabelle enthält die wesentlichsten Sprachelemente der Turtle-Grafik.
Syntax | Semantik |
canvas.clear(); | löscht die Zeichenfläche, |
turtle.move(<x>,<y>); | positioniert die Turtle in der Zeichenfläche, x ... Spaltenkoordinate, y ... Zeilenkoordinate, |
turtle.forward(<x>); | lässt die Turtle x Schritte vorwärts gehen, |
turtle.backward(<x>); | lässt die Turtle x Schritte zurück gehen, |
turtle.right(<x>); | dreht die Turtle um x Grad nach rechts, |
turtle.left(<x>); | dreht die Turtle um x Grad nach links, |
turtle.penDown(); | setzt den Stift ab, so dass Turtle-Bewegungen eine Spur hinterlassen, |
turtle.penUp(); | hebt den Stift an, so dass Turtle-Bewegungen keine Spur hinterlassen, |
turtle.penWidth(<x>); | setzt die Breite des Stiftes auf den Wert x, |
turtle.penColor(<r>,<g>,<b>); | legt den Fabwert des Stiftes fest, mögliche Zahlenwerte für rot (r), grün (g) und blau (b) sind: 0 ... 255, |
turtle.hide(); | macht die Turtle unsichtbar, |
turtle.show(); | macht die Turtle sichtbar, |
turtle.penErase(); | die Turtle löscht eine gezeichnete Linie (wie ein Radiergummi), |
Vom Dreieck zum N-Eck
Ergänze zunächst die Prozedur zum Zeichnen eines gleichseitigen Dreiecks. Verallgemeinere dann die Lösung zur Darstellung regelmäßiger N-Ecke.
Gleichseitiges Dreieck: |
Regelmäßiges N-Eck: |
|
Prozeduren rufen Prozeduren auf
In einer Turtlegrafik können komplexe Figuren mit bereits definierten Prozeduren beschrieben werden. So lässt sich ein Haus aus 2 regelmäßigen N-Ecken zusammensetzen. Natürlich muss auch hier die Prozedur n_eck zuvor definiert werden.
Aufgaben
Die nachfolgenden Aufgaben sollen auch auf einer Turtlegrafik-Seite unter dem eigenen Benutzernamen erstellt werden.
-
Nikolaushaus
Das bekannte Nikolaushaus soll in einem Zug gezeichnet werden, d.h. jede Kante wird dabei genau einmal durchlaufen.
Schreibe eine Prozedur, die das Nikolaushaus in beliebiger Größe zeichnet. -
Treppe
Zeichne mit einer entsprechenden Prozedur eine Treppe mit beliebiger Stufenzahl und beliebiger Sufenhöhe bzw. -breite (vgl. Abbildung).
-
Pentagramm
Die Turtle soll ein Pentagramm (Stern mit 5 Spitzen - vgl. Abbildung) zeichnen.
Überlege dazu, welche Winkel zuvor berechnet werden müssen.
Hinweis: Die Spitzen des Pentagramms schließen ein Pentagon (regelmäßiges Fünfeck) ein. -
Rosetten
Wenn einfache regelmäßige N-Ecke mehrfach gezeichnet werden und sich dabei die Turtle nach jedem N-Eck ein Stück weiter dreht, können schöne Rosetten generiert werden.
Entwickle eine Prozedur, die derartige Grafiken farbig erstellt. -
Quadrat-Raster
Entwickle eine Prozedur, die ein quadratisches Raster in beliebiger Größe zeichnet. Dabei soll die Anzahl der Quadrate in einer Spalte und in einer Zeile gleich sein (vgl. Abbildung).
Zu den Lösungen der Aufgaben.