在检查其他乌龟时如何让我的乌龟移动?

时间:2020-10-07 17:22:32

标签: netlogo

如果没有其他乌龟在相同标题的1号前方,我想让我的乌龟向前移动。乌龟会在某个时候减速,直到它们不再移动并且前面没有乌龟,但我不知道为什么。

这里有一些代码:

to movefd
  
ask turtles [
    let car-ahead turtles-on patch-ahead 1 
    ifelse car-ahead with [heading = [heading] of myself] != nobody
    [ slow-down-car ]
    [ speed-up-car ]
  
    if speed < speed-min [ set speed speed-min]
    if speed > speed-limit [ set speed speed-limit ]
    fd speed
  ]
end

to slow-down-car
  set speed (speed - deceleration)
end

to speed-up-car
  set speed speed + acceleration
end

1 个答案:

答案 0 :(得分:1)

我认为(但不确定,因为无法测试)您的问题出在代理集和代理之间的差异上。报告turtles-on返回一个海龟集,其中可以有任意数量的海龟。即使恰好返回一只乌龟,它也会以一组一只乌龟而不是一只乌龟的形式返回它。另一方面,nobody是乌龟,而不是乌龟。一套永远不能和乌龟一样。

尝试一下(注意,我也将“ car”更改为“ cars”,以提醒它是一个集合):

ask turtles [
    let cars-ahead turtles-on patch-ahead 1 
    ifelse any? cars-ahead with [heading = [heading] of myself]
    [ slow-down-car ]
    [ speed-up-car ]
  
    ...
  ]
end
相关问题