each move are now saved in the history list of the Game object
This commit is contained in:
parent
316de05525
commit
8c7b429d29
4 changed files with 22 additions and 15 deletions
1
NOTE.md
1
NOTE.md
|
@ -8,7 +8,6 @@ A faire :
|
||||||
2. Visuel :
|
2. Visuel :
|
||||||
- Empêcher de spam "se connecter" dans le client (écran d'attente ?)
|
- Empêcher de spam "se connecter" dans le client (écran d'attente ?)
|
||||||
- Paramètres (contenu : fps, volume dans le jeu, plein écran, ...) (bouton dans le jeu)
|
- Paramètres (contenu : fps, volume dans le jeu, plein écran, ...) (bouton dans le jeu)
|
||||||
- Police d'écriture
|
|
||||||
- Rendre le texte de status plus visible (fond un peu plus sombre ?)
|
- Rendre le texte de status plus visible (fond un peu plus sombre ?)
|
||||||
- Changer les images, animations, rajouter les fonds, mettre la musique, ...
|
- Changer les images, animations, rajouter les fonds, mettre la musique, ...
|
||||||
- Voir les TODOs
|
- Voir les TODOs
|
||||||
|
|
|
@ -34,6 +34,8 @@ class Game(Scene):
|
||||||
board_ally_data: dict = None,
|
board_ally_data: dict = None,
|
||||||
board_enemy_data: dict = None,
|
board_enemy_data: dict = None,
|
||||||
|
|
||||||
|
history: list[bool, Point2D] = None,
|
||||||
|
|
||||||
**kwargs):
|
**kwargs):
|
||||||
super().__init__(window, **kwargs)
|
super().__init__(window, **kwargs)
|
||||||
|
|
||||||
|
@ -210,6 +212,8 @@ class Game(Scene):
|
||||||
self._boat_ready_ally: bool = False # does the player finished placing his boat ?
|
self._boat_ready_ally: bool = False # does the player finished placing his boat ?
|
||||||
self._boat_ready_enemy: bool = False # does the opponent finished placing his boat ?
|
self._boat_ready_enemy: bool = False # does the opponent finished placing his boat ?
|
||||||
|
|
||||||
|
self.history: list[tuple[bool, Point2D]] = [] if history is None else history # liste des bombes posées
|
||||||
|
|
||||||
if len(boats_length) == 0: # s'il n'y a pas de bateau à placé
|
if len(boats_length) == 0: # s'il n'y a pas de bateau à placé
|
||||||
self._boat_ready_ally = True # défini l'état de notre planche comme prête
|
self._boat_ready_ally = True # défini l'état de notre planche comme prête
|
||||||
PacketBoatPlaced().send_connection(connection) # indique à l'adversaire que notre planche est prête
|
PacketBoatPlaced().send_connection(connection) # indique à l'adversaire que notre planche est prête
|
||||||
|
@ -275,9 +279,12 @@ class Game(Scene):
|
||||||
|
|
||||||
def to_json(self) -> dict:
|
def to_json(self) -> dict:
|
||||||
return {
|
return {
|
||||||
|
"name_ally": self.name_ally,
|
||||||
|
"name_enemy": self.name_enemy,
|
||||||
"my_turn": self.my_turn,
|
"my_turn": self.my_turn,
|
||||||
"grid_ally": self.grid_ally.board.to_json(),
|
"grid_ally": self.grid_ally.board.to_json(),
|
||||||
"grid_enemy": self.grid_enemy.board.to_json(),
|
"grid_enemy": self.grid_enemy.board.to_json(),
|
||||||
|
"history": self.history,
|
||||||
}
|
}
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
@ -286,22 +293,23 @@ class Game(Scene):
|
||||||
|
|
||||||
window: "Window",
|
window: "Window",
|
||||||
thread: StoppableThread,
|
thread: StoppableThread,
|
||||||
connection: socket.socket,
|
connection: socket.socket) -> "Game":
|
||||||
name_ally: str,
|
|
||||||
name_enemy: str) -> "Game":
|
|
||||||
|
|
||||||
return cls(
|
return cls(
|
||||||
window=window,
|
window=window,
|
||||||
thread=thread,
|
thread=thread,
|
||||||
connection=connection,
|
connection=connection,
|
||||||
boats_length=[],
|
boats_length=[],
|
||||||
name_ally=name_ally,
|
|
||||||
name_enemy=name_enemy,
|
name_ally=data["name_ally"],
|
||||||
|
name_enemy=data["name_enemy"],
|
||||||
|
|
||||||
my_turn=data["my_turn"],
|
my_turn=data["my_turn"],
|
||||||
|
|
||||||
board_ally_data=data["grid_ally"],
|
board_ally_data=data["grid_ally"],
|
||||||
board_enemy_data=data["grid_enemy"]
|
board_enemy_data=data["grid_enemy"],
|
||||||
|
|
||||||
|
history=data["history"]
|
||||||
)
|
)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
@ -378,6 +386,9 @@ class Game(Scene):
|
||||||
# envoie le résultat à l'autre joueur
|
# envoie le résultat à l'autre joueur
|
||||||
PacketBombState(position=packet.position, bomb_state=bomb_state).send_connection(self.connection)
|
PacketBombState(position=packet.position, bomb_state=bomb_state).send_connection(self.connection)
|
||||||
|
|
||||||
|
# sauvegarde la bombe dans l'historique
|
||||||
|
self.history.append((False, packet.position))
|
||||||
|
|
||||||
self._refresh_score_text() # le score a changé, donc rafraichi son texte
|
self._refresh_score_text() # le score a changé, donc rafraichi son texte
|
||||||
|
|
||||||
if bomb_state is BombState.WON:
|
if bomb_state is BombState.WON:
|
||||||
|
@ -398,6 +409,9 @@ class Game(Scene):
|
||||||
# place la bombe sur la grille ennemie visuelle
|
# place la bombe sur la grille ennemie visuelle
|
||||||
self.grid_enemy.place_bomb(packet.position, force_touched=packet.bomb_state.success)
|
self.grid_enemy.place_bomb(packet.position, force_touched=packet.bomb_state.success)
|
||||||
|
|
||||||
|
# sauvegarde la bombe dans l'historique
|
||||||
|
self.history.append((True, packet.position))
|
||||||
|
|
||||||
if packet.bomb_state is BombState.WON:
|
if packet.bomb_state is BombState.WON:
|
||||||
# si cette bombe a touché le dernier bateau, alors l'on a gagné
|
# si cette bombe a touché le dernier bateau, alors l'on a gagné
|
||||||
self.game_end(won=True)
|
self.game_end(won=True)
|
||||||
|
|
|
@ -93,10 +93,7 @@ class Client(StoppableThread):
|
||||||
data=save_data,
|
data=save_data,
|
||||||
|
|
||||||
thread=self,
|
thread=self,
|
||||||
connection=connection,
|
connection=connection
|
||||||
|
|
||||||
name_ally=self.username,
|
|
||||||
name_enemy=enemy_username,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -97,10 +97,7 @@ class Host(StoppableThread):
|
||||||
data=save_data,
|
data=save_data,
|
||||||
|
|
||||||
thread=self,
|
thread=self,
|
||||||
connection=connection,
|
connection=connection
|
||||||
|
|
||||||
name_ally=self.username,
|
|
||||||
name_enemy=enemy_username,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
|
Loading…
Reference in a new issue