s n h m r u
i

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.

Suche

v
7.4.6.2 Zeitlich verzögerte Ausführung von Befehlen
Kopieren durch Anklicken

Rückmeldung geben