def test_invalid_one_move_recreation(valid_one_move_pieces): valid_one_move_pieces[0].king = True min_max = MinMax(1, 1) with pytest.raises(ValueError): min_max.get_move_by_pieces(valid_one_move_pieces)
def test_multi_move_recreation(valid_multi_move_pieces): min_max = MinMax(1, 1) piece_1 = CheckersPiece(position=29, player=1, king=True) piece_2 = CheckersPiece(position=25, player=2, king=True) piece_3 = CheckersPiece(position=18, player=2, king=True) piece_4 = CheckersPiece(position=11, player=2, king=True) min_max.load_game([piece_1, piece_2, piece_3, piece_4]) move: List[Tuple[int, int]] = min_max.get_move_by_pieces( valid_multi_move_pieces) assert move == [[29, 22], [22, 15], [15, 8]]
def test_min_max_game(): min_max_game = MinMax(1, 2) simulate_game(min_max_game) winner = min_max_game.game.get_winner() print(f"The winner should be player one. Winner: {winner}") assert winner == 1 or winner == 2 or winner is None
def export_game(): monte_carlo_game = MinMax(1, 5) monte_carlo_game.move(9, 14) piece_list: List[Piece] = monte_carlo_game._game.board.pieces dict_list = [] for piece in piece_list: dict_list.append({ 'position': piece.position, 'player': piece.player, 'king': piece.king, }) with open('../src/test/one_move_piece_list.json', 'w') as file: file.write(json.dumps(dict_list)) file.close()
def test_new_king(): min_max = MinMax(2, 1) piece_1 = CheckersPiece(position=6, player=2, king=False) piece_2 = CheckersPiece(position=8, player=1, king=False) min_max.load_game([piece_1, piece_2]) min_max.move(8, 11) old_game: Game = deepcopy(min_max._game) min_max.move(6, 1) king_pieces = min_max.get_new_kings(old_game, min_max._game, old_game.whose_turn(), (6, 1)) assert king_pieces == [1]
def test_piece_removal(valid_multi_move_pieces): min_max = MinMax(1, 1) piece_1 = CheckersPiece(position=29, player=1, king=True) piece_2 = CheckersPiece(position=25, player=2, king=True) piece_3 = CheckersPiece(position=18, player=2, king=True) piece_4 = CheckersPiece(position=11, player=2, king=True) min_max.load_game([piece_1, piece_2, piece_3, piece_4]) old_game: Game = deepcopy(min_max._game) move_list = min_max.get_move_by_pieces(valid_multi_move_pieces) for move in move_list: min_max.move(*move) removed_pieces = min_max.get_removed_pieces(old_game, min_max._game, min_max._game.whose_turn()) assert removed_pieces == [25, 18, 11]
def test_load_game(): min_max = MinMax(1, 1) piece_1 = CheckersPiece(position=18, player=1, king=True) piece_2 = CheckersPiece(position=22, player=2, king=True) min_max.load_game([piece_1, piece_2]) moves = min_max._game.get_possible_moves()[0] min_max.move(*moves) assert min_max._game.is_over()
def test_pascal(): min_max = MinMax(1, 2) min_max.move(12, 16) # 24 - 19 move_list = [{ 'position': 1, 'player': 1, 'king': False }, { 'position': 2, 'player': 1, 'king': False }, { 'position': 3, 'player': 1, 'king': False }, { 'position': 4, 'player': 1, 'king': False }, { 'position': 5, 'player': 1, 'king': False }, { 'position': 6, 'player': 1, 'king': False }, { 'position': 7, 'player': 1, 'king': False }, { 'position': 8, 'player': 1, 'king': False }, { 'position': 9, 'player': 1, 'king': False }, { 'position': 10, 'player': 1, 'king': False }, { 'position': 11, 'player': 1, 'king': False }, { 'position': 16, 'player': 1, 'king': False }, { 'position': 19, 'player': 2, 'king': False }, { 'position': 21, 'player': 2, 'king': False }, { 'position': 22, 'player': 2, 'king': False }, { 'position': 23, 'player': 2, 'king': False }, { 'position': 25, 'player': 2, 'king': False }, { 'position': 26, 'player': 2, 'king': False }, { 'position': 27, 'player': 2, 'king': False }, { 'position': 28, 'player': 2, 'king': False }, { 'position': 29, 'player': 2, 'king': False }, { 'position': 30, 'player': 2, 'king': False }, { 'position': 31, 'player': 2, 'king': False }, { 'position': 32, 'player': 2, 'king': False }] t = [] for move in move_list: t.append(CheckersPiece(**move)) moves = min_max.get_move_by_pieces(t) assert moves == [[24, 19]]
def test_one_move_recreation(valid_one_move_pieces): min_max = MinMax(1, 1) move: List[Tuple[int, int]] = min_max.get_move_by_pieces(valid_one_move_pieces) assert move == [[9, 14]]
from game import MinMax from game.setup import select_difficulty, select_order difficulty: int = select_difficulty() order: int = select_order() min_max_game = MinMax(3 - order, branch_depth=difficulty) min_max_game.play_game()