307
Wikipedia-Beispiel, revisited
Wikipedia-Beispiel, revisited
Zum Abschluss dieses Kapitels schlage ich vor, das Wikipedia-Beispiel aus
Kapitel 8 neu zu implementieren, und zwar so, dass die 36 Sechsunddrei-
ßigecke parallel – also quasi gleichzeitig – gezeichnet werden:
Die Grundidee ist ähnlich wie bei unseren Dreiecksspiralen. Wir lassen jedes
Polygon durch eine eigene Turtle zeichnen. Und zwar in der Weise, dass alle
Turtles zuerst das erste Segment zeichnen. Wenn das alle getan haben,
zeichnen alle das zweite Segment usw.
Parallele Entstehung der Polygone im
Wikipedia-Beispiel
Wir wollen auch diesmal nur mit den Klas-
sen
Screen
und
Turtle
aus dem Modul
turtle
arbeiten. Dabei wirst du einige
Mathoden der Klasse
Screen
kennen ler-
nen, die du schon als Funktionen des Mo-
duls
turtle
kennst.
Screen() – ein Singleton
Screen
ist eine Klasse mit einer besonde-
ren Eigenschaft: Man kann nämlich nur
ein
Objekt von ihr erzeugen.
>
Starte IPI-T
URTLE
G
RAFIK
und mach mit!
>>> from turtle import Screen
>>> screen1 = Screen()
>>> screen1.bgcolor("red")
Ein Turtle-Grafik-Fenster geht auf: Wir haben ein Objekt der Klasse
Screen()
erzeugt. Versuchen wir, noch eines zu erzeugen:
>>> screen2 = Screen()
Nichts passiert!
>>> id(screen1) == id(screen2)
True
>>> screen2.setup(200,200)
Aha! Es gibt wirklich nur ein einziges. Dieses hier hat nun zwei Namen:
screen1
und
screen2
. Die einzige Möglichkeit, ein neues Grafik-Fenster
zu erzeugen, ist, das erste zu schließen und neuerlich
Screen()
aufzuru-
fen.
308
Objekte und Methoden
Kapitel
11
Klassen, von denen immer nur ein einziges Objekt existieren kann, nennt
man im OOP-Sprech
Singleton-Klassen
.
Screen()
ist so eine Singleton-
Klasse.
Schließe nun das Turtle-Grafik-Fenster. Wir wenden uns wieder dem »Wiki-
pedia-Beispiel« zu.
>
Öffne ein Editor-Fenster, um einen Kopfkommentar und danach fol-
genden Code einzugeben:
from turtle import Screen, Turtle
def parallel_super_rosette(ecken, seite):
pass
def main():
global screen
screen = Screen()
screen.title("Turtle-Grafik - Wikipedia Bsp. 3")
screen.clearscreen()
screen.setup(500, 500)
screen.bgcolor("black")
screen.tracer(False)
parallel_super_rosette(36, 20)
if __name__ == "__main__":
main()
>
Speichere das Programm unter dem Namen
wikipedia03.py
ab.
Führe es aus. Funktioniert es fehlerfrei? Wenn du ein quadratisches
schwarzes leeres Fenster siehst und keine Fehlermeldung, wahr-
scheinlich schon. Steht der Titel richtig in der Titelleiste des Fensters?
Als Nächstes brauchen wir eine Kollektion von 36 Turtles, allesamt mit
weitgehend den gleichen Eigenschaften, aber jede nach einem anderen
Winkel orientiert. Nachdem wir schon wissen, dass Funktionen beliebige
Dinge zurückgeben können, machen wir uns nun eine, die eine Turtle zu-
rückgibt, die in eine bestimmte, durch einen Winkel angegebene Richtung
schaut.
>
Füge den folgenden Code gleich nach der
import
-Anweisung ein:

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

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.