毕业设计对象类篇(一)交通灯类之路口状态
所有的路口标号用int road[8]
表示,
用bool status[8][8]
表示道路可否通行。
T字路口
对于T字路口,将道路分为(左,右,下)三个流量出入口,存在的状态有:
0. 全红(特殊状态应对突发事故)
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
status[i][j] = false;
}
}
×|0|1|2|3|4|5
:–: | :–: | :–: | :–: | :–: | :–: |
0|×|×|×|×|×|×
1|×|×|×|×|×|×
2|×|×|×|×|×|×
3|×|×|×|×|×|×
4|×|×|×|×|×|×
5|×|×|×|×|×|×
正常状态下考虑红灯可右转,同向变道不受交通灯控制,即永远可通行
status[2][1] = status[4][3] = true;
status[0][1] = status[2][3] = status[4][5] = true;
×|0|1|2|3|4|5
:–: | :–: | :–: | :–: | :–: | :–: |
0||@||||
1||||||
2||@||@||
3||||||
4||||@||@
5||||||
同时需要限制逆行,即永远不可通行
// 出口不能自转和变道
status[0][0] = status[0][2] = status[0][4] = false;
status[4][4] = status[4][0] = status[4][2] = false;
status[2][2] = status[2][0] = status[2][4] = false;
// 出口不能进去
status[1][0] =status[1][4] = status[1][2] = status[1][3] = status[1][4] = status[1][5] = false;
status[3][0] =status[3][5] = status[3][2] = status[3][3] = status[3][4] = status[3][5] = false;
status[5][0] =status[5][6] = status[5][2] = status[5][3] = status[5][4] = status[5][5] = false;
×|0|1|2|3|4|5
:–: | :–: | :–: | :–: | :–: | :–: |
0|×|@|×||×|
1|×|×|×|×|×|×
2|×|@|×|@|×|
3|×|×|×|×|×|×
4|×||×|@|×|@
5|×|×|×|×|×|×
对以上情况封装,即init()。后续应禁止对上值做任何改变。
即还有6*6-5-9-18=4个值
status[0][5],status[4][7],
status[2][5],status[0][3],
调控状态代码如下
case 3:
if (emStatus % 4 == 0) {
status[0][5]=status[4][1]=1;
status[2][5]=status[0][3]=0;
} else if (emStatus % 4 == 1) {
status[0][5]=status[0][3]=1;
status[4][1]=status[2][5]=0;
} else {
status[0][5]=status[2][5]=1;
status[4][1]=status[0][3]=0;
}
break;
解析如下
1. 对边可通行(限制0左转,限制2左转)
status[0][5]=status[4][1]=1;
status[2][5]=status[0][3]=0;
2. 疏通右侧
status[0][5]=status[0][3]=true;
status[4][9]=status[2][5]=false;
3. 导向左侧
status[0][5]=status[2][5]=1;
status[4][1]=status[0][3]=0;
+字路口
对于+字路口,将道路分为(左,右,上,下)四个流量出入口,存在的状态有:
0. 全红(同上)
×|0|1|2|3|4|5|6|7
:–: | :–: | :–: | :–: | :–: | :–: | :–: | :–: |
0|×|×|×|×|×|×|×|×
1|×|×|×|×|×|×|×|×
2|×|×|×|×|×|×|×|×
3|×|×|×|×|×|×|×|×
4|×|×|×|×|×|×|×|×
5|×|×|×|×|×|×|×|×
6|×|×|×|×|×|×|×|×
7|×|×|×|×|×|×|×|×
同时需要限制逆行,即永远不可通行
// 出口不能自转和变道
status[0][0] = status[0][2] = status[0][4] = status[0][6] = false;
status[2][2] = status[2][0] = status[2][4] = status[2][6] = false;
status[4][4] = status[4][0] = status[4][2] = status[4][6] = false;
status[6][6] = status[6][2] = status[6][4] = status[6][0] = false;
// 出口不能进去
for(int i = 0; i < 8 ; i++){
status[1][i] = status[3][i] = status[5][i] = status[7][i] = false;
}
版权声明: (https://www.thinkmoon.cn/post/197)
本文首发于指尖魔法屋-毕业设计对象类篇(一)交通灯类之路口状态
转载或引用必须申明原指尖魔法屋来源及源地址!