2013-10-15 101 views
0

我創建了一個包含多個矩形的網格。這些矩形由幾個橙色塊組成,每個矩形由白色走廊定界。如何給定矩形內的色塊

如何在給定的橙色矩形內打印色塊?

在此先感謝。

這是一個代碼開頭:

to create-yellow-patches 

ask one-of patches with [pcolor = orange] [ 
set pcolor yellow 
foreach list pxcor to max-pxcor [ ;; I don't know how to define a list from pxcor to max-pxcor 
    let x ? 
    foreach list min-pycor to max-pycor [ ;; I don't know how to define a list from min-pycor to max-pycor 
    let y ? 
    ifelse [pcolor] of patches with [pxcor = x and pycor = y ] = orange 
    [ set pcolor yellow ] 
    [ break ] ] ] ;; I don't know what is the equivalent of break in netlogo 

    foreach pxcor - 1 to min-pxcor [ ;; I don't know how to define a list from pxcor - 1 to min-pxcor 
    let x ? 
    foreach min-pycor to max-pycor [ ;; I don't know how to define a list from min-pycor to max-pycor 
    let y ? 
    ifelse [pcolor] of patches with [pxcor = x and pycor = y ] = orange 
    [ set pcolor yellow ]  
    [ break ] ] ] ;; I don't know what is the equivalent of break in netlogo 
end 

回答

1

下面是製作補丁的橙色長方形一些示例代碼:

ask patches with [pxcor >= -3 and pxcor <= 6 and pycor >= -5 and pycor <= 7] [ 
    set pcolor orange 
] 

我猜,不完全雖然回答你的問題。你已經有一些橙色補丁和一些白色補丁,這些應該以某種方式控制你想要繪製的矩形的位置......類似的東西?

UPDATE

OK,問題是更加清晰了。

有很多不同的方法可以解決這個問題。這是我能想到的最優雅的一個:

to setup 
    clear-all 
    ask patches [ 
    ifelse pxcor mod 5 = 0 or pycor mod 5 = 0 
     [ set pcolor white ] 
     [ set pcolor orange ] 
    ] 
end 

to create-yellow-patches 
    let seed one-of patches with [pcolor = orange] 
    ask seed [ turn-yellow ] 
end 

to turn-yellow ;; patch procedure 
    set pcolor yellow 
    ask neighbors4 with [pcolor = orange] [ 
    turn-yellow 
    ] 
end 

這是一個完全不同的方法比你試圖。如果你想堅持你的原始解決方案,我會建議使用while而不是foreach加上break來編寫你的循環。

+0

我有一個像橙色長方形和白色走廊的示例「交通網格」的網格。我隨機在一個橙色的矩形中放置一個黃色的補丁。事實上,我嘗試在黃色的所有橙色色塊中隨機放置黃色色塊。 – Nell

+0

答案更新了更多的代碼。 –