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"
<p>meteorit = Actor("meteorit.png")<br />
meteorit.x = 400<br />
meteorit.y = 200</p>
<p>laser = Actor("laser_ohne_strahl.png")<br />
laser.x=400<br />
laser.y=300</p>
<p>def laser_ausschalten():<br />
laser.image="laser_ohne_strahl.png"</p>
<p>def schuss():<br />
laser.image="laser_mit_strahl.png"<br />
if laser.colliderect(meteorit):<br />
meteorit.image="meteorit_explosion.png"<br />
clock.schedule_unique(laser_ausschalten, 0.3)</p>
<p>def absinken():<br />
meteorit.y=meteorit.y+10</p>
<p>def on_key_down(key):<br />
if key==keys.RIGHT:<br />
laser.x=laser.x+10<br />
elif key==keys.LEFT:<br />
laser.x=laser.x-10<br />
else:<br />
schuss()<br />
absinken()</p>
<p>def draw():<br />
screen.blit("sterne.png",(0,0))<br />
laser.draw();<br />
meteorit.draw()</p>
<p>clock.schedule_interval(absinken,0.5)<br />
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.