如何使乌龟回到特定的协调状态而又不会卡在那儿?

问题描述 投票:0回答:1

我尝试用某种颜色(此处为黄色)修补后,使海龟返回特定的坐标(世界中心),我编写了以下代码,我的海龟后退,但一直回溯到前进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
netlogo agent multi-agent
1个回答
0
投票

您的基本问题是您正在使用while循环,该循环将一直运行到满意为止。这意味着一旦海龟回到了基地,它就会跳起来,因为它一直在移动直到到达那里。处理这种情况的最简单方法是为每只乌龟都设置一个变量,以跟踪它是否要淘金,要回家或其他。

© www.soinside.com 2019 - 2024. All rights reserved.