【发布时间】:2020-03-14 08:22:15
【问题描述】:
在 pygame 中创建扫雷游戏,运行代码时出现递归错误。我该如何减轻这种情况?这是我的代码,用于检查单击的网格正方形是否为空,如果是,则显示该网格正方形以及所有相邻的正方形。出现此错误的部分如下:
def reveal_empty(rn,c, grid, revealed,box):
if grid[rn][c] != '0' and grid[rn][c] != '*':
revealed[rn][c] = True
if grid[rn][c] == '0':
revealed[rn][c] = True
# change row above
if rn-1 > -1:
r = grid[rn-1]
if c-1 > -1:
if not r[c-1] == '*':
revealed[rn-1][c-1] = True
reveal_empty(rn-1,c-1, grid, revealed,box)
if not r[c] == '*':
revealed[rn-1][c] = True
reveal_empty(rn-1,c, grid, revealed,box)
if c+1 < 10:
if not r[c+1] == '*':
revealed[rn-1][c+1] = True
reveal_empty(rn-1,c+1, grid, revealed,box)
#change same row
r = grid[rn]
if c-1 > -1:
if not r[c-1] == '*':
revealed[rn][c-1] + True
reveal_empty(rn,c-1, grid, revealed,box)
if c+1 < 10:
if not r[c+1] == '*':
revealed[rn][c+1] = True
reveal_empty(rn,c+1, grid, revealed,box)
#change row below
if rn+1 < 11:
r = grid[rn + 1]
if c-1 > -1:
if not r[c-1] == '*':
revealed[rn+1][c-1] = True
reveal_empty(rn+1,c-1, grid, revealed,box)
if not r[c] == '*':
revealed[rn+1][c] = True
reveal_empty(rn+1,c, grid, revealed,box)
if c+1 < 11:
if not r[c+1] == '*':
revealed[rn+1][c+1] = True
reveal_empty(rn+1,c+1, grid, revealed,box)
【问题讨论】:
-
您收到:
RuntimeError: maximum recursion depth exceeded吗? -
欢迎来到 StackOverflow。见minimal, reproducible example。在您发布 MRE 代码并准确说明问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中并重现您指定的问题。此发布没有输入,没有跟踪输出,也没有驱动程序显示错误。您是否希望我们在没有参考的情况下检查您的代码?
-
@Prune 抱歉,我不想让我的整个代码超载,我将在下面发布。
-
@Prune 我无法添加整个代码,因为它太长了
-
再次阅读我的评论:我们特别要求您不要发布您的整个代码。
标签: python python-3.x error-handling pygame