Timer 如何让海龟们面对面,等3秒钟,然后继续游荡?
我对Netlogo和stackoverflow都是新手,但是你的其他帖子已经帮了我很多 我目前正在尝试编程一个模型,在这个模型中,代理随机地在一个空间中漫游,并让他们在每次见面时都停下来。这里的“会面”是指“在半径2内相互传递”。他们应该面面相觑,等待两个滴答声,然后继续移动,直到找到下一个代理 我试图使用,但没有真正成功 到目前为止,我设法让他们面对面。我无法将Timer 如何让海龟们面对面,等3秒钟,然后继续游荡?,timer,netlogo,interaction,agent-based-modeling,Timer,Netlogo,Interaction,Agent Based Modeling,我对Netlogo和stackoverflow都是新手,但是你的其他帖子已经帮了我很多 我目前正在尝试编程一个模型,在这个模型中,代理随机地在一个空间中漫游,并让他们在每次见面时都停下来。这里的“会面”是指“在半径2内相互传递”。他们应该面面相觑,等待两个滴答声,然后继续移动,直到找到下一个代理 我试图使用,但没有真正成功 到目前为止,我设法让他们面对面。我无法将勾选-命令放在代码的正确位置。(编辑:多亏了赛斯,这个问题通过取消等待-命令得以解决。->,我不希望所有海龟都停止移动,只希望它们彼此
勾选
-命令放在代码的正确位置。(编辑:多亏了赛斯,这个问题通过取消等待
-命令得以解决。->,我不希望所有海龟都停止移动,只希望它们彼此相遇)。
另一件我正在努力的事情是他们相遇时的某种视觉表现,例如,当他们相遇时,他们会眨眼,或者在他们相遇时,他们周围会出现一个圆圈。使用wait
-命令,一切都会再次停止,这是我想要防止的
到目前为止,代码如下
to go
tick
ask turtles
[
wander
find-neighbourhood
]
ask turtles with [found-neighbour = "yes"]
[
face-each-other
]
ask turtles with [found-neighbour = "no" or found-neighbour = "unknown"]
[ wander ]
end
;-------
;Go commands
to wander
right random 50
left random 50
forward 1
end
to find-neighbourhood
set neighbourhood other turtles in-radius 2
if neighbourhood != nobody [wander]
find-nearest-neighbour
end
to find-nearest-neighbour
set nearest-neighbour one-of neighbourhood with-min [distance myself]
ifelse nearest-neighbour != nobody [set found-neighbour "yes"][set found-neighbour "no"]
end
to face-each-other ;;neighbour-procedure
face nearest-neighbour
set found-neighbour "no"
ask patch-here [ ;; patch-procedure
set pcolor red + 2
;wait 0.2
set pcolor grey + 2
]
if nearest-neighbour != nobody [wander]
rt 180
jump 2
ask nearest-neighbour
[
face myself
rt 180
jump 2
set found-neighbour "no"
]
end
你链接到海伦的问题是对的。基本上,你的问题的答案是你需要做同样的事情。当你试图这么做的时候,你是在正确的轨道上。我建议你再试试,如果你被卡住了,告诉我们你被卡住的确切位置。在一位同事的帮助下,我设法解决了我的计时器问题。正如赛斯指出的那样,
wait
不是正确的命令,太多的要结束
——循环也让我的海龟们感到困惑。代码现在看起来如下所示,并且可以正常工作。海龟们靠得很近,面对面,把它们的形状变成星星,等上三下,然后朝相反的方向跳
to setup
clear-all
ask turtles
[
set count-down 3
]
reset-ticks
end
;---------
to go
ask turtles
[
if occupied = "yes" [
ifelse count-down > 0
[
set count-down (count-down - 1)
set shape "star"
][
set shape "default"
rt 180
fd 2
set occupied "no"
set count-down 3
]
]
if occupied = "no" [
; Wandering around, ignoring occupied agents
set neighbourhood other turtles in-radius 2
; If someone 'free' is near, communicate!
set nearest-neighbour one-of neighbourhood with-min [distance myself]
ifelse nearest-neighbour != nobody [
if ([occupied] of nearest-neighbour = "no") [
face nearest-neighbour
set occupied "yes"
ask nearest-neighbour [
face myself
set occupied "yes"
]]
][
; No one found, keep on wandering
wander
]]]
tick
end
;-------
;Go commands
to wander
right random 50
left random 50
forward 1
end
当代码中有一堆注释掉的代码并且缩进到处都是的时候,阅读代码是非常困难的。这可能就是为什么没有人试图回答这个问题的原因——要阅读的代码太多了,而且你也没有让它变得容易。我突然想到的一件事是,你肯定根本不想使用
等待
。当一只乌龟等待时,一切都停止了。这些都是非常有用的评论,非常感谢。我尝试相应地编辑它。现在更清晰了,谢谢。我从一位同事那里得到了一些帮助,我们设法解决了这个问题。这并不是说我现在没有陷入下一步,但我想我可以结束这个问题。。。我该怎么做?你可以回答你自己的问题并发布你的代码,因为这个解决方案可能对其他人有帮助。如需结束,请参阅