Turtle-Roboter

Turtle-Roboter und Turtle-Grafiken kommen schon eine Weile erfolgreich zum Einsatz bei Erlernen der Programmstrukturen. Der Vorteil ist: man sieht in Echtzeit wie der geschriebene Code ausgefĂĽhrt wird und was das Ergebnis davon ist.

Idee

Eine Turtle ist ein Objekt auf dem Bildschirm. Dieses befindet sich an einem bestimmten Punkt und guckt in eine bestimmte Richtung.
Mit Befehlen können wir nun diese Turtle steuern: «fahre vorwärts», «drehe dich 90° nach rechts», …
Dabei hinterlässt die Turtle eine Linie auf dem Bildschirm.

So kann man einfache und auch ziemlich komplexe Grafiken erstellen. Je nach Turtle-Implementation stehen weitere Befehle zur VerfĂĽgung.

Beispiel

from turtle import *

fillcolor("#ffdd00")
begin_fill()
circle(100)
end_fill()
left(90)
penup()
forward(50)
right(90)
pendown()
pensize(6)
pencolor("#cc0022")
circle(60, 40)
right(180)
circle(-60, 80)
right(180)
circle(60, 40)
left(90)
pensize(1)
pencolor("black")
penup()
forward(100)
left(90)
forward(35)
pendown()
fillcolor("black")
begin_fill()
circle(20)
penup()
left(180)
forward(70)
pendown()
circle(-20)
end_fill()
hideturtle()

done()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Zeile 1
Zuerst mĂĽssen wir sicherstellen, dass Python die Befehle der Turtle kennt. Dazu importieren wir alles aus dem turtle-Package.
Dazwischen
Fahren und Zeichnen
Zeile 38
Um das System zu entlasten, sagen wir der Turtle mit done(), wann fertiggezeichnet ist.

Aufgabe

  • Kopiere das obenstehende Beispiel fĂĽge es im Thonny in eine neue Datei ein.
  • Speichere die Datei als turtle_beispiel.py ab
  • Starte das Programm
  • Versuche die Befehle zu verstehen
  • Lies in der untenstehenden Tabelle nach, was die Befehle genau machen

Befehle

BefehlArgumentBeschreibung
forward(d)Distanz dBewegt die Turtle eine bestimmte Distanz vorwärts
backward(d)Distanz dBewegt die Turtle eine bestimmte Distanz rückwärts
distance(x,y)Punkt x,yBerechne die Distanz der Turtle zum Punkt (x,y)
right(w)Winkel wDreht die Turtle im Uhrzeigersinn um einen bestimmten Winkel
left(w)Winkel wDreht die Turtle im Gegenuhrzeigersinn um einen bestimmten Winkel
penup()–Zieht den Stift ein (ab jetzt zeichnet die Turtle nicht mehr)
pendown()–Fährt den Stift aus (ab jetzt zeichnet die Turtle wieder)
pencolor(c)Farbe cFarbe der Turtle zum Zeichnen des Strichs setzen
fillcolor(c)Farbe cFarbe zum AusfĂĽllen eines Vielecks setzen
goto(x,y)Punkt x,yBewege die Turtle zum Punkt (x,y)
begin_fill()–Den Startpunkt merken für ein gefülltes Vieleck
end_fill()–Das Vieleck schliessen und ausfüllen
shape(f)Form fEntweder 'arrow', 'classic', 'turtle' oder 'circle'
hideturtle()–Versteckt die Turtle
showturtle(f)–Zeigt die Turtle wieder an
speed(s)Geschwindigkeit sLegt die Zeichnungsgeschwindigkeit fest
circle(r)
circle(r, w)
Radius r, [Winkel w]Zeichnet Kreisbogen. Radius kann auch negativ sein, optionaler Winkel fĂĽr Kreisbogen (Standard: 360 Grad)
xcor()–Liefert die aktuelle x-Koordinate der Turtle
ycor()–Liefert die aktuelle y-Koordinate der Turtle