我正在尝试在netlogo中创建一个程序,屏幕上有块,当他们的y-coordinate
达到某个值时,他们会反转他们的方向并以相反的方式移动。
到目前为止,我能够让它们向一个方向移动,然后在它们达到临界y-coordinate
值时切换方向,但是一旦它们朝相反方向迈出一步,它就会出现故障,并且它们会卡住一步前进,后退一步。
我想知道netlogo中是否有else
命令,所以我可以指定如果while命令没有完成,它可以反转它的方向并移动而不会出现故障。
这是我的代码。
to maze
while [abs pycor < 16 ] [fd 1 wait .1]
bk 1 wait .1
end
答案 0 :(得分:1)
NetLogo中没有单独的else
关键字,但ifelse
命令允许您指定两个块:一个在条件为真时执行,另一个(&#34; else& #34;阻止)如果条件为假则执行。
此外,尝试在while
循环中执行操作通常是不明智的。如果您希望您的海龟重复行为,通常可以使用"forever button"。
在以下示例中,您应该从永久按钮调用go
过程:
to setup
clear-all
ask patches with [ pycor = max-pycor - 1 ] [
sprout 1 [
set heading 180 ; head down
]
]
reset-ticks
end
to go
ask turtles [
if abs pycor = max-pycor [
rt 180 ; turn around!
]
fd 1
]
tick
end
这可能并不能达到您想要的效果,但很有可能您可以根据自己的需要对其进行修改。
另请注意,使用tick-based updates可以更好地工作。