【问题标题】:How to let my turtles move while checking for other turtles?如何让我的海龟在检查其他海龟的同时移动?
【发布时间】:2020-10-07 17:22:32
【问题描述】:

如果前面的补丁 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

【问题讨论】:

    标签: netlogo


    【解决方案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
    

    【讨论】:

      最近更新 更多