当我到达特定的补丁/节点坐标时,我正试图让乌龟面对另一只乌龟,或者在这种情况下是一个节点。然而,一旦它到达它,乌龟似乎没有读取下一个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
]
]
答案 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
希望这能让你指出正确的方向!