Zeitlich verzögerte Ausführung von Befehlen
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.