def play_series(self, agt1, agt2): player1_wins = 0 for i in range(self.G): print("[{}>{}]".format("-" * i, "." * (self.G - i - 1)), end="\r") sm = StateManager(5) while not sm.is_finished(): player = sm.game.get_current_player() state = np.array( [np.concatenate((player, sm.game.board), axis=None)]) if player == 1: predictions = agt1.predict(state)[0] else: predictions = agt2.predict(state)[0] legal_moves = sm.get_legal_moves() if len(sm.game.executedMoves) <= 1: best_move = random.choice(legal_moves) else: best_move = self.choose_best_move(predictions, legal_moves) sm.execute_move(best_move) if sm.get_winner() == 1: player1_wins += 1 print("{} won {}/{} against {}.".format(agt1.name, player1_wins, self.G, agt2.name)) print(np.reshape(sm.game.board, (boardsize, boardsize))) print(sm.game.executedMoves) return player1_wins
def play_series(self, agt1, agt2): player1_wins = 0 for i in range(self.G): print("[{}>{}]".format("-" * i, "." * (self.G - i - 1)), end="\r") game = StateManager(size=self.get_size()) if i == self.G - 1: print_game = input("Print the last game? (Y/n): ") else: print_game = "n" move_counter = 0 while not game.is_game_over(): game_state = game.get_nn_state() player_turn = game_state[0] if player_turn == 1: predictions = agt1.predict(game_state) else: predictions = agt2.predict(game_state) legal_moves = game.get_legal_moves() if move_counter < topp_random_moves * 2: move = random.choice(legal_moves) else: move = legal_moves[np.argmax(predictions)] game.move(move) move_counter += 1 if print_game.lower() == "y": game.print_board() if game.get_winner() == 1: player1_wins += 1 print("{} won {}/{} against {}.".format(agt1.name, player1_wins, self.G, agt2.name))