我在创建一个用于扫雷的递归函数时遇到了麻烦,当选择一个空格时,所有相邻的空格都会显示出来。我使用两个游戏板,它们是2D列表的形式--一个是为用户隐藏的矿山位置生成的数字,另一个是用显示的“被覆盖的”图块填充的。
目前我有一个泛洪填充函数,它只清除棋盘,而不是像预期的那样,它会显示所有的空格,直到它遇到一个标有整数或炸弹的字段。
我试图传入未显示的线路板、选定的行、选定的列和显示的线路板。
尝试让显示的电路板用未显示的电路板上的字段替换空字段。
def flood(displayedBoard, row, col, notDisplayed):
mines = mineLocations(notDisplayed)
if displayedBoard[row][col] != " ":
displayedBoard[row][col] = " "
if row != 1:
flood(displayedBoard,row-1,col,notDisplayed)
if row != maxRow-1:
flood(displayedBoard,row+1,col,notDisplayed)
if col != 1:
flood(displayedBoard,row,col-1,notDisplayed)
if col != maxCol:
flood(displayedBoard,row,col+1,notDisplayed)选择空格4,2时的预期输出
1 2 3 4 5 6 7 8
# # # # # # # # # #
1 # . . . . . . . . #
2 # 1 1 1 1 . . . . #
3 # 2 . . . . #
4 # 1 . . . . . #
5 # 1 . . . . . #
6 # 1 . . . . . #
7 # 1 . . . . . . #
8 # 1 1 . . . . . . #
###################输出的是什么
1 2 3 4 5 6 7 8
# # # # # # # # # #
1 # #
2 # #
3 # #
4 # #
5 # #
6 # #
7 # #
8 # #
# # # # # # # # # #发布于 2019-05-11 06:31:28
假设notDisplayed包含您想要显示的字符并将其放入显示的板中,这应该是可行的
if row < 1 or row >= maxRow:
return
if col < 1 or col >= maxCol:
return
if displayedBoard[row][col] == " ":
return
displayedBoard[row][col] = notDisplayed[row][col]
if notDisplayed[row][col] == " ":
flood(displayedBoard,row-1,col,notDisplayed)
flood(displayedBoard,row+1,col,notDisplayed)
flood(displayedBoard,row,col-1,notDisplayed)
flood(displayedBoard,row,col+1,notDisplayed)问题出在你的测试条件。您必须测试notDisplayed字符以了解是否应该递归,否则将使所有屏幕空白。
https://stackoverflow.com/questions/56085384
复制相似问题