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

4

1 に答える 1

2

あなたがテストしているように見えます、そしてあなたがテストxyなければならないときの境界条件のためにrowそしてcol代わりに

ここで何をxし、yさらには何をすることになっていますか?

于 2012-10-19T05:10:03.317 に答える