From 06a0037188b717ac30e6a5cd65da434822cc5d2c Mon Sep 17 00:00:00 2001 From: schererleander Date: Sat, 27 Dec 2025 02:06:41 +0100 Subject: Make async game loop browser-ready --- Steuerung.py | 130 ++++++++++++++++++++++++++++++----------------------------- 1 file changed, 66 insertions(+), 64 deletions(-) (limited to 'Steuerung.py') 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) -- cgit v1.3.1