netlogo - 在 Netlogo 中,如何将海龟移动到其链接的另一端?
问题描述
我在模拟中创建了两种海龟:一种是普通海龟,另一种是旨在与每只海龟重叠的光环。每当海龟被孵化(作为设置过程的一部分创建或使用 netlogo 的孵化函数创建)时,也会通过调用单独的 make-halo 函数来孵化和链接一个光环。
create turtles turtle-initial-number
;;(all the turtle genes are set here)
if halos-enabled [make-halo]
to make-halo
hatch-halos 1
[ set size sight-radius * 2 + 1
set shape "square"
set color lput 64 extract-rgb color
__set-line-thickness 0.5
create-link-from myself
[ tie
hide-link ] ]
end
由于我已经实现了一些交互,有时海龟和光环会彼此分离,所以我想在每个滴答声的末尾添加一个步骤,让所有光环都回到它们所属的海龟上。有没有办法移动光环或将其坐标设置到链接另一端的海龟?
另一种选择是解决断开连接时发生的任何事情。我有另一种乌龟(人),他们可以用下面的推开功能“推”其他人。占据人前面 9 个方格的海龟(及其光环)在人面对的同一方向上被向前推。当它们被推动时,由于某种原因,乌龟不再位于光环的中心。
to push-away
ask people [
let push-dir heading
ask patch-ahead 2
[ask turtles-here
[set heading push-dir
fd 2]
ask neighbors
[ask turtles-here
[set heading push-dir
fd 2]
]
]
]
end
解决方案
理论上,tie
应该将动作联系起来。但是要将光环捕捉到它的乌龟,您可以ask
将光环捕捉到move-to
乌龟。唯一的诀窍是识别正确的海龟,而您没有显示足够的代码让我为您整理识别。
我建议您实际上向记录乌龟的光环添加一个变量,而不是使用链接。如果链接没有其他用途,则无需创建所有这些额外的模型实体。你会像这样使用它:
halos-own [my-owner]
to make-halo
hatch-halos 1
[ set size sight-radius * 2 + 1
set shape "square"
set color lput 64 extract-rgb color
__set-line-thickness 0.5
set my-owner myself ; this is the new line
]
end
to push-away
<all the code you have already>
ask halos
[ move-to my-owner
]
end
推荐阅读
- gcloud - Stackdriver 提醒政策未触发
- react-native - 为导航抽屉添加菜单按钮会出错
- java - 在 Android 中没有得到 USSD 代码的响应
- vue.js - 如何渲染一个包含 3 个项目和 2 列的循环,其中 1 个在第一列,另外 2 个在第 2 列?
- c++11 - 自己声明结构?
- oracle - 将 Informix 查询转换为 Oracle?
- vba - 循环遍历“条形样式”中的项目,阅读项目
- android - Android Google Play 商店应用程序不兼容 64 位
- unity3d - 如何更改附加了动画师的 UI 图像?
- ibm-cloud - Watson Assistant:我可以使用示例中的实体来定义意图吗?