Netlogo:在半径范围内询问补丁,但不询问中心补丁本身

时间:2019-10-08 21:38:10

标签: netlogo

我想使用半径范围内的补丁制作东西,但不包括带有代理本身的补丁,即中心补丁,因此我从模型库中修改了Myself示例:

to splotch
  ask turtles [
    ask one-of patches in-radius 2 with [not any? turtles-here] [
      set pcolor [ color ] of myself
    ]
  ]
  tick
end

但是此代码还排除了其他带有乌龟的补丁,因此应该类似

to splotch
  ask turtles [
    ask one-of patches in-radius 2 [not self][
      set pcolor [ color ] of myself
    ]
  ]
  tick
end

但是此代码无法正常工作,我不知道该怎么做。

1 个答案:

答案 0 :(得分:2)

您需要other原语。但是,other排除了相同类型的代理,并且您希望乌龟排除补丁。因此,您需要获取ask补丁的相关补丁。这是一种方法:

other

如果您想要更像执行操作的方式,则可以创建一个本地变量来存储补丁,然后像这样排除它:

to testme
  clear-all
  create-turtles 3 [setxy random-xcor random-ycor]
  splotch
end

to splotch
  ask turtles
  [ let mycolor color
    ask patch-here
    [ ask other patches in-radius 4
      [ set pcolor mycolor
      ]
    ]
  ]
end