当海龟经过某个补丁时,要求它们改变颜色

时间:2020-09-23 23:04:37

标签: netlogo

当乌龟经过某个补丁时,它会更改颜色并继续以新颜色随机移动。因此,我问名为“ yong”的乌龟,它们的颜色为黄色,如果任何“ yong”乌龟通过了半径2的斑块,则应将其颜色更改为绿色。我的代码运行没有错误,但在输出中,所有黄色的“永”海龟都将颜色更改为绿色,这不是我想要的。

SELECT

1 个答案:

答案 0 :(得分:1)

您的问题是,您让乌龟询问补丁in-radius,这将把这些补丁的起源放在乌龟碰巧的任何地方。相反,您需要在距原点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

但是,如果您希望该接收器区域是环境的永久功能,则可以使用变量来存储它,而不是重复创建它。作为全局变量:

globals [sink]

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

然后,您随时可以ask yong-on sink做事。

或者,对于每个补丁,您都可以有一个true / false(布尔值)变量,说明它是否在接收器中。

patches-own [sink?]

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

然后,您可以使用类似ask yong-on patches with [sink?]的结构来做事。