希望您能帮助我。
我尝试测试半径 100 内的一个补丁是否是黄色的,但似乎不起作用。 事实上,这个条件似乎总是错误的,尽管事实并非如此......
ifelse ([pcolor] of patches in-radius 100 = yellow)
[do something]
[do something else]
解决办法是什么? 谢谢。
最佳答案
首先,您的代码不起作用的原因:半径100内的补丁的[pcolor]将返回该半径内所有补丁的颜色作为列表。例如,该列表可能类似于
[135 135 105 105 105 85 75 75 65 25 65 75 15]
除了更长的时间。这些数字是 NetLogo's color numbers 。 yellow
是数字 45。所以,基本上,你的条件变为
[135 135 105 105 105 85 75 75 65 25 65 75 15] = 45
显然,那个巨大的列表与数字不是一回事,因此,你总是会得到错误的结果。
要修复它,您需要使用 any?
,像这样:
ifelse (any? patches in-radius 100 with [ pcolor = yellow ]) ...
patches in-radius 100
为您提供该半径内所有补丁的代理集。 with [ pcolor = Yellow ]
仅保留那些黄色的色 block 。 any?
只是检查代理集中是否有任何内容。
关于colors - 测试半径内色 block 的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26187573/