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

How to let my turtles move while checking for other turtles?

我想让我的海龟向前移动,如果前面的补丁 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

我认为(但不确定,因为我无法测试)您的问题来自代理集和代理之间的差异。报告 turtles-on returns 一个 turtleset,其中可以有任意数量的海龟。即使它 returns 恰好是一只乌龟,它 returns 也是作为一组一只乌龟而不是作为一只乌龟。另一方面,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