Ejemplo n.º 1
0
    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