Java坦克大战开发每天总结

 Java坦克大战开发每天总结

第一天 | | 第一天后完成功能 运行程序后弹出窗口,窗口能够关闭,有一个实体圆代表坦克,能够对键盘实施监听,并完成8个方向的移动。对于control键的监听按下后能发出一发子弹。子弹能按照坦克当前的方向向前射出。

Bug || 当坦克不移动时子弹也不能动,出现在坦克位置上。

代码实现思维 ||  主程序TankClient  ||

                主程序是窗口TankClient extends Frame 类,  

                有坦克类,子弹类,枚举方向。              

             ||  main方法类new 一个TankClient对象,调用launch 方法。

             ||  launch方法中set form的各种数据,

             ||  TankClient类中重写paint方法,画出窗体中的对象坦克,即调用坦克

                的draw方法。

             ||  重写update方法,消除闪烁。

             ||  写一个内部类paintThread implements Runnable。在run方法中每隔一段时  

                间调用repaint方法。(repaint 方法会先调用update方法,然后调用paint

                方法)在luanch方法中new paintThread 的对象并调用start方法。这样对

                于坦克位置的改变就可以不断刷新重画。

             ||  对于键盘的监听,在launch方法中addkeyListener 加入键盘的监听事件

                在TankClient中再写一个内部类,KeyMonitor extends keyAdapter。重写

                KeyPressed 和 keyReleased 方法。但是因为是坦克对键盘的上下左右

                以及control 做出反应,所以交给坦克类处理。即在keyPressed 

                KeyReleased方法中调用坦克类的 keyPressed 和 keyReleased 方法           

      ||  坦克类 Tank  ||

             ||  坦克的属性 位置坐标,坦克大小。都应该设置为private 变量。方便类内

                部的修改,坦克的方向。

             ||  坦克类中的方法:构造方法 、draw()、keyPressed()、keyReleased()、

                Move()、Dirction()。

                Draw()方法画出坦克。并且调用move(),对于当前的坦克方向进行移动。

                Direction() 对当前坦克的方向进行判断。因为有9个方向,L,LU,U,RU,

                R,RD,D,LD,STOP。所以在在坦克类定义四个bool类型的成员变量LU

                RD。在keyPressed方法中当某个键被按下取得时候,对应的bool变量

                赋值为true,当相应的键松开时keyReleased调用。对应的bool变量赋值

                为fasle。这样根据4bool类型的值判断坦克方向。

                Move()方法则根据方向移动坦克。

      ||  子弹类 bullet ||

             ||  子弹的属性。位置,方向都由当前的坦克传递。

             ||  子弹的draw()方法。根据位置,大小画出。

             ||  子弹的move()方法copy 坦克的。

 

                                               20145月 22

你可能感兴趣的:(Java坦克大战开发每天总结)