我应该如何修改此代码以允许我让乌龟随意沿路口的路径转弯?

时间:2014-11-24 21:42:07

标签: netlogo

我创建了一种新的补丁类型,允许乌龟随机向下转动各种路径,而一个是补丁(pcolor 6)。我应该如何修改这段代码,以免我得到错误"将预期的输入作为代理但却没有人代替。"代码如下:

if pcolor = 6 [ set heading towards  one-of neighbors in-cone 1 180]

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

要专门回答您的问题,您需要检查是否有符合您条件的补丁。要做到这一点,你可以做到

ask a-turtle [if any? neighbors in-cone 1 180 [face one-of neighbors in-cone 1 180]]

这样做,您将创建两次相同的龟集(当您检查是否有任何龟群时,在您面对其中之一之前),因此更优化的方法是:

ask a-turtle [
  let eligible-neighbors neighbors in-cone 1 180
  if any? eligible-neighbors [face one-of eligible-neighbors]
]

那就是说,我认为艾伦是对的,你得到了这个错误,因为你已经包裹了,你的乌龟要么在角落里,要么面对墙壁。如果是这种情况,您需要弄清楚在这种情况下该怎么做。如果您只是希望他们转身并继续前进,您可以使用ifelse这样:

ask a-turtle [
  let eligible-neighbors neighbors in-cone 1 180
  ifelse any? eligible-neighbors 
    [face one-of eligible-neighbors] ;; face a neighboring patch if there are any
    [rt 180] ;; else, turn around 180 degrees
]

答案 1 :(得分:0)

首先尝试使用'let'创建一个临时变量,然后将标题设置为。

e.g。

let FaceHere one-of neighbors in-cone 1 180
face FaceHere

没试过 - 只是一个想法。

顺便说一下,你可以替换

set heading towards

 face