我创建了一种新的补丁类型,允许乌龟随机向下转动各种路径,而一个是补丁(pcolor 6)。我应该如何修改这段代码,以免我得到错误"将预期的输入作为代理但却没有人代替。"代码如下:
if pcolor = 6 [ set heading towards one-of neighbors in-cone 1 180]
非常感谢任何帮助。
答案 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