在Netlogo中,如何将海龟移动到其链接的另一端?
在我的模拟中,我创造了两种海龟:一种是普通海龟,另一种是一个光环,用于重叠每只海龟。无论何时孵化海龟(作为设置过程的一部分创建或使用netlogo的孵化功能创建),都会通过调用单独的生成光晕功能来孵化和链接光晕在Netlogo中,如何将海龟移动到其链接的另一端?,netlogo,Netlogo,在我的模拟中,我创造了两种海龟:一种是普通海龟,另一种是一个光环,用于重叠每只海龟。无论何时孵化海龟(作为设置过程的一部分创建或使用netlogo的孵化功能创建),都会通过调用单独的生成光晕功能来孵化和链接光晕 create turtles turtle-initial-number ;;(all the turtle genes are set here) if halos-enabled [make-halo] to make-halo hatch-halos 1 [ set s
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
应该将动作联系起来。但是要将光环捕捉到海龟身上,您可以要求光环移动到海龟身上。唯一的诀窍是识别正确的海龟,而你没有显示足够的代码让我帮你识别
我建议你在光环中添加一个变量来记录海龟,而不是使用链接。如果链接没有其他用途,则无需创建所有这些额外的模型实体。您可以这样使用它:
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
halos own[我的主人]
制造光晕
舱口光晕1
[设定尺寸视距半径*2+1
设置形状为“方形”
设置颜色lput 64提取rgb颜色
__将线厚度设置为0.5
让我的主人自己来,这是新的路线
]
终止
推开
询问光环
[搬到我的主人那里去
]
终止
感谢您的回复!我认为鉴定可能相当复杂,因为我有多个品种,它们可能有光环,也可能没有光环(拨动开关)。我的代码在这里发布相当复杂,有很多事情在进行,有多个文件。如果我把海龟和光环之间的断开的确切位置贴出来,也许会有所帮助。我会把它添加到我的问题中!在某个时候,你必须给海龟指定光环,可能是围绕着你第一次发布的代码。这就是我想要的代码谢谢。我添加了额外的代码。非常感谢你的帮助!见扩展答案谢谢,这很有效。我不知道您可以使用代理的ID作为值,这非常有用。这不是答案,但我注意到您有类似于ask patchset[ask turtles here[…]]
的构造。这些可以替换为ask turtles on patchset[]
谢谢,这样会更干净。