Example #1
0
from player import Player


def partial_mcts(number_of_simulation, game_state):
    return MonteCarloTreeSearch.get_best_move(game_state, number_of_simulation)


if __name__ == '__main__':
    # https://docs.python.org/3/library/logging.html#levels
    logging.basicConfig(format='%(message)s',
                        stream=sys.stdout,
                        level=logging.INFO)

    simulation_count = 100
    p1 = Player('P1', partial(partial_mcts, simulation_count))
    p2 = Player('P2', lambda game_state: Minimax.get_best_move(game_state))
    # p2 = Player('P2', lambda game_state: random.choice(game_state.get_valid_moves()))
    players = [p1, p2]

    board_size = 3
    game = GameState(np.array([p1, p2]),
                     turn=1,
                     game_board=np.zeros((board_size, board_size)))
    logging.debug(game)

    i = 0
    while not game.is_game_over:
        player = players[i % 2]
        logging.info(f'\n{player}\'s turn')
        game = game.make_move(player.get_move(game))
        print(game)