2014-10-03 81 views
2

我希望你能帮助我。测试半径中补丁的颜色

我尝试测试半径100中的一个修补程序是否为黄色,但看起来不起作用。 事实上,情况似乎总是假的,虽然它不是这样的......

ifelse ([pcolor] of patches in-radius 100 = yellow) 
[do something] 
[do something else] 

什么解决的办法? 谢谢。

回答

4

首先,你的代码不工作的原因:[pcolor] of patches in-radius 100将返回该半径内所有补丁的颜色列表。例如,该列表可能看起来像

[135 135 105 105 105 85 75 75 65 25 65 75 15]

除了方式方法更长。这些数字是NetLogo's color numbersyellow编号为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?只是检查代理集中是否有任何内容。

+1

那么清楚,如此之快! 谢谢sooooo多! (我不能因为我的声望而“投票”你的帖子,太糟糕了,sry:/) – 2014-10-03 23:02:37

+0

很高兴帮助!不用担心投票。感谢您将它标记为正确!帮助人们跟踪已经回答的内容。 – 2014-10-04 18:00:38