4.4.1 Turtles zeichen
Wo bisher nur eine Turtle gezeichnet hat, können auch mehrere Turtles zeichnen – wie beispielsweise in der Abbildung1 dargestellt.
Programm »turtlepaar.py
Im Programm »turtlepaar.py« sollen zwei Turtles die in der Abbildung 3 dargestellten Figuren zeichnen.
- Zuerst werden die beiden Turtles erzeugt.
- Danach werden die Turtles auf der Zeichenfläche positioniert. Das heißt, jede Turtle erhält innerhalb des Koordinatensystem des Turtle-Screens einen Startpunkt und eine Startrichtung.
- Letztendlich zeichnet die eine Turtle das gleichseitige Dreieck und die andere Turtle das Quadrat.
import tkinter as tk
import turtle
# Funktion
def dreieck():
ina.pensize(3)
ina.pencolor("yellow")
for i in range(1, 4):
ina.forward(170)
ina.right(120)
# Funktion
def quadrat():
ben.pensize(3)
ben.pencolor("red")
for i in range(1, 5):
ben.forward(100)
ben.right(90)
# grafische Benutzeroberfläche
root = tk.Tk()
root.title("Turtlegrafik")
root.resizable(False, False)
# Canvas-Widget
canvas = tk.Canvas (root, width=400, height=400)
canvas.pack(fill=tk.BOTH, expand=True)
# Turtle-Screen
turtle_screen=turtle.TurtleScreen(canvas)
turtle_screen.bgcolor("black")
# Erzeugen der Turtles
ina=turtle.RawTurtle(turtle_screen, shape="classic")
ben=turtle.RawTurtle(turtle_screen, shape="classic")
# Startposition von ina
ina.penup()
ina.goto(0,50)
ina.pendown()
# Startrichtung von ina
ina.setheading(30)
# Startposition von ben
ben.penup()
ben.goto(-70,0)
ben.pendown()
# Startrichtung von ben
ben.setheading(315)
# Funktionsaufrufe
dreieck()
quadrat()
root.mainloop()
| 5. bis 10. Zeile |
In der Funktion zeichnet die erste Turtle das gleichseitige Dreieck.
|
| 13. bis 18. Zeile |
In der Funktion zeichnet die zweite Turtle das Quadrat.
|
| 21. bis 30. Zeile |
Die grafische Benutzeroberfläche wird erzeugt.
|
| 33. und 34. Zeile | Die beiden Turtles »ina« und »ben« werden erzeugt.[1] |
| 37. bis 39. Zeile |
Die Turtle »inai« wird vom Koordinatenursprung der Zeichenfläche auf den Startpunkt (0,50)
versetzt.
|
| 41. Zeile | Die Startrichtung der Turtle »ina« wird von 0° auf 30° verändert. Das heißt, die Turtle dreht sich von der Startrichtung 0° um 30° entgegen des Uhrzeigersinns (Abbildung 2). |
| 44. bis 46. Zeile |
Die Turtle »ben« wird vom Koordinatenursprung der Zeichenfläche auf den Startpunkt (-70,0)
versetzt.
|
| 48. Zeile | Die Startrichtung der Turtle »ben« wird von 0° auf 315° verändert. Das heißt, die Turtle dreht sich von der Startrichtung 0° um 315° entgegen des Uhrzeigersinns (Abbildung 2). |
| 51. und 52. Zeile | Die Funktionen »dreieck« und «quadrat« werden aufgerufen. |
Aufgabe A75
Übertrage den Quelltext als Programm auf den Computer.
Führe das Programm aus und teste, ob es fehlerfrei läuft und den gestellten Anforderungen entspricht.
In der Tabelle sind einige Methoden – die die Turtles zum Zeichnen verwenden – und deren Erklärungen gegeben.
| Methode | Erklärung |
|---|---|
| penup() | Zeichenstift anheben |
| goto(…) | Zum Punkt gehen |
| pendown() | Zeichenstift absetzen |
| setheading(…) | Richtung der Turtle ändern |
Programm »turtlequartett.py
Aufgabe A76
Implementiere ein Programm »turtlequartett.py« am Computer.
- Die Zeichenfläche auf der die Turtles zeichnet soll blau sein.
- Turtle »emma« soll im 1. Quadranten des Koordinatensystems einen weißen Kreis zeichen.
- Turtle »paul« soll im 2. Quadranten des Koordinatensystems einen roten fünfzackigen Stern zeichen.
- Turtle »hanna« soll im 3. Quadranten des Koordinatensystems ein gelbes regelmäßiges Fünfeck zeichen.
- Turtle »felix« soll im 4. Quadtanten des Koordinatensystems einen orangen neunzackigen Stern zeichnen.
- Die Startposition (Startpunkt und -richtung) legst du in den jeweiligen Quatranten des Koordinatensystems fest.
Führe das Programm aus und teste, ob es fehlerfrei läuft und den gestellten Anforderungen entspricht.
Aufgabe A76
- Welche der for-Schleifen 1 bis 4 bewirkt, dass die Turtle »ina« ein Vieleck und die Turtle »ben« einen vielzackigen Stern zeichnen?
- Welche der for-Schleifen 1 bis 4 bewirkt, dass die Turtle »ina« ein Vieleck und die Turtle »ben« einen vielzackigen Stern zeichnen?
# Schleife 1
for i in range(1, 9):
ina.forward(100)
ina.right(135)
# Schleife 2
for i in range(1, 9):
ben.forward(100)
ben.right(45)
# Schleife 3
for i in range(1, 9):
ina.forward(100)
ina.right(45)
# Schleife 4
for i in range(1, 9):
ben.forward(100)
ben.right(135)
- [1] Sowohl »schild« als auch »momo« sind Referenzvariablen, v von denen jede auf einTurtleobjekt verweist.