Я пытаюсь создать Сапер с массивами Python и успешно сгенерировал доску и бомбы.Однако у меня возникли трудности с "нулевой рекурсией" тральщика.Если вы выберете 0 в Minesweeper, он покажет все соседние плитки, а если любой из соседних плиток будет 0, он покажет все смежные плитки с этим 0 и так далее.В конечном счете, по краям раскрытых тайлов не может быть нулей, так как будут показаны все смежные тайлы с выявленными нулями.Мой алгоритм рекурсии превышает максимальную глубину рекурсии Python.Вот код:
def zero():
for y in range(height):
for x in range(width-1):
if hidden[y][x] == 0 and (hidden[y+1][x] == '?' or hidden[y-1][x] == '?' or hidden[y+1][x+1] == '?' or hidden[y-1][x-1] == '?' or hidden[y+1][x-1] == '?' or hidden[y-1][x+1] == '?' or hidden[y][x+1] == '?' or hidden[y][x-1] == '?'):
if y+1 < height:
hidden[y+1][x] = board[y+1][x]
if y-1 >= 0:
hidden[y-1][x] = board[y-1][x]
if y+1 < height and x+1 < width:
hidden[y+1][x+1] = board[y+1][x+1]
if y-1 >= 0 and x+1 < width:
hidden[y-1][x+1] = board[y-1][x+1]
if y-1 >= 0 and x-1 >= 0:
hidden[y-1][x-1] = board[y-1][x-1]
if x+1 < width:
hidden[y][x+1] = board[y][x+1]
if x-1 >= 0:
hidden[y][x-1] = board[y][x-1]
if y+1 < height and x-1 >= 0:
hidden[y+1][x-1] = board[y+1][x-1]
zero()
Код проверяет, есть ли обнаруженные нули с какими-либо скрытыми соседними плитками в массиве.(Скрытые плитки обозначены символом «?»).Если есть какие-либо нули, которые соответствуют этим параметрам, будут показаны все соседние плитки к нулю.Затем он перезапускает функцию.Если во всем массиве нет нулей, соответствующих параметрам, цикл функции будет прерван, и код продолжит выполнение.Это превышает предел рекурсии.Какие-либо предложения?