扫雷器在2D列表上递归洪水填充的问题

时间:2019-05-10 18:24:04

标签: python-3.x recursion minesweeper

在弄清楚如何创建将填充所有空白字段并在2D列表游戏板上显示我的线索的递归函数时遇到麻烦。我了解该功能应该如何运行,但似乎仍然无法解决问题。

我一直试图让我的函数调用递归调用,直到它在行中找到整数为止,然后继续下一行。 我知道我应该把我的线索告诉董事会,以便递归调用知道何时到达整数,只是不确定如何去做。

目前这就是我所拥有的;

def island(board, row, col):


    if board[row][col] != " ":
        board[row][col] = " "


        if row != 1:
            island(board,row-1,col)

        if row != maxRow:
            island(board,row+1,col)

        if col != maxCol:
            island(board,row,col+1)

        if col != 1:
            island(board,row,col-1)






上面发布的代码的结果将按照当前代码的要求清除整个电路板

播放第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 . . . . . . #
   ###################

播放第4行第2列时的实际结果;

        1 2 3 4 5 6 7 8 
     # # # # # # # # # # 
  1  #                  #
  2  #                  #
  3  #                  #
  4  #                  #
  5  #                  #
  6  #                  #
  7  #                  #
  8  #                  #
     # # # # # # # # # #

1 个答案:

答案 0 :(得分:0)

您只会在洪水填充中向上和向左移动。您还需要左右移动。

    if row != max_row: # Look down
        island(board,row+1,col)
    if col != max_col: # Look right
        island(board,row,col+1)