Ziel
Im letzten Themenblock haben wir mittels der goto() Anweisung und durch Angabe einer (absoluten) Position im kartesischen Koordinatensystem unsere Schildkröte an eine beliebige Stelle verschoben. Bezugspunkt bildete der Nullpunkt bzw. Ursprung des Koordinatensystems. Hier bewegt sich unserer Schildkröte immer an die angegebene Zielposition, egal wo sich der Cursor gerade befindet.
Dies im Unterschied zu Anweisungen mit relativen Angaben (Bezugspunkt ist der aktuellen Standort des Cursors) wie beispielsweise forward(), bei welchen die Endposition auch von der aktuellen Position des Cursors abhängt.
In diesem Themenblock wollen wir lernen, wie man die Ausrichtung (Blickrichtung) der Schildkröte absolut bestimmen kann.
Am Ende dieser Lektion solltest du wissen,
- wie man mittels der Anweisungen setheading(to_angle) bzw. seth(to_angle) die Schildkröte bzw. ihren Blickwinkel ausrichten kann.
- wissen, wie man die Ausrichtung der Schildkröte über die Anweiswunge heading() ermitteln kann.
Fortgeschrittene Kursteilnehmer vertiefen gleichzeitig die folgenden Themen:
- setzen eines Fenstertitels und Umgang mit Zeichenketten
- erzeugen von Zufallszahlen mittels random.randint()
- Datentypen Tuples und Listen
Absolute Ausrichtung mit der Schildkröte
Wir haben in den vorangehenden Lektionen bereits die Anweisungen gesehen, um unsere Schildkröte mit relativen Angaben zu drehen. Namentlich die zwei Anweisungen right() und left(). Der Befehl right(90) beispielsweise dreht die Turtle ausgehend von ihrer aktuellen Ausrichtung um 90 Grad nach rechts.
Nun werfen wir einen Blick auf Anweisungen zum Ausrichten des Cursors mit absoluten Richtungsangaben. Dazu benötigen wir die Funktion setheading() zusammen mit einer Angabe der Ausrichtung. Zum Beispiel so:
from turtle import * # Dreieck zeichnen setheading(0) forward(100) setheading(120) forward(100) setheading(240) forward(100) setheading(360) # Abschluss exitonclick()
Das Programm führt zur nachfolgend dargestellten Ausgabe auf dem Bildschirm.

Hierzu einige Anmerkungen:
- Ausgegeben wird nur der schwarze Strich. Zur Hilfe wurden in der Grafik nachträglich 4 graue Hilfslinien bei einer Ausrichtung von 0, 90, 180 und 270 Grad eingezeichnet.
- Die ursprüngliche Ausrichtung ist anfangs gegen rechts. Dort ist auch 0 Grad. Das mag etwas irritierend sein, da man instiktiv davon ausgeht, 0 Grad liege oben (gegen Norden).
- Gedreht wird im Gegenuhrzeigersinn. Eine Ausrichtung von 90 Grad zeigt also nach oben (gegen Norden), von 135 Grad nach oben links etc. Auch dies ist anfangs sicherlich eher verwirrend.
Die Anweisung setheading(zum_winkel) (von engl. «set»: «setzen» und engl. «heading»: «Fahrtrichtung, Kurs») richtet den Cursor am angegebenen absoluten Winkel aus. Die Anweisung hat die folgende Syntax:
turtle.setheading(to_angle)
Anstelle von setheading(zum_winkel) kann man auch einfach nur seth(zum_winkel) schreiben. Diese abgekürzte Version bewirkt genau dasselbe und entsprechend ist auch die Syntax identisch:
turtle.seth(to_angle)
Beachte, dass 0 Grad immer rechts liegt.

Löse jetzt die Aufgaben 1a und 1b
Hinweis für Fortgeschrittene:
Zu Beginn des Kurses haben wir bereits einmal darauf hingewiesen, dass es 2 Grundmodi gibt, welche die ursprüngliche Ausrichtung der Schildkröte und die Drehrichtung anders definieren. Im Turtle Graphics Standardmodus blickt unsere Schildkröte anfangs nach rechts (gegen Osten). Dort ist auch 0 Grad. Zudem dreht sich die Schildkröte im Gegenuhrzeigersinn. Soll heissen, 90 Grad ist links davon, im Norden.
Im Logo Modus blickt die Schildkröte (in Anlehnung an die ursprünglichen Logo Programme aus den 80’er Jahren) anfangs nach oben und dreht sich im Uhrzeigersinn. 90 Grad ist dann rechts davon, im Osten.
Standard Modus | Logo Mode |
---|---|
0 – east (Osten) | 0 – north (Norden) |
90 – north (Norden) | 90 – east (Osten) |
180 – west (Westen) | 180 – south (Süden) |
270 – south (Süden) | 270 – west (Westen) |
Über die Anweisung mode(«logo») bzw. mode(«standard») können wir zwischen den 2 Modi wechseln.
Achtung: der Modus hat nichts mit der Drehrichtung beim Zeichnen eines Kreises anhand der circle() Anweisung zu tun. Diese zeichnet für einen positiven Radius nach links, für einen negativen Radius nach rechts.
Auslesen der Ausrichtung
Wie wir schon über position() die Position der Schildkröte im Koordinatensystem ermitteln konnten, gibt es auch eine entsprechende Anweisung zum ermitteln der absoluten Ausrichtung. Wie wahrscheinlich nicht schwer zu erraten ist, lautet ihre Syntax wie folgt:
turtle.heading()
Beim Aufruf der Funktion heading() gibt Python also die Ausrichtung des Cursors zurück.
Hinweis für Fortgeschrittene:
Der Wert hängt natürlich vom gewählten Modus ab. Siehe oben.
Übungsaufgaben
Nachfolgend findest Du ein paar Übungsaufgaben.
Aufgabe 1a: Viereck
Gegeben ist der nachfolgende Code, welcher ein Viereck zeichnet.
from turtle import * # Titel des Fensters title("Ein Viereck") # Farben pencolor("blue") pensize(2) # Quadrat Zeichnen forward(100) left(90) forward(80) left(90) forward(100) left(90) forward(80) left(90) # Abschluss exitonclick()
Ersetze nun die Anweisungen left(90) durch absolute Ausrichtungsangaben. Nutze hierzu den Befehl setheading().
Aufgabe 1b: Viereck nach rechts
Gegeben ist nochmals der Code aus Aufgabe 1a, welcher ein Viereck zeichnet. Nun soll das Viereck rechts herum gezeichnet werden. Die Schildkröte fährt zuerst nach oben, dann nach rechts etc. Ersetze wiederum Anweisungen left(90) durch absolute Ausrichtungsangaben. Nutze hierzu den Befehl setheading().
Hinweis: Du musst auch die Reihenfolge der forward() Anweisungen anpassen.
Comments