📄 trafficcontroller.java
字号:
import java.awt.*;import java.awt.event.*;import javax.swing.*;/** * TrafficController class controls all traffic light states changing * * @author Hao Chen * @version 1.0 */public class TrafficController{ DirectionGroup[] DirectionGroupArray; int North= 0; int South= 1; int East= 2; int West= 3; TrafficLight Red; TrafficLight Yellow; TrafficLight Green; TrafficLight TurnLeft; /** * Creates a Traffic System class * * */ public TrafficController() { Red=new TrafficLight(2); Yellow=new TrafficLight(1); Green=new TrafficLight(0); TurnLeft=new TrafficLight(3); DirectionGroupArray=new DirectionGroup[4]; DirectionGroupArray[0]=new DirectionGroup(North); initialization(North,false); DirectionGroupArray[1]=new DirectionGroup(South); initialization(South,false); DirectionGroupArray[2]=new DirectionGroup(East); initialization(East, true); DirectionGroupArray[3]=new DirectionGroup(West); initialization(West,false); } /** * Initialize all lights and directions * * */ public String initialization(int direction, boolean turnLeft) { if (direction==North) { DirectionGroupArray[direction].AddLight(Green); DirectionGroupArray[direction].AddLight(Yellow); DirectionGroupArray[direction].AddLight(Red); } if (direction ==South) { DirectionGroupArray[direction].AddLight(Green); DirectionGroupArray[direction].AddLight(Yellow); DirectionGroupArray[direction].AddLight(Red); } if(direction==East ) { DirectionGroupArray[direction].AddLight(Red); DirectionGroupArray[direction].AddLight(TurnLeft); DirectionGroupArray[direction].AddLight(Green); DirectionGroupArray[direction].AddLight(Yellow); } if(direction==West ) { DirectionGroupArray[direction].AddLight(Red); DirectionGroupArray[direction].AddLight(Green); DirectionGroupArray[direction].AddLight(Yellow); } return null; } /** * EAch tick method will change the state of all traffic lights * * */public void tick(){ if(DirectionGroupArray[North].GetFirstLight()==Green) { changeState(North); changeState(South); } else if(DirectionGroupArray[North].GetFirstLight()==Yellow) { changeState(North); changeState(South); changeState(East); }else if(DirectionGroupArray[North].GetFirstLight()==Red&&DirectionGroupArray[East].GetFirstLight()==TurnLeft) { changeState(East); changeState(West); }else if(DirectionGroupArray[North].GetFirstLight()==Red&&DirectionGroupArray[East].GetFirstLight()==Green) { changeState(East); changeState(West); } else if(DirectionGroupArray[North].GetFirstLight()==Red&&DirectionGroupArray[East].GetFirstLight()==Yellow) { changeState(North); changeState(South); changeState(East); changeState(West); } for (int i=0; i<4;i++) System.out.print(DirectionGroupArray[i].GetFirstLight().light); System.out.println();} /** * changestate change the state of a single light * * */public void changeState(int directionTemp){ TrafficLight trafficLightTemp; trafficLightTemp=DirectionGroupArray[directionTemp].removeFirst(); DirectionGroupArray[directionTemp].AddLight(trafficLightTemp);} /** * Executable function * create the test cases * */ public static void main(String[] args) { TrafficController a= new TrafficController(); a.tick(); a.tick(); a.tick(); a.tick(); a.tick(); a.tick(); a.tick(); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -