Netlogo 如何查看颜色识别信号灯?
布置有交通灯的交叉口。我希望当红灯和灯熄灭时,车停下来。这就是我应该使用的汽车算法可以识别灯的颜色 我使用了如下的灯光布局算法Netlogo 如何查看颜色识别信号灯?,netlogo,Netlogo,布置有交通灯的交叉口。我希望当红灯和灯熄灭时,车停下来。这就是我应该使用的汽车算法可以识别灯的颜色 我使用了如下的灯光布局算法 to draw-stop-light ifelse stop-light = "north" [ ask patch -7 12 [set pcolor green ] ask patch 10 10 [ set pcolor red ] ask patch -10 -10 [ set pcolor red ]
to draw-stop-light
ifelse stop-light = "north"
[
ask patch -7 12 [set pcolor green ]
ask patch 10 10 [ set pcolor red ]
ask patch -10 -10 [ set pcolor red ]
]
[
ask patch -7 12 [ set pcolor red ]
ask patch 10 10 [ set pcolor green ]
ask patch -10 -10 [ set pcolor green ]
]
end
这确实是一个比堆栈溢出更适合NetLogo用户组的问题,因为您要问的是如何编写定义不好的规范。例如,用户组可以为您指出类似的模型。堆栈溢出实际上是修复代码中的特定问题。然而,在问题被删除之前,这里有一些东西可以让你开始 将您希望发生的事情分解为非常小的步骤,然后对每个步骤进行编码。步骤如下:
if [pcolor] of patch-right-and-ahead 90 1 = red
[ set speed 0 ]
不要试图把整件事都写下来。相反,一次只写一位,然后测试它是否工作。以下是第一位的一些近似代码:
ask cars
[ ifelse heading = 180 and ycor > 20 and ycor < 25 and not stop-flag
[ if [ pcolor of patch -7 12 ] = red [ set stop-flag true ] ]
[ ... (cars from other directions)
]
ask cars
[ forward speed
if stop-flag and ... (on intersection patches)
[ ... (move backwards to be outside the intersection)
set stop-flag false
]
]
询问汽车
[如果其他航向=180且ycor>20且ycor<25且不停止标志
[如果[pcolor of patch-7 12]=红色[设置停止标志为真]]
[……(其他方向的汽车)
]
问车
[前进速度
如果停止标志和…(在交叉点补片上)
[…(向后移动到交叉路口外)
将停止标志设置为false
]
]
右前方补丁(
())在这里可能很有用。可能类似于:
if [pcolor] of patch-right-and-ahead 90 1 = red
[ set speed 0 ]
“一次写一点,然后测试它是否有效”——这是一个很好的建议。