“netlogo”怎么是“any”? Turtles-on patch-ahead 1' 命令有效吗?

问题描述 投票:0回答:1

当我的乌龟前面的空地上有一只乌龟时,我试图让乌龟转身走开。我有一些代码

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

netlogo
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.