Befehle im gleichmäßigen Takt
In diesem Abschnitt lernst Du, wie man eigene Routinen in regelmäßigen Zeitabschnitten ausführen lassen kann. Das ist für allem für solche Spiele interessant, bei denen es darauf ankommt, dass der Spieler bestimmte Aufgaben in kurzer Zeit erledigen muss.Programm zum Ausprobieren
WIDTH = 800
HEIGHT = 600
TITLE = "Spielfigur ändern"
meteorit = Actor("meteorit.png")
meteorit.x = 400
meteorit.y = 200
laser = Actor("laser_ohne_strahl.png")
laser.x=400
laser.y=300
def schuss():
laser.image="laser_mit_strahl.png"
if laser.colliderect(meteorit):
meteorit.image="meteorit_explosion.png"
def absinken():
meteorit.y=meteorit.y+10
def on_key_down(key):
if key==keys.RIGHT:
laser.x=laser.x+10
elif key==keys.LEFT:
laser.x=laser.x-10
else:
schuss()
absinken()
def draw():
screen.blit("sterne.png",(0,0))
laser.draw();
meteorit.draw()
clock.schedule_interval(absinken,0.5)
Erklärung
Wirklich neu ist nur der Befehl
clock.schedule_interval(absinken,0.5)
Dieser besagt: Alle 0,5 Sekunden (also zweimal pro Sekunde) soll automatisch durch eine eingebaute Uhr die Funktion absinken ausgeführt werden. Wichtig: In diesem Fall lässt man ausnahmsweise die Klammern hinter dem Funktionsnamen weg! Das englische Wort „to schedule“ bedeutet: etwas zeitlich einplanen, „interval“ bedeutet hier „Zeitspanne“.
Man kann übrigens dieses zeitliche Einplanen auch wieder zurücknehmen. Dies könnte man mit der Zeile
clock.unschedule(absinken)
machen, die man an einer geeigneten Stelle einbaut. Das kannst Du gleich in der zweiten Aufgabe dieses Abschnitts ausprobieren.
Aufgabe 1: Schnellere und langsamere Bewegung
Ändere die Zeitangabe und teste, wie sich dabei die Geschwindigkeit der Bewegung des Meteoriten verändert.
Aufgabe 2: Halt und Weiter
Ändere das Programm so ab, dass die Bewegung nur beim Druck auf die Taste „H“ (für „Halt“) die Bewegung angehalten wird. Drückt der Benutzer auf die Taste „W“ (für „Weiter“) soll die Bewegung wieder fortgesetzt werden.