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