Example #1
0
 def setUp(self):
     reload(game_agent)
     self.player1 = game_agent.MinimaxPlayer(2,
                                             sample_players.improved_score)
     self.player2 = sample_players.GreedyPlayer()
     self.game = isolation.Board(self.player1, self.player2, 9, 9)
     self.time_left = lambda: float("inf")
Example #2
0
 def test_minimax(self):
     self.minimax_player = game_agent.MinimaxPlayer(
         score_fn=sample_players.center_score, timeout=float("inf"))
     self.greedy_player = sample_players.GreedyPlayer()
     self.game = isolation.Board(self.minimax_player, self.greedy_player)
     # self.game.play(time_limit=float("inf"))
     self.minimax_player.match_boards(self.game, self.game)
Example #3
0
    def test_single_min_max(self):
        width, height = 7, 7
        #timeout = float("-inf")
        timeout = 10.

        self.player1 = game_agent.MinimaxPlayer(
            search_depth=3, score_fn=game_agent.custom_score, timeout=timeout)

        self.player2 = sample_players.GreedyPlayer(
            score_fn=game_agent.custom_score_3)

        self.game = isolation.Board(self.player1,
                                    self.player2,
                                    width=width,
                                    height=height)

        #self.game.apply_move((random.randint(0, self.game.width-1), random.randint(0, self.game.height-1)))
        #self.game.apply_move((random.randint(0, self.game.width-1), random.randint(0, self.game.height-1)))
        print(self.game.to_string())

        # players take turns moving on the board, so player1 should be next to move
        assert (self.player1 == self.game.active_player)

        # get a list of the legal moves available to the active player
        print(self.game.get_legal_moves())

        # play the remainder of the game automatically -- outcome can be "illegal
        # move", "timeout", or "forfeit"
        winner, history, outcome = self.game.play()
        print("\nWinner: {}\nOutcome: {}".format(
            "player 1" if winner == self.player1 else "player 2", outcome))
        print("\nstate:\n{}".format(self.game.to_string()))
        print("\nhistory:\n{}".format(history))
 def setUp(self):
     reload(game_agent)
     self.player1 = game_agent.MinimaxPlayer()
     self.player2 = sample_players.GreedyPlayer(
         sample_players.improved_score)
     self.player3 = game_agent.AlphaBetaPlayer()
     # self.game = isolation.Board(self.player1, self.player2,7,7)
     self.game = isolation.Board(self.player3, self.player2, 7, 7)
Example #5
0
    def setUp(self):
        self.player1 = game_agent.MinimaxPlayer(score_fn=self.custom_score,
                                                search_depth=3)
        self.player2 = sample_players.GreedyPlayer()
        self.game = isolation.Board(self.player1, self.player2)

        minmax_value = self.player1.get_move(self.game, lambda: 10000)
        print(minmax_value)
Example #6
0
 def setUp(self):
     reload(game_agent)
     self.player1 = game_agent.MinimaxPlayer()
     self.player2 = sample_players.GreedyPlayer()
     self.player3 = sample_players.RandomPlayer()
     self.player4 = game_agent.AlphaBetaPlayer()
     self.player5 = game_agent.AlphaBetaPlayer()
     self.player6 = game_agent.MinimaxPlayer()
     self.game = None
Example #7
0
    def test_score_time(self):
        player1 = game_agent.MinimaxPlayer()
        player2 = sample_players.GreedyPlayer()

        game = isolation.Board(player1, player2)

        for _ in range(0, 2):
            game.apply_move(random.choice(game.get_legal_moves()))

        game_agent.custom_score(game, game.get_player_location(game.active_player))
        game_agent.custom_score_2(game, game.get_player_location(game.active_player))
        game_agent.custom_score_3(game, game.get_player_location(game.active_player))
Example #8
0
 def reset_boards(self):
     self.my_player = game_agent.MinimaxPlayer(3,game_agent.custom_score,10)
     self.opponent = sample_players.GreedyPlayer(sample_players.open_move_score)
     self.game_board_1 = TestBoard(self.my_player, self.opponent)
     self.game_board_2 = TestBoard(self.opponent,self.my_player)
     self.my_player = game_agent.MinimaxPlayer(5,game_agent.custom_score,10)
     self.game_board_3 = TestBoard(self.my_player, self.opponent)
     self.my_player = game_agent.MinimaxPlayer(10,game_agent.custom_score,10)
     self.game_board_4 = TestBoard(self.my_player, self.opponent)
     self.my_player = game_agent.MinimaxPlayer(3,game_agent.custom_score_2,10)
     self.game_board_5 = TestBoard(self.my_player, self.opponent)
     self.my_player = game_agent.MinimaxPlayer(3,game_agent.custom_score_3,10)
     self.game_board_6 = TestBoard(self.my_player, self.opponent)
Example #9
0
    def test_alpha_beta(self):
        """Test Alfa beta agains GreedPlayer"""
        player1 = game_agent.AlphaBetaPlayer()
        player2 = sample_players.GreedyPlayer()

        game = isolation.Board(player1, player2, 3, 5)

        winner, history, outcome = game.play()
        self.assertNotEqual(outcome, 'timeout', "AlphaBeta should not lost by timeout")

        game = isolation.Board(player1, player2)

        winner, history, outcome = game.play()
        self.assertNotEqual(outcome, 'timeout', "AlphaBeta should not lost by timeout")
Example #10
0
    def test_minimax_func(self):
        minimax_player = game_agent.MinimaxPlayer(search_depth=1, score_fn=sample_players.improved_score)
        other_player = sample_players.GreedyPlayer()
        state = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 43]
        game = isolation.Board(minimax_player, other_player,  width=9, height=9)
        game._board_state = state

        legal_moves = game.get_legal_moves()
        move = minimax_player.get_move(game, lambda: 10)

        print(game.to_string())
        print('Available choices:')
        print(legal_moves)
        print(move)

        assert(move in legal_moves)
Example #11
0
    def test_greedy_player(self):
        """Test against GreedPlayer"""
        # create an isolation board (by default 7x7)
        player1 = game_agent.MinimaxPlayer()
        player2 = sample_players.GreedyPlayer()

        game = isolation.Board(player1, player2, 3, 5)

        winner, history, outcome = game.play()
        self.assertNotEqual(outcome, 'forfeit', "MinimaxPlayer should not lost by forfeit")
        self.assertNotEqual(outcome, 'timeout', "MinimaxPlayer should not lost by timeout")

        game = isolation.Board(player1, player2)

        winner, history, outcome = game.play()
        self.assertNotEqual(outcome, 'forfeit', "MinimaxPlayer should not lost by forfeit")
        self.assertNotEqual(outcome, 'timeout', "MinimaxPlayer should not lost by timeout")
Example #12
0
 def setUp(self):
     reload(game_agent)
     self.player1 = game_agent.MinimaxPlayer()
     self.player2 = sample_players.GreedyPlayer()
     self.game = isolation.Board(self.player1, self.player2)
Example #13
0
 def setUp(self):
     reload(game_agent)
     self.player1 = sample_players.GreedyPlayer()
     self.player2 = game_agent.AlphaBetaPlayer(
         score_fn=sample_players.open_move_score, timeout=20)
     self.game = isolation.Board(self.player1, self.player2)