Beispiel #1
0
    def PlayervsComputer(self):
        game = self.game
        self.clearOutput()
        game.print()

        node = Node(node_type='MIN', board_state=game.board,
                    parent=None)  # 1 - initialize node
        mcts_agent = MCTS(game=game, cp=0.8,
                          n=100)  # 3 - initialize mcts agent
        util = UTIL(infinity=np.inf,
                    maximizer=game.maximizer,
                    minimizer=game.minimizer)  # 4 - initialize util class

        while not game.isGameOver():
            if (game.turn % 2) == 0:
                move = self.getReady(game)
                game = HexBoard.makeMove(move, game)
                node = util.updateNode(node, game)
            else:
                print("Computer is thinking!!!")
                itermax = 100  # maximum iteration for search
                move, node = mcts_agent.search(node,
                                               itermax,
                                               delta=10,
                                               isMaximizer=True)
                print(f'best move: {move}')
                game = HexBoard.makeMove(move, game)
                node = util.updateNode(node, game)
            self.clearOutput()
            game.print()

            if game.isGameOver():
                if game.checkWin(game.BLUE):
                    print("!!! Blue Player Won !!!")
                elif game.checkWin(game.RED):
                    print("!!! Red Player Won !!!")
Beispiel #2
0
            'parent_type': 'MAX',
            'board': game.board,
            'name': node_id[-3:]
        }
        print(f'Experiments left: {experiment_number} ')
        while True:
            if (game.turn % 2) == 0:
                # Computer 1's turn (Random)
                best_value = util.alphaBetaSearchRandom(node,
                                                        3,
                                                        -9999999,
                                                        9999999,
                                                        isMaximizer=False)
                move = util.getBestMove(node, best_value)
                game = makeMove(move, game)
                node = util.updateNode(node, game)
            else:
                # Computer 2's turn (Dijkstra)
                best_value = util.alphaBetaSearchDijkstra(node,
                                                          3,
                                                          -9999999,
                                                          9999999,
                                                          isMaximizer=True)
                move = util.getBestMove(node, best_value)
                game = makeMove(move, game)
                node = util.updateNode(node, game)

            if game.isGameOver():
                if game.checkWin(game.BLUE):
                    countblue = countblue + 1
                    r1, r2 = rate_1vs1(r1, r2)