示例#1
0
    def play_game(player1: Agent, player2: Agent) -> int:
        """
        Agent1 plays first, agent2 plays second
        :param player1: an AI agent
        :param player2: an AI agent
        :returns: the winner; 1 = agent1, 2 = agent2, 0 = tie
        """
        data = GameData()
        board = data.game_board
        while True:
            col = player1.get_move(data)
            row = board.get_next_open_row(col)
            board.drop_piece(row, col, 1)
            if board.winning_move(1, row, col):
                return 1

            data.turn += 1
            data.turn = data.turn % 2

            col = player2.get_move(data)
            row = board.get_next_open_row(col)
            board.drop_piece(row, col, 2)

            if board.winning_move(2, row, col):
                return 2

            if board.tie_move():
                return 0
示例#2
0
    def play_game(player1: Agent, player2: Agent) -> int:
        """
        Agent1 plays first, agent2 plays second
        :param player1: an AI agent
        :param player2: an AI agent
        :returns: the winner; 1 = agent1, 2 = agent2, 0 = tie
        """
        data = GameData()
        board = data.game_board
        time_p1 = time_p2 = 0
        while True:
            start = time.process_time()
            col = player1.get_move(data)
            time_p1 += time.process_time() - start
            row = board.get_next_open_row(col)
            if not isinstance(row, int):
                #TODO - shouldn't happen
                print("------------ Shouldn't happen: row:",row,", col:", col)
                board.print_board()
                return 0
            data.last_move_row.append(row)
            data.last_move_col.append(col)
            board.drop_piece(row, col, 1)
            if board.winning_move(1, row, col):
                return 1, time_p1, time_p2

            data.turn += 1
            data.turn = data.turn % 2

            start = time.process_time()
            col = player2.get_move(data)
            time_p2 += time.process_time() - start
            row = board.get_next_open_row(col)
            data.last_move_row.append(row)
            data.last_move_col.append(col)
            board.drop_piece(row, col, 2)

            if board.winning_move(2, row, col):
                return 2, time_p1, time_p2

            if board.tie_move():
                return 0, time_p1, time_p2