lehrkraefte:blc:informatik:glf20:gameloop

This is an old revision of the document!


Der Game-Loop

Der Game-Loop ist meistens eine while True:-Schleife in der das Spiel läuft. Die Grundidee des Programms ist wie folgt:

from oxocard import *
from ivobuttons import *
 
# Initialisierung aller Variablen, die den Zustand es Spiels beschreiben.
# Initialisierung weiterer Dinge, wie z.B. der Beschleunigungssensor
# Anzeige für Start des Spiel initialisieren
 
while True:
  # Tasten etc. auslesen
  # Entscheiden, was für Aktionen nötig sind
  # Spielzustand aktualisieren, evtl. neu zeichnen

Dabei ist es wichtig, dass jeder einzelne Durchlauf möglichst wenig Zeit in Anspruch nimmt, damit das Spiel sofort auf Benutzereingaben reagieren kann.

Wenn es Dinge gibt, die über eine längere Zeit ablaufen, muss mit Zeitstempeln gearbeitet werden, z.B. so wird eine Aktion jede Sekunde einmal ausgeführt:

letztens = getms()  #Anzahl Millisekunden jetzt
while True:
  jetzt = getms()
  if jetzt-letztens>1000:  # Eine Sekunde ist vergangen, also ausführen
    letztens=jetzt
    # Aktion ausführen, Spielzustand aktualisieren
 

Idee: Der Benutzer kann einen Punkt auf dem Bildschirm hin- und her bewegen.

Zustand des Spiels: x-Kooordinate des Punktes

Aktionen: Links, Rechts: Falls Verschiebung überhaupt möglich, wird der alte Punkte mit Schwarz überschrieben, die x-Koordinate angepasst und der Punkt neu gezeichnet.

Passen sie dafür 'ivobuttons.delay' und 'ivobuttons.repeat_delay' so an, dass das Spiel “spielbar ist”.

Bauen Sie das Spiel aus. Mögliche Varianten:

  • Der Benutzer kann auch nach oben und unten.
  • Der Benutzer kann damit zeichnen.
  • Ein weiterer Punkt fällt von oben nach unten. Dieser muss gefangen werden (oder ausgewichen).
  • Mehrere Punkte fallen…
  • Die Steuerung erfolgt via Beschleunigungssensor und kippen der Karte.
  • lehrkraefte/blc/informatik/glf20/gameloop.1607345255.txt.gz
  • Last modified: 2020/12/07 13:47
  • by Ivo Blöchliger