Turtlegrafik (I)

Aus ProgrammingWiki

Wechseln zu: Navigation, Suche

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.

SyntaxSemantik
canvas.clear(); löscht die Zeichenfläche,
turtle.move(<x>,<y>); positioniert die Turtle in der Zeichenfläche,

x ... Spaltenkoordinate, y ... Zeilenkoordinate,

der Koordinatenursprung befindet sich in der linken oberen Ecke der Zeichenfläche,
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.

  1. Das Haus des Nikolaus

    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.

  2. Treppe

    Zeichne mit einer entsprechenden Prozedur eine Treppe mit beliebiger Stufenzahl und beliebiger Sufenhöhe bzw. -breite (vgl. Abbildung).

    Treppe Pentagramm1.gif
  3. Rosette mit regelmäßigen Fünfecken

    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.

  4. 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.

  5. 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).

    Raster1.gif

Zu den Lösungen der Aufgaben.

Persönliche Werkzeuge