From a6993ca49ba208f49a7e7402511c775dbc49e31e Mon Sep 17 00:00:00 2001 From: Heli-o Date: Wed, 3 Jan 2024 18:10:42 +0100 Subject: [PATCH] safety commit --- .gitignore | 2 + __pycache__/player.cpython-311.pyc | Bin 0 -> 21382 bytes player.py | 106 +++++++++++++++++++++++++---- 3 files changed, 94 insertions(+), 14 deletions(-) create mode 100644 .gitignore create mode 100644 __pycache__/player.cpython-311.pyc diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..32dfc6e --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +images/* +*.png \ No newline at end of file diff --git a/__pycache__/player.cpython-311.pyc b/__pycache__/player.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4f3e2372a578835967c56931b49d5d41dc9f25ae GIT binary patch literal 21382 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 j(R1$&L49dK3-qLINJXO?|{{w literal 0 HcmV?d00001 diff --git a/player.py b/player.py index 16ddefa..30ca4c3 100644 --- a/player.py +++ b/player.py @@ -17,7 +17,7 @@ def get_neighbors(p, q): class Piece: - def get_piece_info(self): + def get_piece_info(self, myisupper): class_to_letter = { "Bee": "Q", "Beetle": "B", @@ -26,10 +26,52 @@ class Piece: "Ant": "A", } letter = class_to_letter[self.__class__.__name__] - if not self.team: + if not myisupper: letter = letter.lower() return [letter, self.p, self.q] + def validate_jumps(self, board): + valid_jumps = self.get_valid_jumps(board) + validated_jumps = [] + + for jump in valid_jumps: + if not self.does_jump_split_hive(jump, board): + validated_jumps.append(jump) + return validated_jumps + + def does_jump_split_hive(self, jump, board): + board_copy = {p: {q: board[p][q] for q in board[p]} for p in board} + + # Simulate the move + board_copy[self.p][self.q] = None # Remove the piece from its current position + new_p, new_q = jump + board_copy[new_p][new_q] = self # Place the piece in the new position + + # Get all remaining pieces on the board + remaining_pieces = [ + piece for row in board_copy.values() for piece in row.values() if piece + ] + + # Start BFS from a random piece + start_piece = remaining_pieces[0] + visited = set() + queue = deque([start_piece]) + + while queue: + current_piece = queue.popleft() + visited.add(current_piece) + + # Get all neighbors of the current piece + for neighbor_p, neighbor_q in get_neighbors( + current_piece.p, current_piece.q + ): + neighbor_piece = board_copy.get(neighbor_p, {}).get(neighbor_q) + if neighbor_piece and neighbor_piece not in visited: + queue.append(neighbor_piece) + + # Check if all pieces are connected + return len(visited) != len(remaining_pieces) + def get_valid_jumps() -> list: raise NotImplementedError @@ -153,6 +195,7 @@ class Player(Base.Board): self, myIsUpper, size, myPieces, rivalPieces ) # do not change this line self.playerName = playerName + self.myIsUpper = myIsUpper self.algorithmName = "just roll the dice, eh?" def getAllEmptyCells(self): @@ -221,6 +264,37 @@ class Player(Base.Board): unplaced_pieces.append(piece_class(None, None, True)) return unplaced_pieces + def get_valid_placements(self, translated_board, piece_to_place): + valid_placements = [] + + if not translated_board: + # If the board is empty, the piece can be placed anywhere. + # For example, return the center of the board or any other arbitrary position. + return [(3, 6)] + + for p, row in translated_board.items(): + for q, piece in row.items(): + if piece and piece.team == self.myIsUpper: + # Check all neighbors of the piece + for neighbor_p, neighbor_q in get_neighbors(p, q): + if ( + neighbor_p, + neighbor_q, + ) in translated_board and not translated_board[neighbor_p][ + neighbor_q + ]: + # Check if the position is only adjacent to friendly pieces + if all( + not translated_board.get(adj_p, {}).get(adj_q) + or translated_board[adj_p][adj_q].team == self.myIsUpper + for adj_p, adj_q in get_neighbors( + neighbor_p, neighbor_q + ) + ): + valid_placements.append((neighbor_p, neighbor_q)) + + return valid_placements + def move(self): translated_board, total_pieces_count, _ = self.translate_board(self.board) @@ -230,7 +304,7 @@ class Player(Base.Board): if total_pieces_count == 0: piece_to_place = choose_random_piece(self.get_unplaced_pieces()) return ( - piece_to_place.get_piece_info()[:1] + [None, None, 3, 6] + piece_to_place.get_piece_info(self.myIsUpper)[:1] + [None, None, 3, 6] if piece_to_place else [] ) @@ -243,45 +317,49 @@ class Player(Base.Board): random_position = choose_random_piece(adjacent_positions) piece_to_place = choose_random_piece(self.get_unplaced_pieces()) return ( - piece_to_place.get_piece_info()[:1] + piece_to_place.get_piece_info(self.myIsUpper)[:1] + [None, None, *random_position] if piece_to_place else [] ) - elif self.queen_placed or total_pieces_count >= 8: + else: move_or_place = random.choice(["move", "place"]) - if move_or_place == "move": + if move_or_place == "move" and self.queen_placed: + print(translated_board) movable_pieces = [ - p - for p in translated_board.values() - if p.get_valid_jumps(translated_board) + piece + for row in translated_board.values() + for piece in row.values() + if piece and piece.validate_jumps(piece, translated_board) ] chosen_piece = choose_random_piece(movable_pieces) if chosen_piece: new_p, new_q = random.choice( - chosen_piece.get_valid_jumps(translated_board) + chosen_piece.validate_jumps(chosen_piece, translated_board) ) - return chosen_piece.get_piece_info() + [new_p, new_q] + return chosen_piece.get_piece_info(self.myIsUpper) + [new_p, new_q] else: piece_to_place = choose_random_piece(self.get_unplaced_pieces()) if piece_to_place: valid_placements = self.get_valid_placements( translated_board, piece_to_place ) + print(piece_to_place, valid_placements) new_p, new_q = ( random.choice(valid_placements) if valid_placements else (None, None) ) - return piece_to_place.get_piece_info()[:1] + [ + return piece_to_place.get_piece_info(self.myIsUpper)[:1] + [ None, None, new_p, new_q, ] - - return [] # uncase of the inability to do anything, return empty list + return ( + [] + ) # uncase of the inability to do anything, return empty list tho this wont ever run def updatePlayers(move, activePlayer, passivePlayer):