Debugging NetLogo:围绕补丁块创建半月形?
我想在我的斑点周围创建一个“半月”(黄色),由半径函数(蓝色)创建 我想我可以简单地用Debugging NetLogo:围绕补丁块创建半月形?,debugging,netlogo,Debugging,Netlogo,我想在我的斑点周围创建一个“半月”(黄色),由半径函数(蓝色)创建 我想我可以简单地用半径值表示蓝色,用半径(值+1)表示黄色。然后将所有黄色面片与中间黑色面片的pycor=0(即,等于或高于中心)的补丁 针对扩展版本进行了修改: to setup-patches ask n-of 5 patches [ ask patches with [pycor >= [pycor] of myself] in-radius 2 [ set pcolor yellow
半径值表示蓝色,用半径(值+1)
表示黄色。然后将所有黄色面片与中间黑色面片的pycor
请问,如何将此条件写入代码?还是有更简单的解决办法?谢谢大家!
我的代码:
to setup
clear-all
setup-patches
end
to setup-patches
ask patch 0 0 [
set pcolor red
ask patches in-radius 2 [
set pcolor yellow
]
ask patches in-radius 1 [ ; put the blue after yellow to be on the top
set pcolor blue
]
]
ask patches with [pcolor = yellow] [
let ycor_center [pycor] of patch 0 0 ; how to write this condition?
if [pycor] of patch-here > ycor_center [
set pcolor green
]
]
end
请参阅NetLogo编程指南。坐标在开头解释(在代理部分)。当您提到补丁5 3时,您指的是pxcor=5和pycor=3的补丁。也就是说,修补程序0已经位于中心
to setup
clear-all
setup-patches
end
to setup-patches
ask patch 0 0 [
set pcolor red
ask patches with [pycor >= 0] in-radius 2 [
set pcolor yellow
]
ask patches with [pycor >= 0] in-radius 1 [ ; put the blue on top
set pcolor blue
]
]
end
我已经修改了您的代码以使用此事实,并将着色限制为pycor>=0(即,等于或高于中心)的补丁
针对扩展版本进行了修改:
to setup-patches
ask n-of 5 patches [
ask patches with [pycor >= [pycor] of myself] in-radius 2 [
set pcolor yellow
]
ask patches in-radius 1 [
set pcolor blue
]
]
end
修补程序的运行代码不仅位于0坐标中
to setup
clear-all
setup-patches
end
to setup-patches
ask n-of 5 patches [
set pcolor red
]
ask patches with [pcolor = red] [
let pycor_red pycor ; create variable refering the position of one patch with pcolor = red
ask patches with [pycor >= pycor_red] in-radius 2 [
set pcolor yellow
]
ask patches in-radius 1 [
set pcolor blue
]
]
end
导致:
再次感谢@JenB!;))看我修改过的答案。你永远不需要把补丁变成红色,它只是被用作一个标记(然后它们变成蓝色)。这是一个很好的机会来使用我自己
,它指的是询问者(在本例中,依次使用5个n个
补丁),我正在使用我自己的[pycor]来避免所有变红和分配一个临时变量代码。再次感谢!这太棒了——我确信有更简单的解决方案,我完全忘记了(老实说,我从来没有真正理解过)使用“我自己”。我一定会记住的!