i

Befehle im gleichmäßigen Takt

In diesem Abschnitt lernst Du, wie man eigene Routinen in regelmäßigen Zeitabschnitten ausführen lassen kann. Das ist für allem für solche Spiele interessant, bei denen es darauf ankommt, dass der Spieler bestimmte Aufgaben in kurzer Zeit erledigen muss.

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 schuss():
    laser.image="laser_mit_strahl.png"
    if laser.colliderect(meteorit):
        meteorit.image="meteorit_explosion.png"

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

Wirklich neu ist nur der Befehl

	
clock.schedule_interval(absinken,0.5)

Dieser besagt: Alle 0,5 Sekunden (also zweimal pro Sekunde) soll automatisch durch eine eingebaute Uhr die Funktion absinken ausgeführt werden. Wichtig: In diesem Fall lässt man ausnahmsweise die Klammern hinter dem Funktionsnamen weg! Das englische Wort „to schedule“ bedeutet: etwas zeitlich einplanen, „interval“ bedeutet hier „Zeitspanne“.

Man kann übrigens dieses zeitliche Einplanen auch wieder zurücknehmen. Dies könnte man mit der Zeile

	
clock.unschedule(absinken)

machen, die man an einer geeigneten Stelle einbaut. Das kannst Du gleich in der zweiten Aufgabe dieses Abschnitts ausprobieren.

Aufgabe 1: Schnellere und langsamere Bewegung

Ändere die Zeitangabe und teste, wie sich dabei die Geschwindigkeit der Bewegung des Meteoriten verändert.

Aufgabe 2: Halt und Weiter

Ändere das Programm so ab, dass die Bewegung nur beim Druck auf die Taste „H“ (für „Halt“) die Bewegung angehalten wird. Drückt der Benutzer auf die Taste „W“ (für „Weiter“) soll die Bewegung wieder fortgesetzt werden.

Suche

v
7.4.6.1
inf-schule.de/oop/spiele-python/zeit-programmierung/zeittakt
inf-schule.de/7.4.6.1
inf-schule.de/@/page/k3uXpyHs8VYGA0k7

Rückmeldung geben