2013-10-15 61 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

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