python - (HOMEWORK)需要帮助我的网格递归函数

时间:2012-10-19 04:35:34

标签: python recursion grid

好的,所以我正在编写一个程序,它将通过网格运行,并找到腔室。对于每个白色的腔室,它用一种颜色填充它。只要此位置旁边的白色空间也是白色,它就会继续填充颜色,直到空间被挡住。然后它继续扫描,直到找到一个新的白色腔室。以下是网格的示例:http://imgur.com/uDzzq。这是迄今为止的代码......

x = 0
y = 0

if cave[row][col] != AIR:
    return
if cave[row][col] == WATER:
    return

if cave[row][col] == AIR:
    cave[row][col] = WATER
    grid.fill_cell(row, col, color)

if row <= length: #RIGHT
    fill(cave, row+1, col, color)
    x+=1
if col <= length: #DOWN
    fill(cave, row, col+1, color)
    y+=1
if row >= 0: #LEFT
    fill(cave, row-1, col, color)
    x-=1
if col >= 0: #UP
    fill(cave, row, col-1, color)
    y-=1

以及这里被称为

for row in range(length) :
    for col in range(length):
        if(cave[row][col]):
            if(cave[row][col]) == AIR:
                color = grid.get_cur_color()
                fill(cave, row, col, color)
                chambers += 1
                grid.get_next_color()

我遇到的问题是这只适用于非常简单的洞穴。当我尝试运行没有外围墙壁的东西时,我会遇到错误。有谁能发现我的问题所在?这是更复杂的洞穴的例子,以及它最终应该如何看待:http://imgur.com/41ptc

1 个答案:

答案 0 :(得分:2)

在您应该测试xy时,您似乎正在测试rowcol的边界条件

xy甚至应该在这里做什么?