359
Mach dir deine eigenen Turtle-Shapes
Damit wurde unsere Turtle zum »Perpetuum mobile«. Lässt sich nur durch
Schließen des Grafik-Fensters stoppen!
So erweist sich die
screen
-Methode
ontimer()
als ein geeignetes Mittel,
um animierte (bewegte) Grafikprogramme zu schreiben. Ein Beispiel dafür
folgt etwas weiter hinten. Vorher kommt aber noch ein kurzer Einschub:
Mach dir deine eigenen Turtle-
Shapes
Das Modul
turtle
kommt mit einigen wenigen vorgefertigten Turtle-
Formen daher. Sie werden mit Strings bezeichnet und du kennst schon
einige:
"turtle"
,
"arrow"
,
"circle"
. Um zu erfahren, welche Turtle-
Shapes definiert sind, gibt es in
turtle
eine
screen
-Methode:
getsha-
pes()
. Bevor wir die aufrufen können, brauchen wir allerdings ein neues
Grafik-Fenster; wir haben ja das alte soeben geschlossen. Und dazu das
neue
screen
-Objekt.
>
Mach mit!
>>> screen = Screen()
>>> screen.getshapes()
['arrow', 'blank', 'circle', 'classic', 'square',
'triangle', 'turtle']
>>> t = Turtle()
>>> t.shape("square")
>>> t.left(1080)
Besonders viel Auswahl hast du da wirklich nicht. Das Modul turtle bietet
dir aber die Möglichkeit, deine eigenen Turtle-Shapes zu machen. Und das
geht so:
0
Zuerst zeichnest du eine Figur, die die spätere Turtle-Gestalt werden
soll. Für diese Figur müssen die Koordinaten der Eckpunkte aufgezeich-
net werden. Dies leitet man mit der Anweisung
begin_poly()
ein und
360
Ereignisgesteuerte Programme
Kapitel
13
beendet man mit der Anweisung
end_poly()
.
get_poly()
gibt
schließlich die Daten der so aufgezeichneten geometrischen Form zu-
rück. Sieh dir das anhand des folgenden Beispiels an:
>
Mach mit!
>>> t.reset()
>>> t.shape("triangle")
>>> t.rt(90); t.fd(10)
>>> t.begin_poly()
>>> t.rt(90); t.fd(10)
>>> t.lt(90); t.fd(10)
>>> t.lt(90); t.fd(10)
>>> t.lt(30); t.fd(40)
>>> t.lt(120); t.fd(40)
>>> t.lt(30); t.fd(10)
>>> t.lt(90); t.fd(10)
>>> t.lt(90); t.fd(10)
>>> t.end_poly()
>>> p = t.get_poly()
>>> p
((10.00,0.00), (10.00,-10.00), (20.00,-10.00), (20.00,0.00),
(0.00,34.64), (-20.00,0.00), (-20.00,-10.00), (-10.00,
-10.00), (-10.00,0.00))
Du hast damit ein Polygon (ein Vieleck, nicht regelmäßig)
mit neun Ecken erzeugt. Beim Zeichnen eines solchen
Polygons wird automatisch die letzte mit der ersten Ecke
verbunden. Wir wollen nun dieses Polygon als »Shape«.
Turtle-Gestalt, beim Grafik-Fenster registrieren. Es ist
sinnvollerweise das Grafik-Fenster, das für alle Turtles die
verfügbaren Shapes verwaltet. Dazu verwenden wir die
screen
-Methode
register_shape()
und geben unse-
rer neuen Turtle-Gestalt den Namen
"pfeil"
. Danach
kann diese Figur als Turtle-Shape verwendet werden.
>>> screen.register_shape("pfeil", p)
>>> screen.getshapes()
['arrow', 'blank', 'circle', 'classic', 'pfeil', 'square', 'triangle',
'turtle']
>>> t.reset()
>>> t.shape("pfeil")
>>> t.pensize(3)
>>> t.right(720) # beobachte die Turtle!
>>> t.circle(80)

Get Python für Kids now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.