我尝试用某种颜色(此处为黄色)修补后,使海龟返回特定的坐标(世界中心),我编写了以下代码,我的海龟后退,但一直回溯到前进1个步骤后的协调。我的代码肯定有误。
我不希望海龟跳跃,我需要它们向后走以进行进一步的操作。
breed [miners miner]
breed [bases base]
to setup
clear-all
reset-ticks
create-miners 1
create-bases 1
ask bases
[set size 1]
ask miners
[set size 1
set heading random 360]
ask patches
[set pcolor green]
place-golds
end
to go
ask miners
[right random 360
forward random 4
get-gold]
tick
end
to place-golds
ask n-of 10 patches [ set pcolor yellow ]
end
to get-gold
ask miners
[if pcolor = yellow
[set pcolor green
back-to-base]
]
end
to back-to-base
loop [
ifelse on-base? [ stop ]
[
facexy 0 0
fd 1
]
]
end
to-report on-base?
report (xcor = 0 AND ycor = 0)
end
我也使用back-to-base
循环对while
过程进行了尝试,但是问题仍然没有解决。
to back-to-base1
while [xcor != 0 AND ycor != 0]
[
facexy 0 0
fd 1
if xcor = 0 AND ycor = 0
[stop]
]
end
您的基本问题是您正在使用while
循环,该循环将一直运行到满意为止。这意味着一旦海龟回到了基地,它就会跳起来,因为它一直在移动直到到达那里。处理这种情况的最简单方法是为每只乌龟都设置一个变量,以跟踪它是否要淘金,要回家或其他。