黑马程序员技术交流社区

标题: 交通灯系统灯的问题 [打印本页]

作者: 请备注    时间: 2014-4-5 11:03
标题: 交通灯系统灯的问题
灯是否为绿                               //这句话的意思是否是灯默认为红?(即初始化的时候为红)
private boolean lighted

与灯同时为绿的对应方向             //如果默认不为红是不是要考虑除此之外的灯是否都为红 ?
private String opposite

灯变红时下一个变绿的灯        //绿灯每隔1秒要检查是否为绿灯状态,红灯为什么不检查?
private String nest


作者: 郭黎明    时间: 2014-4-5 11:33
public enum Lamp {
S2N("N2S","S2W",false),S2W("N2E","E2W",false),E2W("W2E","E2S",false),E2S("W2N","S2N",false),
N2S(null,null,false),N2E(null,null,false),W2E(null,null,false),W2N(null,null,false),
S2E(null,null,true),W2S(null,null,true),E2N(null,null,true),N2W(null,null,true);

private Lamp lamp;
private String oppsist;  //定义相反方向的灯
private String nextlamp; //定义下一个灯
private boolean lighted;  //定义boolean变量来判断灯的绿红情况,如果为true则为绿,如果为false则为红

Lamp(String oppsist,String nextlamp,boolean lighted ){
        this.oppsist = oppsist;
        this.nextlamp =nextlamp;
        this.lighted =lighted;
}
public boolean islight(){  //判断是灯的情况,如果为true则为绿,如果为false则为红
             return lighted;
       
}
public void setlight(){ //设置灯为绿,同时把对面的也设为绿
        this.lighted =true;
        if(oppsist!=null)
                Lamp.valueOf(oppsist).setlight();
}
public Lamp setblack(){ //设置灯为红,对面的也设为红,并把下一个设为绿
        this.lighted=false;
        if(oppsist!=null){
                Lamp.valueOf(oppsist).setblack();
                }
  System.out.println(name() + " lamp is green");
        Lamp next = null;
        if(nextlamp!=null){         //把下一个设为绿
        next =Lamp.valueOf(nextlamp);
        System.out.println(name()+"由红灯变为绿灯");
                next.setlight();
                        }
        return next;
}


}
当绿灯计时时间到,会由绿变为红,这个时候把它的对面也变为红,它的下一个设为绿。一个灯由红变为绿,它的对面也设为绿为绿,这样在里面通过计时器循环的设置灯的红绿情况,它们内部是有顺序的。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2