如何获得补丁来计算通过它的海龟

时间:2019-06-28 08:45:16

标签: netlogo

我想让补丁计算站立在它们上面的海龟的数量。理想的情况是这样的事件:

if turtle-lands-on-me [add one to count]

因为海龟可能会离开并返回并被计数两次(这是我想要的),并且它可以避免计算静止不动两次或以上(不希望)的海龟。有什么办法可以做到这一点?

谢谢!

1 个答案:

答案 0 :(得分:3)

您需要的是每个补丁的变量(我在下面将其称为“着陆”)。以下代码假定您想了解每个时间步上登陆的补丁,但是忽略了它所传递的补丁。它还仅在乌龟根据要求更改补丁的位置更新计数,并用计数标记补丁。

patches-own [landed]

to setup
  create-turtles 20
  [ setxy random-xcor random-ycor
  ]
end

to go
  ask turtles
  [ let old-patch patch-here
    set heading random 360
    forward one-of [0 0.5 1 3]
    if old-patch != patch-here
    [ ask patch-here
      [ set landed landed + 1
      ]
    ]
  ]
  ask patches [set plabel landed]
end

问题在于,乌龟可以在一个时间步中越过多个斑块。您可以在示例模型中看到那些移动了3只的乌龟。如果您还想要它们,则需要执行类似NetLogo模型库中的“视线”模型。

相关问题