2012-10-19 92 views
4

好吧,我正在寫一個程序,將通過網格運行,並找到商會。對於每個白色的小室,它都會填充一種顏色。只要這個點旁邊的白色空間也是白色的,它就會繼續填充顏色,直到空間被關閉。然後它繼續掃描,直到找到一個新的白色房間。這裏是網格的一個例子: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

回答

2

看起來你正在測試的邊界條件xy當你應該測試rowcol代替

是什麼xy甚至應該在這裏做?

+0

好的謝謝你的幫助,它的填充更多一點,但仍然無法正常工作100%我編輯了代碼以反映更改。 – user1758231