首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MineSweeper递归充水清算板

MineSweeper递归充水清算板
EN

Stack Overflow用户
提问于 2019-05-11 06:08:48
回答 1查看 49关注 0票数 0

我在创建一个用于扫雷的递归函数时遇到了麻烦,当选择一个空格时,所有相邻的空格都会显示出来。我使用两个游戏板,它们是2D列表的形式--一个是为用户隐藏的矿山位置生成的数字,另一个是用显示的“被覆盖的”图块填充的。

目前我有一个泛洪填充函数,它只清除棋盘,而不是像预期的那样,它会显示所有的空格,直到它遇到一个标有整数或炸弹的字段。

我试图传入未显示的线路板、选定的行、选定的列和显示的线路板。

尝试让显示的电路板用未显示的电路板上的字段替换空字段。

代码语言:javascript
复制
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时的预期输出

代码语言:javascript
复制
    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 . . . . . . #
   ###################

输出的是什么

代码语言:javascript
复制
     1 2 3 4 5 6 7 8 
     # # # # # # # # # # 
  1  #                  #
  2  #                  #
  3  #                  #
  4  #                  #
  5  #                  #
  6  #                  #
  7  #                  #
  8  #                  #
     # # # # # # # # # #
代码语言:javascript
复制
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-11 06:31:28

假设notDisplayed包含您想要显示的字符并将其放入显示的板中,这应该是可行的

代码语言:javascript
复制
    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字符以了解是否应该递归,否则将使所有屏幕空白。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56085384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档