def test_simulate_move(ai_player): player2 = Player('O') board = Board(ai_player, player2) board.analyze_move((1,1)) board.switch_current_player() best_move = ai_player.simulate_move(board, ai_player) assert (2,2) == best_move
class GomokuController(object): def __init__(self): self.player1 = Player('X') self.player2 = AIPlayer('O') self.board = Board(self.player1, self.player2) def analyze_move(self, move): self.board.analyze_move(move) return self.board.analyze_victory() def get_current_player_symbol(self): return self.board.get_current_player().get_symbol() def get_current_player(self): return self.board.get_current_player() def restart_match(self): self.board.restart_match() def match_ended(self): return self.board.get_match_ended() def move_for_ai(self): move = self.player2.minimax(self.board, self.player1, self.player2.global_alpha, self.player2.global_beta) self.analyze_move(move[1]) def get_board(self): return self.board
def test_calculate_points_for_human(ai_player): player2 = Player('O') board = Board(player2, ai_player) moves_for_diagonal_victory = [(1,3), (2,4), (3,5)] for move in moves_for_diagonal_victory: board.analyze_move(move) board.switch_current_player() points = ai_player.calculate_points_for_human(board, player2) assert points == 18162
def test_calculate_points_diagonal_right_left(ai_player): player2 = Player('O') board = Board(ai_player, player2) moves_for_diagonal_victory = [(9,8), (10,7), (11,6), (12,5), (13,4)] for move in moves_for_diagonal_victory: board.analyze_move(move) board.switch_current_player() ai_player.calculate_points_diagonal_right_left(board, ai_player) assert ai_player.sequences[4] == 4 and ai_player.gaps[4] == 7
def test_calculate_points_vertical(ai_player): player2 = Player('O') board = Board(ai_player, player2) moves_for_vertical_victory = [(0,1), (1,1), (2,1), (3,1), (4,1)] for move in moves_for_vertical_victory: board.analyze_move(move) board.switch_current_player() ai_player.calculate_points_vertical(board, ai_player) assert ai_player.sequences[4] == 2 and ai_player.gaps[4] == 3
def test_calculate_points_horizontal(ai_player): player2 = Player('O') board = Board(ai_player, player2) moves_for_horizontal_victory = [(1,1), (1,2), (1,3), (1,4), (1,5)] for move in moves_for_horizontal_victory: board.analyze_move(move) board.switch_current_player() ai_player.calculate_points_horizontal(board, ai_player) assert ai_player.sequences[4] == 1 and ai_player.gaps[4] == 2
def test_calculate_points_diagonal_left_right_double(ai_player): ai_player.restart_sequences_and_gaps() player2 = Player('O') board = Board(ai_player, player2) moves_for_diagonal_victory = [(1,3), (2,4), (3,5)] for move in moves_for_diagonal_victory: board.analyze_move(move) board.switch_current_player() ai_player.calculate_points_diagonal_left_right(board, ai_player) assert ai_player.sequences[2] == 1 and ai_player.gaps[2] == 2