Netlogo 让海龟在经过某个补丁时改变颜色

Netlogo 让海龟在经过某个补丁时改变颜色,netlogo,Netlogo,当一只海龟经过某个区域时,它会改变颜色,并以新的颜色随机移动。所以我问了一个叫“勇”的海龟,它们是黄色的,如果任何一只“勇”海龟穿过半径2的一块区域,它应该变成绿色。我的代码运行没有错误,但在输出中,所有黄色的“yong”海龟都变为绿色,这不是我想要的 to interact-turtles ask yong [ if any? yong-on patches in-radius 2 [ set color green ] ] end 您的问题是,您让海龟询问半径范围内的补丁,这将把

当一只海龟经过某个区域时,它会改变颜色,并以新的颜色随机移动。所以我问了一个叫“勇”的海龟,它们是黄色的,如果任何一只“勇”海龟穿过半径2的一块区域,它应该变成绿色。我的代码运行没有错误,但在输出中,所有黄色的“yong”海龟都变为绿色,这不是我想要的

to interact-turtles
 ask yong [
 if any? yong-on patches in-radius 2 [ set color green  ]
  ]
end

您的问题是,您让海龟询问半径范围内的补丁
,这将把这些补丁的来源放在海龟碰巧所在的位置。取而代之的是,您需要在距原点2距离内的面片

to interact-turtles
  let sink patches with [abs px-cor <= 2 and abs py-cor <= 2]
  ask yong-on sink [ set color green  ]
end

然后你可以使用类似于
ask yong on patches with[sink?]
这样的结构来做事情。

谢谢@JenB的回复。为了澄清这一点,我想让任何通过补丁的小海龟把颜色从黄色变为绿色。当我这样做时
询问yong[如果有的话?半径2的补丁上的其他yong[设置绿色]]
几乎所有的yong海龟都变成绿色,除了两个或三个,这应该是相反的。例如,我应该只有几只小海龟变成绿色,而不是很多。你指的是“补丁”。你指的是什么面片?我指的面片是圆心半径为2的圆的面积。我是这样创建的
清除所有让水槽补丁半径2让水槽中心补丁0设置水槽补丁[patches in radius sink patch radius]水槽中心询问水槽补丁[set pcolor red]end
这是你的问题,您正在请求在海龟请求的2范围内获得补丁。我会修改的
globals [sink]

to setup
  ...
  set sink patches with [abs px-cor <= 2 and abs py-cor <= 2]
  ...
end
patches-own [sink?]

to setup
  ...
  ask patches [ set sink? if abs px-cor <= 2 and abs py-cor <= 2]
  ...
end