4
03
Die Benutzeroberfläche, die Klasse MoorhuhnSpiel
Turtles mit einer durch eine
*.gif
-Bilddatei festgelegten Gestalt kön-
nen alle Methoden, insbesondere auch
left()
und
right()
, ausfüh-
ren. Das Bildchen dreht sich aber dabei
nicht
. Daher kann man bei sol-
chen »
*.gif
-Shapes« die Orientierung der Turtle nicht an der Turtle-
Gestalt erkennen!
Erheblich einfacher geht die Einrichtung eines Hintergrundbildes. Das Ob-
jekt
screen
hat eine Methode
bgpic()
, um ein Hintergrundbild zu instal-
lieren, das in einer
*.gif
-Datei im selben Verzeichnis liegen muss wie das
Script selbst. Auch diese Methode verlangt als Argument den Dateinamen.
>
Mach weiter mit!
>>> screen.bgpic("landschaft.gif")
Die Benutzeroberfläche, die Klas-
se MoorhuhnSpiel
Die Benutzeroberfläche des Moorhuhn-Spiels besteht aus einem Grafik-
Fenster mit Hintergrundbild. Auf dem Grafik-Fenster werden Meldungen
(z.
B. über den Spielstand) ausgegeben und zudem bewegen sich darauf als
Hühner verkleidete Turtles. Der Benutzer kann das Spiel mit der Leertaste in
Moorhühner vor einer
Landschaft.
4
04
Moorhuhn
Kapitel
15
Gang setzen und dann mit Mausklick-Ereignissen spielen. Mausklicks stel-
len Schüsse dar. Wird ein Moorhuhn getroffen, ändert es seine Bewegung:
Es fällt zu Boden. Wenn alle Schüsse abgegeben worden sind, wird der
Spielerin oder dem Spieler die erzielte Trefferquote mitgeteilt.
Wir wollen bei der Programmierung dieses Spiels unsere in den letzten
Kapiteln erworbenen Kenntnisse über Klassen und Objekte einsetzen. Wir
sind nun schon gewohnt, all die Funktionen, die wir früher mit
from
turtle import *
zur Verfügung hatten, als Methoden der Turtles oder
des
screen
-Objekts zu verwenden.
Methoden des
screen
-Objekts beziehen sich nicht auf eine Turtle, sondern
auf das Grafik-Fenster, z.
B.
onkey()
,
register_shape()
oder
lis-
ten()
. Vorsichtig müssen wir mit
onclick()
verfahren, weil dies der Na-
me einer
Turtle
-Methode wie auch einer Methode von
screen
ist.
Wir wollen auf das ganze Moorhuhn-Spiel bezogene Dinge mit einer spe-
ziellen Klasse
MoorhuhnSpiel
verwalten. Wir werden sie dafür benutzen,
das Grafik-Fenster und den Hintergrund zu erzeugen, die Hühner-Shapes
zu registrieren, Meldungen auf den Bildschirm zu schreiben und vieles an-
dere mehr.
Wie geben der Klasse
MoorhuhnSpiel
ein
screen
-Attribut, das Grafik-
Fenster, gerade so groß wie das Hintergrundbild, und für die Ausgabe von
Meldungen eine
schreiber
-Turtle als Attribut und eine Methode
mel-
de()
, der man den Text als Argument übergibt, den diese anzeigen soll:
from turtle import Screen, Turtle
class MoorhuhnSpiel:
"""Kombiniert die Bestandteile des Moorhuhnspiels.
"""
def __init__(self):
self.screen = Screen()
self.screen.setup(640, 480)
self.screen.title("Moorhuhn")
self.screen.bgpic("landschaft.gif")
self.screen.register_shape("huhn01.gif")
self.screen.register_shape("huhn02.gif")
# Der Schreib-Gehilfe
self.schreiber = Turtle(visible=False)
self.schreiber.speed(0)
4
05
Die Benutzeroberfläche, die Klasse MoorhuhnSpiel
self.schreiber.penup()
self.schreiber.goto(-290, -220)
self.schreiber.pencolor("yellow")
def melde(self, txt):
"""Gibt Text txt im Grafik-Fenster aus.
"""
self.schreiber.clear()
self.schreiber.write(txt,
font=("Courier", 18, "bold"))
def run(self):
self.melde("Start mit Leertaste!")
Wie du siehst, habe ich der Klasse
MoorhuhnSpiel
auch noch eine Me-
thode
run()
verpasst, mit der das Spiel, oder eigentlich eine Spielserie, in
Gang gesetzt wird. Bis jetzt liefert diese Methode erst nur einen Hinweis,
wie das Spiel gestartet wird.
Damit können wir das »Hauptprogramm« folgendermaßen formulieren:
if __name__ == "__main__":
spiel = MoorhuhnSpiel()
spiel.run()
>
Öffne vom IPI aus ein Editor-Fenster für eine Datei
moorhuhn_ ar-
beit.py
. Schreibe einen Kopfkommentar und sichere die Datei im
Verzeichnis
kap15
.
>
Füge die
import
-Anweisung, die Klassendefinitionen von
Moorhuhn-
Spiel
sowie den Hauptprogrammteil mit dem Aufruf zur Erzeugung
eines
MoorhuhnSpiel
-Objektes und anschließend dem Aufruf der
Methope
run()
wie in den obigen beiden Listings angegeben an.
>
Schließe ein allenfalls offenes Grafik-Fenster und führe das Pro-
gramm aus.
Es wird nun eine Instanz der Klasse
MoorhuhnSpiel
erzeugt. Ein Grafik-
Fenster öffnet sich, und du siehst das Hintergrundbild und auch die Mel-
dung in gelber Schrift. Es gibt aber noch keinerlei Spiel-Aktionen.

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.