Zeitlich verzögerte Ausführung von Befehlen
In diesem Abschnitt lernst Du, wie man an einer bestimmten Stelle des Programms festlegen kann, dass nach einer ganz bestimmten Zeit eine bestimmte Routine einmalig ausgeführt wird. Bei Spielen ist das wichtig, wenn verschiedene Dinge in bestimmten Zeitabständen nacheinander geschehen sollen.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 laser_ausschalten():
laser.image="laser_ohne_strahl.png"
def schuss():
laser.image="laser_mit_strahl.png"
if laser.colliderect(meteorit):
meteorit.image="meteorit_explosion.png"
clock.schedule_unique(laser_ausschalten, 0.3)
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
Zunächst einmal sieht man, dass es hier nun eine weitere Funktion laser_ausschalten() gibt. Dieser Befehl wird in der Funktion schuss() aufgerufen. Aber nicht direkt, sondern zeitverzögert mit dem Befehl
clock.schedule_unique(laser_ausschalten, 0.3)
Dieser besagt, dass die Funktion einmalig nach 0.3 Sekunden aufgerufen wird.
Aufgabe 1: Änderung der Zeitverzögerung
Ändere die Länge der zeitlichen Verzögerung ab und teste, wie sich das auf die Optik des Spiels auswirkt.