diff --git a/Dockerfile b/Dockerfile
index d284401..de36a4e 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -23,4 +23,4 @@ EXPOSE 5000
# Définir PYTHONPATH pour que les imports relatifs fonctionnent
ENV PYTHONPATH=/app:$PYTHONPATH
-CMD ["gunicorn", "-w", "4", "-b", "0.0.0.0:5000", "api:app"]
+CMD ["gunicorn", "-w", "1", "-b", "0.0.0.0:5000", "api:app"]
diff --git a/backend/src/api.py b/backend/src/api.py
index 8e19376..074c055 100644
--- a/backend/src/api.py
+++ b/backend/src/api.py
@@ -128,6 +128,7 @@ def start_game():
def game_state():
global current_game
with game_lock:
+ print(f"[API] /api/game/state called. current_game is {'None' if current_game is None else 'OK'}")
if current_game is None:
return jsonify({'error': 'Aucune partie en cours'}), 400
return jsonify({'state': current_game.get_state()})
@@ -186,5 +187,15 @@ def game_get_actions(player_id):
actions = current_game.get_possible_actions(player_id)
return jsonify({'actions': actions})
+@app.route('/api/play_draw', methods=['POST'])
+def play_draw_api():
+ global current_game
+ with game_lock:
+ print('[API] /api/play_draw called')
+ if current_game is None:
+ return jsonify({'error': 'Aucune partie en cours'}), 400
+ current_game.play_draw()
+ return jsonify({'state': current_game.get_state()})
+
if __name__ == '__main__':
app.run(debug=True, port=5000)
diff --git a/backend/src/game/game.py b/backend/src/game/game.py
index b451b70..524987f 100644
--- a/backend/src/game/game.py
+++ b/backend/src/game/game.py
@@ -61,10 +61,13 @@ class Game:
self.hidden_discards_bots = [[] for _ in range(3)]
def play_draw(self):
- if self.turn == 0:
- self.hand_player.draw(self.wall.draw())
- self.has_draw = True
- print(f"player {self.turn} has draw")
+ print(f"[Game] play_draw called: has_draw={self.has_draw}, turn={self.turn}")
+ if not self.has_draw:
+ if self.turn == 0:
+ tile = self.wall.draw()
+ self.hand_player.draw_tile(tile)
+ self.has_draw = True
+ print(f"Change has_draw to {self.has_draw}")
def draw_tile(self, hand: Hand):
tile = self.wall.draw()
@@ -81,14 +84,13 @@ class Game:
def get_state(self):
"""Retourne l'état actuel de la partie (joueurs, scores, main, etc.)."""
hand_tiles = list(getattr(self.hand_player, 'tiles', []))
- if getattr(self.hand_player, 'draw', None) is not None:
- hand_tiles = hand_tiles + [self.hand_player.draw]
return {
'scores': list(self.scores),
'winds': list(self.winds),
'turn': int(self.turn),
'riichi': list(self.riichi),
'repeat': int(self.repeat),
+ 'has_draw': bool(self.has_draw),
'end': bool(self.end),
'hand_player': [
{
@@ -98,7 +100,16 @@ class Game:
'svg': tile.get_img()
}
for tile in hand_tiles
- ]
+ ],
+ 'draw': (
+ {
+ 'id': self.hand_player.draw.id,
+ 'family': str(self.hand_player.draw.family),
+ 'value': str(self.hand_player.draw.value),
+ 'svg': self.hand_player.draw.get_img()
+ }
+ if self.hand_player.draw is not None else None
+ )
}
def declare_riichi(self, player_id):
diff --git a/frontend/pages/riichi/chap5.html b/frontend/pages/riichi/chap5.html
index 373aace..bb3b2b7 100644
--- a/frontend/pages/riichi/chap5.html
+++ b/frontend/pages/riichi/chap5.html
@@ -135,6 +135,46 @@