【问题标题】:bounce turtle from green patches in netlogo world从 netlogo 世界的绿色斑块中弹跳乌龟
【发布时间】:2017-07-21 10:58:33
【问题描述】:

我正在尝试实现反弹龟逻辑。当任何乌龟向绿色斑块移动时,我想设置turtles head = set head ( - head)

我的代码是:

ask turtles [ask turtles [
  ifelse [pcolor] of patch-ahead 2 !=[move]  
[ set heading ( - heading) ]

问题:但它给出了错误(OF 预期输入是海龟代理集或补丁代理集或海龟或补丁,但得到了 NOBODY)。 如何解决这个错误?

【问题讨论】:

  • 如果你有ask turtles [ ask turtles [...] ],你要求代码单独遍历所有的海龟,并让它们要求所有的海龟做某事。所以如果你有 20 只海龟,那么每只海龟都会做 20 次。
  • 您是否打算set heading (- heading) 将乌龟转过来,使其面向另一个方向?该代码没有这样做,而是反映了海龟在 y 轴上的航向。如果你想转身,rt 180 会这样做。

标签: netlogo


【解决方案1】:

您的代码示例中似乎有许多拼写错误,但您的直接问题的答案是,如果前面 2 的补丁位于世界之外,patch-ahead 2 将返回 nobody,因为有没有这样的补丁。所以,当你得到nobody 时,你的乌龟就非常接近世界的边缘了。我假设你也想在那种情况下转身,所以你的 ifelse 可能看起来像

ifelse (patch-ahead 2 != nobody and [pcolor] of patch-ahead 2 != green)
  [move]
  [set heading (- heading)]

请注意,您需要在检查颜色之前检查nobody

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多