Game loop
nextEvent = time.ticks_ms() + zeitBisEreignis # Zeit jetzt plus Dauer bis zum nächsten Ereignis while True: if time.ticks_ms()>= nextEvent: # Tun, was zu tun ist nextEvent = time.ticks_ms() + zeitBisEreignis if userInteraction: # Interaktion auswerten # eventuell weitere Ereignisse generieren
Erweiterung: Array von Ereignissen und entsprechender Eintrittsszeit, sortieren nach letzterer.
Variante: Aktoren (z.B. ein Space-Invader), der selbst zeitliche Ereignisse verwaltet:
class Actor(): def __init__(self, helper): self.helper=helper self.nextEvent = time.ticks_ms()+whatever def step(self): if self.nextEvent<=time.ticks_ms(): # Tu was
Im Game loop sähe das dann so aus:
actors = [.....] # Liste von Aktoren while True: for i in range(len(actors)): actors[i].step() if time.ticks_ms()>= nextEvent: # bla bla etc.
Auswerten von Knöpfen / Joysticks
- Vorheriger Zustand der Knöpfe, Zeit seit letzer Änderung speichern.
- Je nach Zustandsänderung und vergangener Zeit, Ereignis auslösen.
Eine Kapselung in eine Klasse wäre denkbar. Eine Methode wird permanent aufgerufen; darin werden die physikalischen Knöpfe ausgewertet. Eine weitere Methode liefert ein Array mit Ereignissen, falls denn welche aufgetreten sind.