NetLogo-如何获得乌龟面对的所有补丁?

时间:2018-11-26 16:11:41

标签: netlogo

如何获取包含乌龟面临的所有补丁的补丁集?

我知道提前补丁会报告特定距离的补丁。但是,如果我想沿这个方向获取所有补丁,而不是具有特定距离的单个补丁,该怎么办?

1 个答案:

答案 0 :(得分:2)

您可以做的是hatch一只乌龟,然后将其forward移动到世界的尽头,并添加它穿过的所有斑块。

有一个可见的版本可以看到这种方法:

to testme
  clear-all
  create-turtles 1 [setxy random-xcor random-ycor]
  ask one-of turtles
  [ set pcolor red
    hatch 1
    [ while [can-move? 1]
      [ forward 1
        set pcolor red
      ]
      die
    ]
  ]
end

要实际制作补丁集版本,您需要从当前补丁开始,并在阴影龟移过它们时添加补丁。尝试此操作以获取过程版本并演示如何使用它:

turtles-own [ my-path ]

to testme
  clear-all
  create-turtles 1 [setxy random-xcor random-ycor]
  ask one-of turtles
  [ set my-path get-patches-forward self
    print my-path
  ]
end

to-report get-patches-forward [ #me ] ; turtle procedure
  let front-patches patch-here
  hatch 1
  [ while [can-move? 1]
    [ forward 1
      set front-patches (patch-set front-patches patch-here)
    ]
    die
  ]
  report front-patches
end

如果包裹了世界,这将返回错误的答案,因为孵出的乌龟可以无限期地前进。相反,您需要检查其坐标,而不是依靠can-move?基元。