def solve(self, game): for move in game.generateMoves(): newPosition = game.doMove(move) primitiveValue = game.primitive() if primitiveValue == -1 or (primitiveValue == 0 and self.solve(newPosition) == -1): return 1 return -1
# weights, biases = new_ann.convert_all_to_weights_biases(layer_sizes, arr) # ann = new_ann.neuralnetwork(weights, biases, layer_sizes, activation=[nnet.sigmoid, nnet.sigmoid, nnet.sigmoid]) # ann_player = ANN_Player(game.getOtherPlayer(game.FIRST_PLAYER), ann) move_nr = 1 start_move_time = time.time() while game.winner is None: if move_nr % 2 == 1: move = alpha_beta.rootAlphaBeta(game, 3, player1) color = player1.color else: move = alpha_beta.rootAlphaBeta(game, 2, player2) color = player2.color valid_move = game.doMove(color, move) if valid_move: move_nr += 1 # player = game.getOtherPlayer(player) end_move_time = time.time() print(game.getPlayerString(color), move, " - Time used:", end_move_time - start_move_time) start_move_time = time.time() # print(game.getCorrectBoardArray()) end_time = time.time() - start_time print(game) print("Moves:", len(game.moves), end_time) game_nr += 1 if game.winner == game.WHITE: new_ai_win += 1 else:
ai_turn = parameters.AI_FIRST p1 = Player_fast(game.FIRST_PLAYER, random_start=parameters.RANDOM_START) # player = Player(game.FIRST_PLAYER, random_start=parameters.RANDOM_START) # player = ANN_Player(game.FIRST_PLAYER, new_ann.loadNeuralNetwork(), random_start=parameters.RANDOM_START) other_color = game.getOtherPlayer(p1.color) p2 = None if parameters.AI_VS_AI: p2 = Player_fast(other_color) # -------- Main Program Loop ----------- while not done: # --- Main event loop if parameters.PLAY_WITH_AI and ai_turn: move = ai.rootAlphaBeta(game, parameters.DEFAULT_ALPHA_BETA_DEPTH, p1) validMove = game.doMove(p1.color, move) if validMove: ai_turn = False print("AI --> X:", move[0], "Y:", move[1]) if parameters.PLAY_WITH_AI and parameters.AI_VS_AI and not ai_turn: move = ai.rootAlphaBeta(game, parameters.DEFAULT_ALPHA_BETA_DEPTH, p2) validMove = game.doMove(p2.color, move) if validMove: ai_turn = True print("AI 2 --> X:", move[0], "Y:", move[1]) for event in pygame.event.get(): # User did something if event.type == pygame.QUIT: # If user clicked close done = True # Flag that we are done so we exit this loop elif event.type == pygame.MOUSEBUTTONDOWN and not parameters.AI_VS_AI: