package com.itcast.traffic;

/**
 * 每个Lamp元素代表一个方向上的灯,总共有12个方向,所以总共有12个Lamp元素
 * @author Administrator
 *
 */
public enum Lamp {

	//每个枚举元素各表示一个方向的控制灯
	S2N("N2S","S2W",false),S2W("N2E","S2W",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),N2W(null,null,true),W2S(null,null,true),E2N(null,null,true);
	
	private Lamp(String oppsite,String next,boolean lighted){
		this.oppsite = oppsite;
		this.next = next;
		this.lighted = lighted;
	}
	
	//与当前灯同时为绿的对应方向
	private String oppsite;
	//当前灯变红时下一个变绿的灯
	private String next;
	//当前灯是否为绿灯
	private boolean lighted;
	
	public boolean isLighted(){
		return lighted;
	}
	
	//某个灯变绿时,它对应方向上的灯也要变绿
	public void light(){
		this.lighted = true;
		if(this.oppsite != null){
			Lamp.valueOf(oppsite).light();
		}
		System.out.println(name() + "Lamp is green,下面总共应该有6个方向能看到汽车通过");
	}
	
	//某个方向上的灯变红时,对应方向的灯也要变红,并且下一个方向的灯要变绿
	public Lamp blackOut(){
		this.lighted = false;
		if(this.oppsite != null){
			Lamp.valueOf(oppsite).blackOut();
		}
		Lamp nextLamp = null;
		if(this.next != null){
			nextLamp = Lamp.valueOf(next);
			System.out.println("绿灯从" + name() + "------------->切换为" + next);
			nextLamp.light();
		}
		
		return nextLamp;
	}
	
}
最近下载更多
ming_123_9715  LV23 2021年10月22日
与你同行2019  LV11 2021年2月26日
2196316269  LV10 2021年2月25日
superadmin001  LV1 2021年2月12日
qiuqiu555  LV1 2020年11月15日
ListenMuDi  LV2 2020年6月14日
小糊涂  LV1 2020年6月3日
茅屋为秋风所破歌  LV1 2020年4月5日
20181107  LV4 2019年12月14日
2818821836  LV11 2019年4月17日
最近浏览更多
uid0901  LV2 4月2日
y1214435276  LV9 2023年7月4日
GT2002220  LV2 2023年6月9日
微信网友_6508798513811456  LV5 2023年6月7日
泓鼎168  LV20 2023年3月31日
15342201772  LV9 2022年12月10日
未交定金 2022年10月26日
暂无贡献等级
王俊杰1 2022年9月22日
暂无贡献等级
zhaoyangwfd  LV17 2022年6月24日
Code_Pianist  LV2 2022年6月17日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友