def floodfill(col,rowb,neigh,bombpos):
#neigh is number of bombs (neighbors) around the position (row,col)
try:
neigh[rowb][col]
bombpos[rowb][col]
visit[rowb][col]
except IndexError:
return
#if the position is an isolated position, i.e. there are no bombs adjacent to it;
if neigh[rowb][col] == 0:
pygame.draw.rect(screen, (55, 55, 55), (1 + col * 30, 1 + rowb * 30, 28, 28))
floodfill(col - 1, rowb, neigh, bombpos)
floodfill(col, rowb - 1, neigh, bombpos)
floodfill(col + 1, rowb, neigh, bombpos)
floodfill(col, rowb + 1, neigh, bombpos)
floodfill(col - 1, rowb-1, neigh, bombpos)
floodfill(col+1, rowb + 1, neigh, bombpos)
floodfill(col + 1, rowb-1, neigh, bombpos)
floodfill(col-1, rowb + 1, neigh, bombpos)
我试图重新创建扫雷洪水填充算法,所以我有一个洪水填充功能,我在其中递归选择邻居值为0的那些周围的所有框,这意味着他们没有触及任何炸弹。我理解为什么这是一个无限递归,并且我必须以某种方式使用一个访问矩阵来检测哪个位置已经过测试,所以我最终可以结束递归。我试过实施一次"访问"如果在递归中使用该位置,则对于位置(行,col)将切换为true的矩阵,但我根本无法使其工作。我如何在此代码中实现访问矩阵以获得在扫雷中使用的正确的填充算法?
答案 0 :(得分:1)