当龟到达我命令去的特定补丁时,它似乎没有改变标题

时间:2018-02-09 15:49:22

标签: netlogo

当我到达特定的补丁/节点坐标时,我正试图让乌龟面对另一只乌龟,或者在这种情况下是一个节点。然而,一旦它到达它,乌龟似乎没有读取下一个face命令。我对netlogo相当新,所以感谢任何帮助。

ask trucks
  [
    face node2 317 
    fd 1
    if ((pxcor = -133 ) and (pycor = 47)) ;; Coordinate of the node2 317
    [
      face node 333
      fd 1
    ]
  ]

1 个答案:

答案 0 :(得分:2)

如果没有看到更多与节点等相关的代码,那么很难说,但我猜想trucks实际上正在阅读面向node 333的代码并继续前进。但是,下次该过程运行时,truck将再次face node2 317并且卡住来回移动。

要演示,请查看代码的修改版本。

to setup
  ca
  crt 1 [ pd ]
  reset-ticks  
end

to go
  ask turtles [
    print "I'm facing 10 10 and moving forward 1"
    facexy  10 10
    fd 1
    display
    wait 0.15
    if pxcor = 10 and pycor = 10 [
      print "I'm facing 0 10 and moving forward 1"
      facexy 0 10
      fd 1
      display
      wait 0.15
    ]
  ]
  tick
end

如果您希望卡车顺序移动到目标节点,您可能需要一个trucks-own变量来存储他们想要去的当前节点,并且可以更新到下一个节点一次他们到了那里。查看" Link-Walking Turtles示例"在模型库中的一个相关的例子。

修改

我认为这个例子会有所帮助 - 使用这个setup,我们定义了三个变量:

  • targets-list - 要访问的补丁列表
  • next-target - 当前要访问的补丁
  • counter - 为targets-list
  • 编制索引

**

turtles-own [ counter targets-list next-target ]

to setup
  ca
  crt 1 [
    pd
    set targets-list ( list patch 5 5 patch 5 -5 patch -5 -5 )
  ]
  reset-ticks
end

然后,您可以让海龟使用counter根据next-target的当前值选择他们的counter。当他们到达目标时,他们将counter增加1,以便下一个勾选他们将索引targets-list中的下一个条目(使用item)。评论中有更多细节:

to go
  ask turtles [
    ; set my next-target to be the list item indexed by
    ; my counter variable
    set next-target item counter targets-list

    ; face the next-target, and move forward 1 if distance is
    ; greater than 1. If it's less than 1, move-to the target
    ; and increment the counter
    face next-target 
    ifelse distance next-target > 1 [
      fd 1 
    ] [
      move-to next-target 
      set counter counter + 1
    ]

    ; if counter variable is greater than the number of items
    ; in targets-list, reset to 0 as you cannot index an item
    ; that does not exist
    if counter > length targets-list - 1 [
      set counter 0
    ]
  ]

  tick
end

希望这能让你指出正确的方向!