From 18147ff10b9d54dcedb9510c1ebd6a4d17d0ba50 Mon Sep 17 00:00:00 2001 From: CHIBOUB Chakib Date: Wed, 11 Sep 2024 19:02:01 +0200 Subject: [PATCH] debugging --- pong/game/game.py | 7 +++++++ pong/game/tournament.py | 20 ++++++++++++++------ pong/settings.py | 4 ++-- pong/static/game.js | 6 ++++++ 4 files changed, 29 insertions(+), 8 deletions(-) diff --git a/pong/game/game.py b/pong/game/game.py index e17a8e7..42bfda6 100644 --- a/pong/game/game.py +++ b/pong/game/game.py @@ -9,6 +9,9 @@ from asgiref.sync import sync_to_async from .models import Tournoi class Game: + # Global variable to handle the using of the database + USING_DB = False + def __init__(self, game_id, player1, player2, localgame): self.game_id = game_id self.player1 = player1 @@ -243,6 +246,9 @@ class Game: if not self.botgame: if not self.localgame: await self.player2.send(end_message) + while (Game.USING_DB): + await asyncio.sleep(1) + Game.USING_DB = True if hasattr(self, 'tournament'): print(f"*** Game #{self.game_id} from tournament: {self.tournament.tournoi_reg.name} ENDED ***") await sync_to_async(handle_game_data)(self.game_state['player1_name'], self.game_state['player2_name'], @@ -253,3 +259,4 @@ class Game: await sync_to_async(handle_game_data)(self.game_state['player1_name'], self.game_state['player2_name'], self.game_state['player1_score'], self.game_state['player2_score'], self.bt1, self.bt2, duration, False, None) + Game.USING_DB = False diff --git a/pong/game/tournament.py b/pong/game/tournament.py index 24de2fc..c2903a1 100644 --- a/pong/game/tournament.py +++ b/pong/game/tournament.py @@ -82,13 +82,13 @@ class TournamentMatchMaker: # Tournament start method async def start_tournament(self): - - if len(self.waiting_players) < 2: + if len(self.waiting_players) < 3: return False - if len(self.waiting_players) % 2 == 0: - await self.add_player(None) - self.tournament_state = "in_progress" random.shuffle(self.waiting_players) + '''if (len(self.waiting_players) % 2) != 0: + print("Adding a BYE to the tournament..") + await self.add_player(None)''' + self.tournament_state = "in_progress" self.current_round = 0 len_tournament = await sync_to_async(getlen)() self.final_name = self.name + " #" + str(len_tournament + 1) @@ -97,7 +97,7 @@ class TournamentMatchMaker: return True async def advance_tournament(self): - players = self.waiting_players + players = self.waiting_players while len(players) > 1: self.current_round += 1 print(f"Starting round {self.current_round} with {len(players)} players") @@ -180,6 +180,14 @@ class TournamentMatchMaker: match.game_state['player1_score'] = 3 match.game_state['player2_score'] = 0 await match.end_game() + await self.send_game_text(match.player1, "You lucky bastard! You got an auto-win!") + + async def send_game_text(self, player, text): + message = json.dumps({ + 'type': 'game_text_update', + 'game_text': text + }) + await player.send(message) def get_round_winners(self): winners = [] diff --git a/pong/settings.py b/pong/settings.py index b44ccdf..446ec08 100644 --- a/pong/settings.py +++ b/pong/settings.py @@ -136,7 +136,7 @@ CHANNEL_LAYERS = { }, } -LOGGING = { +'''LOGGING = { 'version': 1, # The version of the logging configuration schema 'disable_existing_loggers': False, # Allows existing loggers to keep logging 'formatters': { # Defines how log messages will be formatted @@ -169,4 +169,4 @@ LOGGING = { 'propagate': True, # If True, messages will be passed to the parent loggers as well }, }, -} +}''' diff --git a/pong/static/game.js b/pong/static/game.js index 8dcc898..b5a0b9d 100644 --- a/pong/static/game.js +++ b/pong/static/game.js @@ -388,6 +388,8 @@ document.addEventListener('DOMContentLoaded', () => { document.addEventListener('keydown', handleKeyDown); } else if (data.type === 'game_state_update') { updateGameState(data.game_state); + } else if (data.type === 'game_text_update') { + updateGameText(data.game_text); } else if (data.type === 'player_disconnected') { console.log('Player disconnected:', data.player); } else if (data.type === 'game_ended') { @@ -462,6 +464,10 @@ document.addEventListener('DOMContentLoaded', () => { document.getElementById('game-text').textContent = gameState.game_text; } + function updateGameText(gameText) { + document.getElementById('game-text').textContent = gameText; + } + const starsContainer = document.getElementById('stars'); for (let i = 0; i < 500; i++) { const star = document.createElement('div');