用Python编写的My Minesweeper程序揭示了整个板块 - 递归问题

时间:2013-11-23 11:23:08

标签: python recursion python-3.x minesweeper

我正在尝试使用Python编写扫雷程序。除了我的层叠揭示之外,一切都很好。这就是我所拥有的:

def rippleEffect(self, r, c):
     if self.ActualBoard[r][c] == 0:
      self.GameBoard[r][c] = self.ActualBoard[r][c]
      rcchar = str(sum(1
                      for rr in (r-1, r, r+1)
                      for cc in (c-1, c, c+1)))
      for rr in (r-1, r, r+1):
        for cc in (c-1, c, c+1):
          if self.ActualBoard[rr][cc] != 'M' and self.ActualBoard[rr][cc] > 0:
            self.GameBoard[rr][cc] = self.ActualBoard[rr][cc]
          else:
            try:
              if (rr,cc) != (r,c) and self.GameBoard[rr][cc] == 'H':
                self.rippleEffect(rr, cc)
            except IndexError: 
              pass

ActualBoard包含列出所有内容的列表,即:

[[0, 1, 1, 1], [0, 1, M, 1], [0, 1, 1, 1], [0, 0, 0, 0]]

对于一个带有一个矿井的4x4电路板。

GameBoard也包含一系列列表,但是当游戏开始时它会是这样的:

[['H','H', 'H', 'H'], ['H','H', 'H', 'H'], ['H','H', 'H', 'H'], ['H','H', 'H', 'H']]

1 个答案:

答案 0 :(得分:0)

想一想:r == 0c == 0self.GameBoard[r-1][c-1]会是什么?更具体地说,它会引发IndexError吗?