4
22
Moorhuhn
Kapitel
15
self.klang(self.schussklang)
self.melde(self.spielstand())
self.schussklang = DANEBEN
>
Füge diese Änderungen in die Methoden
getroffen()
und
schuss()
ein.
>
Speichere das Programm, führe es aus, beseitige Fehler, falls vorhan-
den, und teste es gründlich.
>
Passe die Werte der Konstanten
TEMPO
und
SCHUESSE
deinen Be-
dürfnissen an. Zum Testen waren ja fünf Schüsse recht praktisch, aber
bei einem echten Spiel werden so um die 20 wohl angemessener sein.
>
Speichere eine Kopie des Programms als
moorhuhn05.py
ab.
Anmerkung: Dass das Treffer-Zählen und Klang-Abspielen richtig funktio-
niert, hat eine wichtige Voraussetzung, über die ich mich nicht lange aus-
gelassen habe: Ein Mausklick auf ein Huhn löst zwei Ereignisse aus: das
Klick-Ereignis auf das Huhn (die Turtle) und das Klick-Ereignis auf das
»darunter liegende« Grafik-Fenster. Entscheidend ist hier, dass die Sache in
Tkinter so eingerichtet ist, dass das Klick-Ereignis auf das Huhn (getroffen!)
zuerst verarbeitet wird. Nur deshalb weiß
schuss()
(danach), dass ein
Treffer vorliegt.
Moorhuhn als selbstständig
ausführbares Programm
Du hast nun ein schönes Stück Arbeit geleistet und willst vielleicht
manchmal Moorhuhn spielen, ohne das Script jedes Mal in die IDLE zu
laden. Es wäre doch angenehm, es einfach durch Doppelklick im Explorer
oder auf ein Icon am Desktop starten zu können. Das ist prinzipiell möglich,
wenn auf deinem Rechner Python installiert ist. (Das dürfte vermutlich der
Fall sein.)
>
Versuche, das Programm
moorhuhn05.py
durch Doppelklick zu star-
ten.
Das Ergebnis ist enttäuschend. Zwar geht das Grafik-Fenster auf, doch ehe
du dichs versiehst, hat es sich auch schon wieder geschlossen.
Erklärung: Damit ein ereignisgesteuertes Programm laufen kann, muss eine
Schleife in Gang gesetzt werden, die das Eintreffen von Ereignissen abwar-
4
23
Moorhuhn als selbstständig ausführbares Programm
tet, diese Ereignisse registriert und dann die entsprechenden Aktionen aus-
führt. Wenn du ein solches Programm mit dem IPI-T
URTLE
G
RAFIK
entwi-
ckelst, dann läuft eine solche Schleife bereits. Sie steuert die IDLE selbst,
die ja auch ein ereignisgesteuertes Python-Programm ist. Und sie steuert,
wenn du es mit
(F5)
ausführst, auch dein Programm.
Wenn du nun dein Moorhuhn-Programm für sich ausführst, wird ein
Moor-
huhnSpiel
-Objekt erzeugt und deshalb der Code des Konstruktors der
Klasse
MoorhuhnSpiel
ausgeführt. Doch dann wird das Programm sang-
und klanglos beendet. Das Fenster geht wieder zu. Um das zu verhindern,
musst du ans Ende des Hauptprogramms einen Aufruf der Funktion
main-
loop()
stellen, die vom
screen
-Objekt als Methode zur Verfügung ge-
stellt wird.
>
Schließe die IPI-S
HELL
und alle zugehörigen Editor-Fenster.
>
Starte diesmal IDLE(P
YTHON
GUI) und lade wieder (über den Menü-
punkt F
ILE
|R
ECENT
F
ILES
)
moorhuhn_arbeit.py
in ein Editor-Fenster.
>
Speichere sofort das Programm unter dem Namen
moorhuhn.py
ab.
>
Ergänze die
run()
-Methode um den Aufruf von
mainloop()
:
def run(self):
self.melde("Start mit Leertaste!")
self.screen.onkeypress(self.spiel, "space")
self.screen.listen()
self.screen.mainloop()
>
Führe das Programm durch Drücken der Taste
(F5)
aus.
In der IDLE(P
YTHON
GUI) werden Programme nicht im selben Prozess wie die
IDLE selbst ausgeführt, sondern in einem eigenen Unterprozess
(subpro-
cess)
. Daher braucht ein ereignisgesteuertes Grafikprogramm hier einen
eigenen
mainloop()
-Aufruf. In dieser Form wird es aber im IPI nicht kor-
rekt laufen, weil sich dann zwei
mainloop
s in die Quere kommen.
Dafür kannst du es nun auch als Stand-alone-Programm (bei vorhandenem
Python-Interpreter) ausführen.
>
Starte vom Windows-Explorer aus durch Doppelklick das Programm
moorhuhn.py
im Verzeichnis
C:\py4kids\kap15
.
Du erkennst: Ein schwarzes Eingabeaufforderungsfenster geht auf. Dort
läuft der Python-Interpreter (sieh den Fenstertitel an) und führt
moor-
huhn.py
aus. Dabei öffnet sich das Grafik-Fenster für das Moorhuhnspiel.

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.