九宫格红绿灯识别的程序逻辑,一看就会

发布于:2023-01-09 ⋅ 阅读:(912) ⋅ 点赞:(0)

最近所谓的“新国标红绿灯”闹的是沸沸扬扬,又终于尘埃落定,关于九宫格红绿灯,看起来没有普通的红绿灯好识别,比如下面的表示什么意思呢?

其实弄清楚了一些规律,是比较容易识别的,尤其对于程序员来说。

九宫格红绿灯添加了“不亮灯”,表示默认状态,是用来表示让行的,比如右转默认状态,车可以走,但是要注意一下给直行让行。

对于左转,默认状态下,能不能通行需要看中间灯的状态,对于右转,默认状态是可以通行

是不是感觉有些啰嗦,来来来,just show the CODE

 这个表示,左转停,直行(中间)行,右转行

还是用程序来表示吧,

state 表示灯的状态,灯的状态值

#define RED 0

#define GREEN 2

#defind OFF 1

对于左侧信号灯,绿灯行,红灯停,默认状态时看中间的灯

bool leftGo() {

        if (state == RED) return false;

        if (state == GREEN) return true;

        return state_MID; // 默认状态下,由中间灯的状态决定

}

或者合并为一个语句

bool leftGo() {

        return (state > OFF) || state_MID == GREEN;

}

对于中间的灯,就比较清楚,直接路灯行,红灯停

return state == GREEN;

对于右侧灯,绿灯行,红灯停,默认状态也是行

bool rightGo() {

        if (state == RED) return false;

        if (state == GREEN) return true;

        return true; // 默认状态下,可以通行

}

或者合并

bool rightGo() {

        return (state >= OFF) ;

}

有了这个判断思维,再看看下面的几个情况,就难不倒我们了,

 结果:行  行  行

 结果:行  行  停

 结果:停  停  行

有了这个判断程序,只要灯不坏(同时出现红灯和绿灯),就难不住我们。

大家要是还是觉得不好识别的话,就使用一个程序来自动识别提示吧,^_^

参考资料:

新红绿灯信号灯怎么看 交通信号灯,新国标信号灯八种规定图_车主指南