我认为你应该修改你的递归算法:仅在有盖瓷砖上操作
查找相邻矿井数
如果有,显示一个带编号的图块并停止递归
如果没有,则显示一个空白磁贴并重复
你可能还应该考虑如何储存你的董事会。目前,您使用线路板的表示来存储数据。最好创建一个tile类,并有一个相应地打印电路板的函数。在
至于相邻地雷的数量:地雷永远不会改变,所以你不必用一个函数一遍又一遍地确定每一块瓷砖的数量。在布置好地雷并存储信息后,只需确定一次就足够了。(如果您使用一个类来处理平铺,我会将信息存储在那里。)
总之,下面是一个使用字符串标识加上一组元组位置来表示地雷的实现:Covered = ' -'
Flagged = '-P-'
board = []
for x in range(12):
board += [[Covered] * 12]
mines = set([
(1, 12), (8, 2), (5, 5), (9, 4), (11, 11), (0, 9),
(5, 5), (6, 7), (9, 9), (9, 10), (11, 5)
])
def count_mines(a, b):
c = 0
if (a - 1, b - 1) in mines: c += 1
if (a + 0, b - 1) in mines: c += 1
if (a + 1, b - 1) in mines: c += 1
if (a - 1, b + 0) in mines: c