在Netlogo中,如何将乌龟移动到其链接的另一端?

时间:2018-09-27 02:56:05

标签: 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

1 个答案:

答案 0 :(得分:1)

从理论上讲,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