如何获取包含乌龟面临的所有补丁的补丁集?
我知道提前补丁会报告特定距离的补丁。但是,如果我想沿这个方向获取所有补丁,而不是具有特定距离的单个补丁,该怎么办?
答案 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?
基元。