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 !!!")
'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)