NETLOGO:如果一块地有两只乌龟,我该如何让乌龟死掉?

Posted

技术标签:

【中文标题】NETLOGO:如果一块地有两只乌龟,我该如何让乌龟死掉?【英文标题】:NETLOGO: How do I make a turtle die if there are two turtles on one patch? 【发布时间】:2016-01-24 17:19:24 【问题描述】:

我想弄清楚的是,当任何一块土地上有两只乌龟时,如何让一只乌龟死掉。

这是我迄今为止一直在尝试的:

to deathbytubes
  if ask patches [show count turtles-here] >= 2
  [die]
end

我该如何解决这个问题以使其正常工作?

另外,谁能帮我弄清楚如何让乌龟在与另一只乌龟接触时死亡?

【问题讨论】:

How to kill turtles when they touch?的可能重复 ***.com/questions/34926964/… 很好地涵盖了这一点。也就是说,用 [count turtles- here >= 2][ask turtles-here [die]] 询问补丁完全符合您的要求。 @mattsap 为您的问题提供了正确答案。但是问题仍然存在:您是如何最终满足这种需求的?如果您只是想强制执行非共享位置约束,最好不要一开始就将 2 个海龟放在同一个补丁上。 【参考方案1】:

如果一块海龟超过 2 只,这将杀死所有海龟。

ask turtles with [count turtles-here >= 2] [ die]

如果补丁上只有 2 只乌龟,这只会杀死 1 只乌龟。

ask patches with [count turtles-here = 2] [ ask one-of turtles-here[die]]

如果有超过 2 只海龟,以下将起作用。基本上,你找出哪些补丁有超过 2 只乌龟,然后让其中一只乌龟杀死其他人,这样就只剩下 1 只乌龟了。

ask patches with [count turtles-here >= 2] [ ask one-of turtles-here [ ask other turtles-here[die]]]

【讨论】:

这个可以简写成ask turtles with [count turtles-here > 2] [ die ] 我已经更新了我的解决方案;但是,我认为以前的内容和您评论中的内容可能不正确。问题要求一块海龟只存在一只,如果超过 1 只,它们会杀死所有海龟

以上是关于NETLOGO:如果一块地有两只乌龟,我该如何让乌龟死掉?的主要内容,如果未能解决你的问题,请参考以下文章

从嵌套的ask中设置turtle的变量

如何检测两只乌龟是不是彼此靠近或相互接触

NetLogo - 如何显示海龟的当前坐标

我该如何解决该错误(您不能在补丁程序上下文中使用my_区域,它仅适用于乌龟)?

NetLogo-如何将平衡的化学方程式放入模型中?

新龟兔赛跑