|
Sequencer |
|
1 // joi/1/lights/Sequencer.java 2 // 3 // 4 // Copyright 2003 Bill Campbell and Ethan Bolker 5 6 /** 7 * A Sequencer controls a TrafficLight. It maintains fields 8 * for the light itself and the current state of the light. 9 * 10 * Each time it receives a "next" message, it advances to the 11 * next state and sends the light an appropriate message. 12 * 13 * @version 1 14 */ 15 16 public class Sequencer 17 { 18 // the TrafficLight this Sequencer controls 19 private TrafficLight light; 20 21 // represent the states by ints 22 private final static int GO = 0; 23 private final static int CAUTION = 1; 24 private final static int STOP = 2; 25 26 private int currentState; 27 28 /** 29 * Construct a sequencer to control a TrafficLight. 30 * 31 * @param light the TrafficLight we wish to control. 32 */ 33 34 public Sequencer( TrafficLight light ) 35 { 36 this.light = light; 37 this.currentState = GO; 38 this.light.setGo(); 39 } 40 41 /** 42 * How the light changes when a next Button is pressed 43 * depends on the current state. The sequence is 44 * GO -> CAUTION -> STOP -> GO. 45 */ 46 47 public void next() 48 { 49 switch ( currentState ) { 50 51 case GO: 52 this.currentState = CAUTION; 53 this.light.setCaution(); 54 break; 55 56 case CAUTION: 57 this.currentState = STOP; 58 this.light.setStop(); 59 break; 60 61 case STOP: 62 this.currentState = GO; 63 this.light.setGo(); 64 break; 65 66 default: // This will never happen 67 System.err.println("What color is the light?!"); 68 } 69 } 70 } 71
|
Sequencer |
|