efinf:blcks2017:gameloop

This is an old revision of the document!


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.
  • efinf/blcks2017/gameloop.1522150757.txt.gz
  • Last modified: 2018/03/27 13:39
  • by Ivo Blöchliger