坦克大战详细设计说明书.doc

上传人:灯火****19 文档编号:136887416 上传时间:2020-07-03 格式:DOC 页数:6 大小:31.50KB
返回 下载 相关 举报
坦克大战详细设计说明书.doc_第1页
第1页 / 共6页
坦克大战详细设计说明书.doc_第2页
第2页 / 共6页
坦克大战详细设计说明书.doc_第3页
第3页 / 共6页
坦克大战详细设计说明书.doc_第4页
第4页 / 共6页
坦克大战详细设计说明书.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《坦克大战详细设计说明书.doc》由会员分享,可在线阅读,更多相关《坦克大战详细设计说明书.doc(6页珍藏版)》请在金锄头文库上搜索。

1、软件详细设计说明书一、TankWar类:TankWar继承Frame类。1、 paint( )方法paint( ) 方法主要实现对坦克类和子弹类,障碍物类和爆炸类等画到窗口上。坦克类又分为MyTank和EnwmyTank 两类。对这两类用不同的颜色画到窗口上。画子弹时通过传递坦克的颜色画出相应的子弹颜色。子弹画坦克死亡则不再对其进行重画。2、 update( )方法。update( ) 方法主要是为了解决,重画频率太快,paint( ) 方法还没有完成,重画坦克时出现的闪烁现象。通过双缓冲技术将所有东西画在虚拟图片上,一次性显示出来解决闪烁现象。3、 内部类KeyMon键盘监听KeyMon继承

2、KeyAdapter类。通过KeyMon类的监听,用户可以通过键盘控制自己的坦克。4、 内部类MyTankWarThreadMyTankWarThread实现Runnable接口,通过MyTankWarThread实现对坦克的重画,实现坦克的移动。5、 showFrame( )方法showFrame( )方法主要是设置一个窗口及其各种参数。二、Tank类Tank类是实现Runnable接口的一个抽象类1、 Tank类的主要属性有:int x;/坦克的位置int y;/int oldx;/坦克上一步的坐标int oldy;/Dir dir;/ Tank方向的成员变量int speed = 5;b

3、oolean isLive = true;2、 Tank类提供各种的构造方法Tank(int x, int y) Tank(int x, int y, Dir dir) Tank(int x, int y, Dir dir, TankWar tw)根据不同的需要使用不同的构造方法。3、 drawTank ()方法drawTank()方法根据坦克的类型不同可以画出不同类型的坦克和不同方向的坦克。敌人的坦克用BLUE画出来,自己的坦克用RED颜色画出来,以区分敌我。4、 fire()方法fire()方法的功能是实现打出一颗子弹,fire()方法调用了画坦克的颜色变量 c ,画出与坦克一样颜色的子弹

4、,以区别子弹是那一方发出来的。5、 isHitWall()方法该方法是用来判断Tank是否与障碍物发生碰撞public boolean isHitWall() Wall w = null;for (int i = 0; i tw.walls.size(); i+) w = tw.walls.get(i);if (w.isHits(this.getRectangle() return true;return false;6、 getRectangle()方法该方法主要是用来检测是否发生了碰撞。public Rectangle getRectangle() return new Rectangle

5、(x, y, TANK_WIDTH, TANK_HEIGHT);7、 add(int count, TankWar tw)方法该方法是用来添加敌人坦克的,当敌人坦克数量减少时,而此时敌人的count又未小于0时添加相应数量的敌人坦克来增加游戏的可玩性。三、MyTank类MyTank类继承Tank类1、 locDir(KeyEvent e)方法通过键盘监听,对按键进行监听来实现用户可以通过W D S A四个方向键对坦克的控制2、 keyReleased(KeyEvent e)方法该方法主要是为了防止连续发子弹的问题,只有放开SPACE按键才可以发弹,这样就增加了游戏的可玩性。3、 stay()方

6、法该方法主要实现暂停的功能,这个是本游戏代码中的一个的亮点,通过线程来实现的public void stay() int tc = Thread.activeCount();Thread threads = new Threadtc;Thread.enumerate(threads);if (tw.flag) for (int i = 0; i threads.length; i+) System.out.println(tc + :suspend + threadsi.getName();if (threadsi.getName().matches(Thread-.*) threadsi.s

7、uspend();tw.flag = false; else if (! tw.flag) for (int i = 0; i TankWar.GAME_WIDTH - TANK_WIDTH - 5) x = TankWar.GAME_WIDTH - TANK_WIDTH - 5;if (x TankWar.GAME_HEIGHT - TANK_HEIGHT - 5) y = TankWar.GAME_HEIGHT - TANK_HEIGHT - 5;if (y 0)move();step-;return;int dx = this.x- tw.hero.x ;int dy = this.y-

8、 tw.hero.y ; if (tw.hero.isLive) int next = (int) (Math.random() * 2);if (next = 1) if (dx 0) this.dir = Dir.L; else if (dx 0) this.dir = Dir.U; else if (dy 0) this.dir = Dir.D; else move();step = (int) (Math.random()*12+3);2、 move()方法敌人的坦克移动时调用的方法,方向是通过随机数来确定的。3、 hitTank(Tank tank)方法敌人的碰撞检测方法,如果和he

9、ro发生碰撞则hero发生爆炸。4、 run()方法敌人坦克的启动线程控制。public void run() while(isLive) try Thread.sleep(50); catch (InterruptedException e) e.printStackTrace();moveTrace();五、Shells子弹类子弹类继承了Runnable类,基本属性有子弹的坐标(x , y),方向Dir.1、 drawShells(Graphics g)方法这是一个画子弹的方法,子弹颜色通过调用坦克的颜色this.c来实现画出与坦克一样颜色的。2、 move() 子弹移动的方法,子弹方法通过坦克当前的方向来确定。3、 run()子弹启动的线程。4、 public Rectangle getRectangle()子弹的检测碰撞方法。六、Dir类这是一个枚举类。public enum Dir L,R,U,D七、Bomb爆炸类爆炸类只有一个drawBomd(Graphics g)方法,每当坦克消亡后则调用drawBomd(Graphics g)方法。八、WallNode障碍物类主要是一个public void draw(Graphics g) 方法将障碍物通过paint画出来。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号