测试半径中补丁的颜色
问题描述:
我希望你能帮助我。测试半径中补丁的颜色
我尝试测试半径100中的一个修补程序是否为黄色,但看起来不起作用。 事实上,情况似乎总是假的,虽然它不是这样的......
ifelse ([pcolor] of patches in-radius 100 = yellow)
[do something]
[do something else]
什么解决的办法? 谢谢。
答
首先,你的代码不工作的原因:[pcolor] of patches in-radius 100
将返回该半径内所有补丁的颜色列表。例如,该列表可能看起来像
[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 ]
只保留那些黄色的补丁。 any?
只是检查代理集中是否有任何内容。
那么清楚,如此之快! 谢谢sooooo多! (我不能因为我的声望而“投票”你的帖子,太糟糕了,sry:/) – 2014-10-03 23:02:37
很高兴帮助!不用担心投票。感谢您将它标记为正确!帮助人们跟踪已经回答的内容。 – 2014-10-04 18:00:38