Возвращение списка, который был добавлен из функции - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть доска (представлена ​​списком списков), где я играю в Отелло.Смысл игры в том, чтобы перевернуть как можно больше фигур противостоящего игрока.

Здесь я пытаюсь записать позиции на доске, где я могу перевернуть.Каждая позиция представлена ​​координатой, которая указывает строку и столбец.В общем случае, вход - это место на доске, где находится фигура игрока, и функция проверяет правильность ходов (которые обнаруживают смежные фигуры противника), а вывод должен представлять собой список позиций, в которых можно перевернуть фигуры противника.

Однако моя проблема в том, что я не могу добавить эти позиции в список и вернуть их.Каждый раз, когда я пытаюсь вернуться, я получаю «[]», что означает, что он ничего не делал, или «None», в зависимости от того, где я поставил отступ.

Хотите знать, почему значения координат не сохраняются.Соответствующая часть функции находится сразу после части «if valid:», где я записываю все эти позиции.

def findOppose(board, colorPlaying, colorAgainst, piece, row, col):
    ## find opposing pieces and turn them into colorPlaying
    valid = False
    opp = []
    pieces = [piece]
    try:
        if board[piece[0]+row][piece[1] + col] == colorAgainst:
            if (piece[1] + col == 0) or (piece[1] + col == 7) or (piece[0] + row == 0) or (piece[0] + row == 7):
                next
            else:
                piece[0], piece[1] = piece[0]+row, piece[1] + col
            ## check if there is colorPlaying surrounding these pieces otherwise would flip everything
                while board[piece[0]][piece[1]] != colorPlaying:
                    ## no surrounding colorPlaying piece
                    ## if black, example would be BWW. but need BWWB
                    if board[piece[0]+row][piece[1]+col] == " .":
                        break
                    ## reached boundaries of board
                    elif (piece[1] + col < 0) or (piece[1] + col > 7) or (piece[0] + row < 0) or (piece[0] + row > 7):
                        break
                    elif board[piece[0]][piece[1]] == colorPlaying:
                        valid = True
                        break
                    else:
                        board[piece[0]][piece[1]] = board[piece[0]+row][piece[1]+col]
            ## flip
                if valid:
                    while board[piece[0]][piece[1]] == colorAgainst:
                        ## there is an issue of directly changing here as the next findOppose() will
                        ## continue where the board is left off which means other pieces will change incorrectly
                            # board[piece[0]][piece[1]] = colorPlaying
                        if board[piece[0]][piece[1]] == colorAgainst:
                            opp_piece = piece[0],piece[1]
                            opp.append(opp_piece)  ## append to list of all opposing pieces
                        if board[piece[0]+row][piece[1] + col] == colorAgainst: ## keep progressing through
                            board[piece[0]][piece[1]] = board[piece[0]+row][piece[1]+col]
                        else:
                            break
    except IndexError:
        pass
    return opp
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...