4.4.1 Turtles zeichen

Bild 150
Abbildung 1: Vier Turtles zeichnen

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.
Bild 148 Bild 147
Abbildung 2 und 3: Zwei Turtles zeichnen
  • Letztendlich zeichnet die eine Turtle das gleichseitige Dreieck und die andere Turtle das Quadrat.
Quelltext des Programms »turtlepaar.py«
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()

Erklärungen zum Quelltext
5. bis 10. Zeile In der Funktion zeichnet die erste Turtle das gleichseitige Dreieck.
  • Die Breite der von der Turtle gezeichneten Linien bertägt 3 Pixel.
  • Die Farbe der Linien ist gelb.
  • In der for-Schleife wird das Dreieck gezeichnet.
13. bis 18. Zeile In der Funktion zeichnet die zweite Turtle das Quadrat.
  • Die Breite der von der Turtle gezeichneten Linien bertägt 3 Pixel.
  • Die Farbe der Linien ist rot.
  • In der for-Schleife wird das Quadrat gezeichnet.
21. bis 30. Zeile Die grafische Benutzeroberfläche wird erzeugt.
  • Der Zeichenbereich der Turtles auf dem TurtleScreen wird schwarz gefärbt.
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.
  • Damit die Turtle beim Versetzen nicht zeichnet, wird der Zeichenstift von der Zeichenfläche angehoben.
  • Die Turtle begibt sich zum Startpunkt (0,50).
  • Damit die Turtle wieder zeichnen kann, wird der Zeichenstift wieder auf die Zeichenfläche abgesetzt.
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.
  • Damit die Turtle beim Versetzen nicht zeichnet, wird der Zeichenstift von der Zeichenfläche angehoben.
  • Die Turtle begibt sich zum Startpunkt (-70,0).
  • Damit die Turtle wieder zeichnen kann, wird der Zeichenstift wieder auf die Zeichenfläche abgesetzt.
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.
Übung

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.

Tabelle 1: Weitere Methoden von RawTurtle
Methode Erklärung
penup() Zeichenstift anheben
goto(…) Zum Punkt gehen
pendown() Zeichenstift absetzen
setheading(…) Richtung der Turtle ändern
Bild 149
Abbildung 1: Beide Turtles sind unsichtbar (hideturtle())

Programm »turtlequartett.py

Übung

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.

Übung

Aufgabe A76

  1. Welche der for-Schleifen 1 bis 4 bewirkt, dass die Turtle »ina« ein Vieleck und die Turtle »ben« einen vielzackigen Stern zeichnen?
  1. Welche der for-Schleifen 1 bis 4 bewirkt, dass die Turtle »ina« ein Vieleck und die Turtle »ben« einen vielzackigen Stern zeichnen?
Wissensquiz
# 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. [1] Sowohl »schild« als auch »momo« sind Referenzvariablen, v von denen jede auf einTurtleobjekt verweist.