如前所述,我目前正在尝试对此处发现的城镇和交通人群进行仿真,以支持自动驾驶AI汽车,可以在此处找到。
我目前遇到的问题是从红灯到黄灯再到绿灯有适当的过渡。
我有一个变量,用于存储每种光,称为下一种颜色;以及一个变量,用于存储经过的时间,称为倒计数。我理想的情况是,红灯显示10秒钟,黄灯显示3秒钟,绿灯显示另外10秒钟。这是我到目前为止的内容。
to change-color [lights ]
ask lights [
ifelse color = red [set color yellow set next-color yellow] [set color red set next-color red]]
end
to yellow-color [lights]
ask lights[
ifelse color = yellow [set color green set next-color green] [set color yellow set next-color yellow]]
end
to control-traffic-lights
set count-down 100
set count-down count-down - 1
if ticks mod (10) = 0
[change-color lightsR change-color lightsL
change-color lightsU
change-color lightsD]
if ticks > 10 and ticks mod(145) = 0 [yellow-color lightsR yellow-color
lightsL yellow-color lightsU
yellow-color lightsD ]
end
我需要做一个新的程序,当倒数可以被红色和绿色分别除以10,然后将黄色分别除以3和3时,将颜色设置为下一个颜色吗?如何重置倒数计数的值?
任何帮助将不胜感激。
您不希望所有灯都同时打开,颜色和时间可能会因每个灯而有所不同。这意味着您需要将它们设置为代理变量而不是全局变量。这是一个完整的模型,演示了如何使用计数器。确保您了解其工作原理,然后尝试并修改您的代码以使用相同的逻辑。
turtles-own
[ next-colour
countdown
]
to setup
clear-all
create-turtles 5
[ setxy random-xcor random-ycor
set color green
set next-colour orange + 3
set countdown 10 + random 20
]
reset-ticks
end
to go
change-colour
end
to change-colour
ask turtles
[ set countdown countdown - 1
if countdown = 0
[ set color next-colour
set next-colour red
set countdown 5
]
]
end