我一直在尝试创建一个程序,当海龟在充电点时,以每滴 5 个单位的速度为它们充电。
to go-recharge
ask turtles [
if energy-required? = true and (patch-here = goal) [
set energy-ticks-since-here ticks
while [energy < 100] [
set energy energy + 5]
if (ticks - energy-ticks-since-here) > (energy / 5 ) [
set energy-required? false]
]
]
一旦经过适当数量的蜱虫,我似乎无法让海龟再次移动。我希望海龟在超过 100 且刻度数已过去(超过 20 表示 100 能量单位)时恢复并移出目标能量。
你的问题是这样的陈述:
set energy-ticks-since-here ticks
这将始终使该值:
(ticks - energy-ticks-since-here)
为零。它没有做你想做的事,即跟踪乌龟已经充电了多少次。
一种方法是使
energy-ticks-since-here
成为海龟自己的变量。当乌龟充电时,您可以将其设置为任意数字:
if (ticks - energy-ticks-since-here) > (energy / 5 ) [
set energy-required? false
set energy-ticks-since-here -999]
然后,在询问海龟块开始时,如果海龟刚刚开始充电,请重置
energy-ticks-since-here
:
if energy-required? = true and (patch-here = goal) [
if energy-ticks-since-here = -999 [set energy-ticks-since-here ticks]