本帖最后由 满兴旺 于 2014-5-16 17:56 编辑
首先自我介绍一下,我是一名普通的大学生,今年大四了,数学专业,大二时接触编程,可以说兴趣浓厚吧,后来准备了一年考研,想通过这种方式来从数学跨到计算机这个行业,好吧,未遂。在同学介绍下获知了黑马,3月9号开始准备,5月9号面的试,整整两个月,在芸芸黑马中,也算菜鸟一枚吧,在面试后过了几天颓废的日子,各种地方瞎逛,总之就是折腾了一阵,我报的是云10期,6月20号开课,心想再这么玩下去,估计到开学知识就忘光了吧,在面试前看到一个同学帖子,问能不能把张孝祥老师的交通灯那个面试题用GUI实现,好吧,就是它了,然后恶补了几天GUI的知识,开始编写交通灯的GUI实现,到现在也算小有成就了吧,写下来和同学们分享一下。
1, 开始前的准备 ① 毕老师java基础视频第22天 好吧说实话,看完这一天是不能编出交通灯的GUI实现的,但是这里面讲到的事件监听机制,在后面的编程中是必不可少的。 下面分享一下我的学习笔记:
② 在学完毕老师GUI第22天后发现并不能完成编程,就在黑马论坛找到汤阳光老师的俄罗斯方块游戏 附上链接:http://www.itheima.com/news/2012821/913614773dbf.shtml 这是我的学习笔记: 这里面涉及到工厂设计模式,我在编写交通灯的时候也套用了这个模式。 2, let’sbegin
如果你也看完了以上两个,我们可以讨论一下交通灯的GUI了。 我最初的方案是想按照张孝祥老师写的Lamp类加上drawMe方法,根据Lamp的lighted字段来指定这个灯该显示的颜色,然后再实例化8个Lamp类,很靠谱是吧,可是在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),E2N(null,null,true),N2W(null,null,true),W2S(null,null,true); 我还没搞清楚两个我就晕了,如果有兴趣的话希望同学们尝试一下。 我在看汤阳光老师俄罗斯方块第二遍时想到获取可以通过矩阵的方式实现交通灯的设计。
① 先说交通灯的控制逻辑(至于路和汽车以后再说): 和交通灯涉及到的类 1, Lamp(交通灯) 2, LampFactory(负责生产lamp) 3, LampListener(负责监听lamp的状态是否发生变化) 4, Panel(画板) 5, Controller(控制器,负责显示逻辑) 6, Main(调用主函数,使程序运行) 7, Global(用来存放全局变量) 他们的关系: ① 其中的细节 Lamp的设计(我感觉这个应该是核心吧,其他的比如controller类,如果能看明白汤阳光老师的视频,是不难理解的)
这里我并没有一个灯一个灯的设计,而是把8个交通灯用一个4*4的矩阵来表示的 那怎么控制灯的颜色,我在LampFactory中定义了一个int[][][] STATUS 用来保存所有灯的状态,比如上面这个交通灯的状态就可以用这个矩阵来表示,这就是交通灯的状态矩阵
然后在Lamp的drawMe中根据状态矩阵来设定各个灯的颜色就可以了
|