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"

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.

Suche

v
7.4.6.2
dev.inf-schule.de/oop/spiele-python/zeit-programmierung/verzoegerung
dev.inf-schule.de/7.4.6.2
dev.inf-schule.de/@/page/Jmn5c7pZQwzumPUE

Rückmeldung geben