diff --git a/src/main/app.py b/src/main/app.py index 7df3fa0..9bea858 100644 --- a/src/main/app.py +++ b/src/main/app.py @@ -294,7 +294,6 @@ def awale_place_piece(): pitid = data['pitid'] current_player = data['current_player'] id = int(pitid) - print("current_player",current_player) if board_awale is not None: try: @@ -305,13 +304,14 @@ def awale_place_piece(): #print("values",values) winner = board_awale.check_winner() print("Gagnant joueur",winner) - if winner == 1 or winner == 2: + if winner: - return jsonify({'winner': current_player, 'game_over': True, 'current_player': current_player,'values':values,'pitid':pitid,'score_1':scores[0],'score_2':scores[1]}) + return jsonify({'winner': winner, 'game_over': True, 'current_player': current_player,'values':values,'pitid':pitid,'score_1':scores[0],'score_2':scores[1]}) current_player = 1 if current_player == 2 else 2 except Exception as e: # Handle the exception here error_message = str(e) # Get the error message + board_awale.display_board() # Display the game board in the console print("error: ", error_message) return jsonify({'error': "An error has occured"}), 400 return jsonify({'result': 'Success', 'game_over': False,'current_player': current_player,'values':values,'score_1':scores[0],'score_2':scores[1],'pitid':pitid}) diff --git a/src/main/game_logic/awalegame/board/awaleboard.py b/src/main/game_logic/awalegame/board/awaleboard.py index d275209..a645080 100644 --- a/src/main/game_logic/awalegame/board/awaleboard.py +++ b/src/main/game_logic/awalegame/board/awaleboard.py @@ -30,12 +30,14 @@ def __init__(self): self.score_1=0 self.score_2=0 + def display_board(self): print("|\t0\t1\t2\t3\t4\t5\t|") print(f"|\t{self.board[0]}\t{self.board[1]}\t{self.board[2]}\t{self.board[3]}\t{self.board[4]}\t{self.board[5]}\t|") print(f"|\t{self.board[11]}\t{self.board[10]}\t{self.board[9]}\t{self.board[8]}\t{self.board[7]}\t{self.board[6]}\t|\n") print("|\t11\t10\t9\t8\t7\t6\t|") + def is_legal_move(self, position, player): # Check if the position is valid if position < 0 or position > 11: @@ -67,29 +69,7 @@ def is_legal_move(self, position, player): def make_move(self, position, player): - # Check if the position is valid - if position < 0 or position > 11: - raise InvalidPositionError("Invalid position, position should be between 1 and 12") - - # Check if the position is empty - if self.board[position] == 0: - raise PositionEmptyError("Position is empty") - - # Check if the position is on the opponent's side - if player == 1 and position > 5: - raise InvalidPositionError("Invalid position, position is on the opponent's side") - if player == 2 and position <= 5: - raise InvalidPositionError("Invalid position, position is on the opponent's side") - - - # Check rule "affamer" - if self.affamer(position, player): - raise AffamerError("Player cannot play this move, it will starve the opponent") - - - # Check rule "nourrir" - if not self.nourrir(position, player): - raise NourrirError("Player can feed the opponent") + self.is_legal_move(position, player) # Sow the seeds position = self.sow_seeds(position, player) @@ -98,9 +78,6 @@ def make_move(self, position, player): # Check if any capture is possible self.capture(position, player) - - # Check if the game is over - return self.check_winner() def affamer(self, position, player): @@ -119,7 +96,6 @@ def affamer(self, position, player): return True - def nourrir(self, position, player): # Check if the opponent's side is empty if player == 1: @@ -206,11 +182,9 @@ def get_board(self): def check_winner(self): if self.board[0:5] == [0,0,0,0,0,0]: - self.score_2 = 48 return 2 if self.board[6:11] == [0,0,0,0,0,0]: - self.score_1 = 48 return 1 if self.score_1 > 24: @@ -220,11 +194,19 @@ def check_winner(self): return 2 if sum(self.board) <= 3: - if self.score_1 > self.score_2: - return 1 - if self.score_2 > self.score_1: - return 2 - #return 0 + return 2 - self.score_1 > self.score_2 + + try: + self.nourrir(0, 1) + except CannotFeedError: + return 1 + + try: + self.nourrir(6, 2) + except CannotFeedError: + return 2 + + return None def get_possible_moves(self,player): diff --git a/src/main/game_ui/static/js/game_awale.js b/src/main/game_ui/static/js/game_awale.js index 5ce7429..e4698b6 100644 --- a/src/main/game_ui/static/js/game_awale.js +++ b/src/main/game_ui/static/js/game_awale.js @@ -103,7 +103,18 @@ window.onload = function () { .then(response => response.json()) .then(data => { if (data.error) { - alert(data.error); + // briefly change the color of the pit to red + pit.style.backgroundColor = 'red'; + + // disable the cell + pit.setAttribute('disabled', true); + + setTimeout(() => { + pit.style.backgroundColor = '#cc945b'; + + // remove the disabled attribute from the hex cell + pit.removeAttribute('disabled'); + }, 500); } else { values = []