Das Spiel erweitern und verbessern

Einige Erweiterungen oder Verbesserungen schlage ich hier noch zum Nachmachen vor.

Spielstart

Blöd ist vielleicht, dass das Spiel immer sofort losgeht, wenn man es startet. Angenehmer wäre es, das Spiel mit einem Mausklick zu starten. Das lässt sich auch sehr einfach umsetzen: Der Befehl feld.doRun() muss dabei aus dem Hauptprogramm gelöscht werden. Die Spielschleife wird also nicht gestartet, wenn das Spiel losgeht. Sie wird erst beim ersten Mausklick ausgeführt. Dafür änderst du zusätzlich die Funktion mausKlick() folgendermaßen:

def mausKlick(e):
if feld.isRunning():
ball.hochkicken()
else:
feld.doRun()
return 0

Jetzt wird bei einem Mausklick immer zuerst geprüft, ob das Spiel überhaupt läuft. Das geht mit der Funktion isRunning(), wenn nein (das ist beim ersten Mal der Fall) wird es gestartet, ansonsten wird der Mausklick wie zuvor behandelt und der Ball hochgekickt.

Spielende

In diesem Spiel, wie auch schon in den vorherigen, wäre es sicher schöner, wenn ein farbiges »Game Over« auf dem Spielfeld erschiene. Du kannst das genauso einfügen wie in den vorherigen Spielen. Mit der eingebauten Grafik änderst du einfach die Funktion spielEnde() folgendermaßen ab:

def spielEnde():
gameover = Actor("sprites/gameover.gif")
feld.addActor(gameover,Location(400,300))
feld.doPause()
Klar ist das cooler!

Abbildung 21.7    Klar ist das cooler!

Wenn du eine eigene Grafik für »Game Over« erstellt hast, musst du in deinem Python-Ordner ein Verzeichnis sprites haben bzw. anlegen, wo du die Datei hineinkopierst. Anschließend ersetzt du gameover.gif durch deinen eigenen Dateinamen. Alles ist möglich.

Sound hinzufügen

Auch hier ist es natürlich am coolsten, eigene Klangdateien hinzuzufügen. Wenn du aber keine zur Hand hast oder keine Möglichkeit, welche zu erstellen, dann lassen sich auch zwei eingebaute Klänge hinzufügen:

Vergiss nicht, an den Anfang des Programms den Importbefehl für das Soundsystem zu setzen:

from soundsystem import *

Dann änderst du die Funktion hochkicken wie folgt:

    def hochkicken(self):
self.speed = -4
openSoundPlayer("wav/boing.wav")
play()

Ebenso kannst du die Funktion spielEnde() erweitern:

def spielEnde():
gameover = Actor("sprites/gameover.gif")
feld.addActor(gameover,Location(400,300))
openSoundPlayer("wav/explode.wav")
play()
feld.doPause()

Nun gibt es Sound – ein »Boing« beim Hochkicken des Balls und eine »Explosion«, wenn der Ball kollidiert.