diff options
| author | schererleander <leander@schererleander.de> | 2025-12-27 02:06:41 +0100 |
|---|---|---|
| committer | schererleander <leander@schererleander.de> | 2025-12-27 02:06:41 +0100 |
| commit | 06a0037188b717ac30e6a5cd65da434822cc5d2c (patch) | |
| tree | df98e071dd575730b860599ff325963a7ec375b5 | |
| parent | 5df2ab5c3ec1f57d20dcd24c2a64e8745766147e (diff) | |
Make async game loop browser-ready
| -rw-r--r-- | Steuerung.py | 130 | ||||
| -rw-r--r-- | main.py | 19 |
2 files changed, 81 insertions, 68 deletions
diff --git a/Steuerung.py b/Steuerung.py index 8356aeb..76985c4 100644 --- a/Steuerung.py +++ b/Steuerung.py @@ -1,65 +1,67 @@ -import pygame
-from Szenen import *
-
-
-class Steuerung():
- def __init__(self):
- self.__szene = Menue()
- self.__szenenIndex = 0
- self.__verlasseSpiel = False
- self.__spielerListe = []
-
- self.__clock = pygame.time.Clock()
-
- self.loop()
-
- def __sotiereSpielerListe(self):
- self.__spielerListe.sort(key=lambda spieler: spieler[1], reverse=True)
-
- def __addSpieler(self, spielerName: str, spielerScore: int):
- gibtSpieler = False
- for spieler in range(len(self.__spielerListe)):
- if self.__spielerListe[spieler][0] == spielerName:
- gibtSpieler = True
- self.__spielerListe[spieler] = (spielerName, spielerScore)
- if not gibtSpieler:
- self.__spielerListe.append((spielerName, spielerScore))
-
- def __wechselSzene(self):
- self.__szenenIndex += 1
- if self.__szenenIndex > 3:
- self.__szenenIndex = 0
-
- if self.__szenenIndex == 0:
- self.__szene = Menue()
- elif self.__szenenIndex == 1:
- self.__szene = Game()
- elif self.__szenenIndex == 2:
- score = self.__szene.getScore()
- self.__szene = Benennung(score)
- elif self.__szenenIndex == 3:
- score = self.__szene.getScore()
- name = self.__szene.getName()
- self.__addSpieler(name, score)
- self.__sotiereSpielerListe()
- self.__szene = Score(self.__spielerListe)
-
-
- def loop(self):
- while not self.__szene == None and not self.__verlasseSpiel:
- dt = self.__clock.tick(60) / 1000.0
-
- events = []
- for event in pygame.event.get():
- if event.type == pygame.QUIT:
- self.__verlasseSpiel = True
- if event.type == pygame.KEYDOWN:
- events.append(event)
- self.__szene.beiEingabe(events)
-
- self.__szene.beiUpdate(dt)
-
- self.__szene.beiZeichne()
-
- if self.__szene.getWechselSzene():
+import asyncio +import pygame + +from Szenen import Menue, Game, Benennung, Score + + +class Steuerung: + def __init__(self): + self.__szene = Menue() + self.__szenenIndex = 0 + self.__verlasseSpiel = False + self.__spielerListe = [] + + self.__clock = pygame.time.Clock() + + def __sotiereSpielerListe(self): + self.__spielerListe.sort(key=lambda spieler: spieler[1], reverse=True) + + def __addSpieler(self, spielerName: str, spielerScore: int): + gibtSpieler = False + for spieler in range(len(self.__spielerListe)): + if self.__spielerListe[spieler][0] == spielerName: + gibtSpieler = True + self.__spielerListe[spieler] = (spielerName, spielerScore) + if not gibtSpieler: + self.__spielerListe.append((spielerName, spielerScore)) + + def __wechselSzene(self): + self.__szenenIndex += 1 + if self.__szenenIndex > 3: + self.__szenenIndex = 0 + + if self.__szenenIndex == 0: + self.__szene = Menue() + elif self.__szenenIndex == 1: + self.__szene = Game() + elif self.__szenenIndex == 2: + score = self.__szene.getScore() + self.__szene = Benennung(score) + elif self.__szenenIndex == 3: + score = self.__szene.getScore() + name = self.__szene.getName() + self.__addSpieler(name, score) + self.__sotiereSpielerListe() + self.__szene = Score(self.__spielerListe) + + async def loop(self): + while not self.__szene == None and not self.__verlasseSpiel: + dt = self.__clock.tick(60) / 1000.0 + + key_events = [] + for event in pygame.event.get(): + if event.type == pygame.QUIT: + self.__verlasseSpiel = True + elif event.type == pygame.KEYDOWN: + key_events.append(event) + + if key_events: + self.__szene.beiEingabe(key_events) + + self.__szene.beiUpdate(dt) + self.__szene.beiZeichne() + + if self.__szene.getWechselSzene(): self.__wechselSzene() + + await asyncio.sleep(0) @@ -1,15 +1,26 @@ -import pygame - import asyncio +import platform +import sys import pygame from Steuerung import Steuerung -async def main(): +def running_in_browser() -> bool: + return sys.platform == "emscripten" + + +def is_wasm_cpu() -> bool: + return "wasm" in platform.machine().lower() + + +async def main() -> None: pygame.init() - steuerung = Steuerung(start_loop=False) + if running_in_browser(): + pygame.display.init() + + steuerung = Steuerung() await steuerung.loop() pygame.quit() |
