回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我正在用python开发一个扫雷舰克隆,但在使用reveal函数时遇到了困难。目前,我收到以下无限错误消息:</p>
<pre><code>File "/Users/home/Desktop/minesweeper.py", line 79, in uncover_cells
uncover_cells(i - 1, j, board)
</code></pre>
<p>其中<code>uncover_cells</code>的定义如下(EDIT:在post结尾添加了更简单的问题示例):</p>
^{pr2}$
<p>最初的电话是:</p>
<pre><code>b, locs = setup_game(100, 100, 50)
uncover_cells(0, 0, b)
</code></pre>
<p>我不认为递归限制已经达到,并且担心可能有逻辑错误。如有任何意见,我们将不胜感激。在</p>
<p>其他可能很重要的代码:<code>board</code>的每个元素都是<code>Cell</code>类型:</p>
<pre><code>class Cell:
def __init__(self, isMine, loc, visited = False, flagged = False):
self.visited = visited # think of visited as 'uncovered'
self.flagged = flagged
self.isMine = isMine
self.x = loc[0]
self.y = loc[1]
self.label = 0
</code></pre>
<p>板的设置如下:</p>
<pre><code>def setup_game(length, width, n_mines):
idx = [(i, j) for j in range(width) for i in range(length)]
board = [[None for j in range(width)] for i in range(length)]
mine_locs = random.sample(idx, n_mines)
for i, j in idx:
if (i, j) in mine_locs:
board[i][j] = Cell(isMine = True, loc = (i, j))
else:
board[i][j] = Cell(isMine = False, loc = (i, j))
return board, mine_locs
</code></pre>
<p>编辑:以下是我的问题最简单的例子:</p>
<pre><code>def simple_fill(i, j, b):
length = len(b)
width = len(b[0])
if i > -1 and j > -1 and i < length and j < width and b[i][j] != 1:
b[i][j] == 1
simple_fill(i + 1, j, b)
simple_fill(i - 1, j, b)
simple_fill(i, j + 1, b)
simple_fill(i, j - 1, b)
simple_fill(i + 1, j + 1, b)
simple_fill(i + 1, j - 1, b)
simple_fill(i - 1, j + 1, b)
simple_fill(i - 1, j - 1, b)
return
</code></pre>
<p>原始呼叫:</p>
<pre><code>b = [[0 for j in range(100)] for i in range(100)]
simple_fill(0, 0, b)
</code></pre>