Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
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]]
Ejemplo n.º 3
0
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
Ejemplo n.º 4
0
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()
Ejemplo n.º 5
0
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]
Ejemplo n.º 6
0
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]
Ejemplo n.º 7
0
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()
Ejemplo n.º 8
0
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]]
Ejemplo n.º 9
0
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]]
Ejemplo n.º 10
0
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()