如何在检查其他海龟时让我的海龟移动?
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
我想让我的海龟向前移动,如果前面的补丁 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