当我的乌龟前面的空地上有一只乌龟时,我试图让乌龟转身走开。我有一些代码
to setup
clear-all
reset-ticks
;random-seed 13
let xcord one-of (list min-pxcor max-pxcor)
crt 3 [
setxy xcord min-pycor + (random (max-pycor - min-pycor))
set size 4
set color yellow
pen-down
]
ask turtles [
(ifelse
xcor = min-pxcor [facexy max-pxcor ycor]
[facexy min-pxcor ycor]
)
]
end
to go
tick
ask turtles [search]
end
to search
ifelse any? turtles-on patch-ahead 1 [
set pcolor blue
right 90
][right (random 21) - 10]
;step forward
fd 1
end
但问题是,即使没有,海龟似乎也能检测到前方有海龟?我这样做是为了当前面有乌龟时补丁会变成蓝色。你可以看到上面的蓝色方块周围肯定没有任何海龟。我一定错过了一些东西,但我不知道是什么。我正在使用 netlogo 6.3.0
一个可能的原因是乌龟在数自己。
patch-ahead
在距离为 1 的航向方向上寻找小块上的海龟。小块的宽度(或高度)为 1,但如果小海龟在小块上“寻找”对角线,则该距离可能大于1. 因此,turtles-on patch-ahead 1
将报告一个包含调用海龟本身的主体集。
如果您希望乌龟不包含在代理集中,您可以使用 other
报告器。
to search
ifelse any? other turtles-on patch-ahead 1 [
set pcolor blue
right 90
][right (random 21) - 10]
;step forward
fd 1
end