毕业设计对象类篇(一)交通灯类之路口状态

所有的路口标号用int road[8]表示,

bool status[8][8]表示道路可否通行。

T字路口


T路口.png

对于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;

+字路口


+路口.png

对于+字路口,将道路分为(左,右,上,下)四个流量出入口,存在的状态有:

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://blog.thinkmoon.cn/post/197_%E6%AF%95%E4%B8%9A%E8%AE%BE%E8%AE%A1%E5%AF%B9%E8%B1%A1%E7%B1%BB%E7%AF%87_%E4%B8%80_%E4%BA%A4%E9%80%9A%E7%81%AF%E7%B1%BB%E4%B9%8B%E8%B7%AF%E5%8F%A3%E7%8A%B6%E6%80%81/) 转载或引用必须申明原指尖魔法屋来源及源地址!