У меня есть доска (представлена списком списков), где я играю в Отелло.Смысл игры в том, чтобы перевернуть как можно больше фигур противостоящего игрока.
Здесь я пытаюсь записать позиции на доске, где я могу перевернуть.Каждая позиция представлена координатой, которая указывает строку и столбец.В общем случае, вход - это место на доске, где находится фигура игрока, и функция проверяет правильность ходов (которые обнаруживают смежные фигуры противника), а вывод должен представлять собой список позиций, в которых можно перевернуть фигуры противника.
Однако моя проблема в том, что я не могу добавить эти позиции в список и вернуть их.Каждый раз, когда я пытаюсь вернуться, я получаю «[]», что означает, что он ничего не делал, или «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