Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| efinf:blcks2017:gameloop [2018/03/27 11:31] – created Ivo Blöchliger | efinf:blcks2017:gameloop [2018/03/27 11:44] (current) – [Auswerten von Knöpfen / Joysticks] Ivo Blöchliger | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== Game loop ====== | ||
| + | <code python> | ||
| + | nextEvent = time.ticks_ms() + zeitBisEreignis # Zeit jetzt plus Dauer bis zum nächsten Ereignis | ||
| + | while True: | ||
| + | if time.ticks_ms()> | ||
| + | # Tun, was zu tun ist | ||
| + | nextEvent = time.ticks_ms() + zeitBisEreignis | ||
| + | if userInteraction: | ||
| + | # Interaktion auswerten | ||
| + | # eventuell weitere Ereignisse generieren | ||
| + | </ | ||
| + | |||
| + | Erweiterung: | ||
| + | |||
| + | Variante: Aktoren (z.B. ein Space-Invader), | ||
| + | <code python> | ||
| + | class Actor(): | ||
| + | def __init__(self, | ||
| + | | ||
| + | | ||
| + | | ||
| + | def step(self): | ||
| + | if self.nextEvent< | ||
| + | # Tu was | ||
| + | </ | ||
| + | Im Game loop sähe das dann so aus: | ||
| + | <code python> | ||
| + | actors = [.....] | ||
| + | while True: | ||
| + | for i in range(len(actors)): | ||
| + | | ||
| + | if time.ticks_ms()> | ||
| + | # 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, | ||