黑马程序员---交通灯控制系统

来源:互联网 发布:神户制钢造假 知乎 编辑:程序博客网 时间:2024/05/16 17:41

 ---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------


 交通灯管理系统:
   一.项目需求:
    1、异步随机生成按照各个路线行驶的车辆。
    2、信号灯忽略黄灯,只考虑红灯和绿灯。
    3、应考虑左转车辆控制信号灯,右转车辆不受信号灯控制。 4、具体信号灯控制逻辑与现实生活中普通交通灯控制逻辑相同,不考虑特殊情况下的控制逻辑。
    注:南北向车辆与东西向车辆交替放行,同方向等待车辆应先放行直行车辆而后放行左转车辆。
    5、每辆车通过路口时间为1秒(提示:可通过线程Sleep的方式模拟)。 6、随机生成车辆时间间隔以及红绿灯交换时间间隔自定,可以设置。
    7、不要求实现GUI,只考虑系统逻辑实现,可通过Log方式展现程序运行结果。

  二.需求分析:
  1).交通信号灯控制器的分析:
    1基本概念:将两个方向对立的信号灯归为一组,如南信号灯和北信号灯为一组,东南信号灯和西北信号灯为一组
    2.基本逻辑:任意时刻,只能有一组信号灯保持亮的状态,右转车辆不受信号灯控制,因此右转方向不设信号灯
    3.基本功能:按照顺时针方向,循环让每一组信号灯保持亮的状态一段时间 


  2.交通信号灯控制器的数据结构:设置一个方向数组,用来保存需要被调度的方向,
    以组为单位 :String[] Direction={"N方向-S方向","NE方向-SW方向","E方向-W方向","ES方向-WN方向"}
    3.交通信号灯控制器的方法:
    获取当前信号灯状态方法,该方法返回当前一组保存亮状态的信号灯:public String getCurrentStatues();
    循环让信号灯保存亮的状态一段时间的方法,该方法按照顺时针 让每一组信号灯保存亮的状态一段时间(我这里设置成10秒钟):public void ControlerRun();


  2).车辆的行为分析:
     1.基本逻辑:车辆在通过路口时必须检查当前信号灯状态,只有当前信号灯状态和自己的行进状态相同时才能通过路口,
       否则等待信号灯转为自己行进方向时再通过。车辆必须按顺序通过路口,当自己前面有车没通过路口时排队等前面的车通过路口再通过
      2.车辆的数据结构:车辆对象要保存车辆名称,车辆所属的路,以及车辆的行进方向;
      String CarName//车辆的名称
      String  WhichRoad//车辆在那个路上
      String RunDirection//车辆开往的方向 


    2.车辆应该具有的方法:
        1.获取当前信号灯状态:  private String getCurrentStatues();
        2.判断当前能否通过路口 :boolean CanPass(String CurrentStatues);
        3.通过路口 :void PassRoad();
        4继续等待  :void WaitForPass();
     
  3).路的行为分析:
  1.基本逻辑:所有的车辆都要在路上,因此路是一个容器 ,每辆车通行的时间为一秒因此路每过一秒钟就要查看当前路口的车是否能通过,
  通过调用car类的CanPass()函数。如果当前路口的车辆能通过就调用当前车辆的PassRoad()函数,否则调用当前车辆的WaitForPass()函数使车辆在路口继续等待


  具体实现代码如下:


 

---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
详细请查看:www.itheima.com
0 0
原创粉丝点击