ImageVerifierCode 换一换
格式:DOC , 页数:9 ,大小:32.04KB ,
资源ID:9519777      下载积分:6 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/9519777.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(坦克大战详细设计说明书.doc)为本站上传会员【快乐****生活】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

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

1、软件具体设计说明书 一、 TankWar类: TankWar继承Frame类。 1、 paint( )方法 paint( ) 方法关键实现对坦克类和子弹类, 障碍物类和爆炸类等画到窗口上。坦克类又分为MyTank和EnwmyTank 两类。对这两类用不一样颜色画到窗口上。画子弹时经过传输坦克颜色画出对应子弹颜色。 子弹画坦克死亡则不再对其进行重画。 2、 update( )方法。 update( ) 方法关键是为了处理, 重画频率太快, paint( ) 方法还没有完成, 重画坦克时出现闪烁现象。 经过双缓冲技术将全部东西画在虚拟图片上,一次性显示出来处理闪烁现象。

2、3、 内部类KeyMon键盘监听 KeyMon继承KeyAdapter类。经过KeyMon类监听, 用户能够经过键盘控制自己坦克。 4、 内部类MyTankWarThread MyTankWarThread实现Runnable接口, 经过MyTankWarThread实现对坦克重画, 实现坦克移动。 5、 showFrame( )方法 showFrame( )方法关键是设置一个窗口及其多种参数。 二、 Tank类 Tank类是实现Runnable接口一个抽象类 1、 Tank类关键属性有: int x; //坦克位置 int y; // int old

3、x; //坦克上一步坐标 int oldy; // Dir dir; // Tank方向组员变量 int speed = 5; boolean 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()方法依据坦克类型不一样能够画出不一样类型坦克和不一样方向坦克。敌人

4、坦克用BLUE画出来, 自己坦克用RED颜色画出来, 以区分敌我。 4、 fire()方法 fire()方法功效是实现打出一颗子弹, fire()方法调用了画坦克颜色变量 c , 画出与坦克一样颜色子弹, 以区分子弹是那一方发出来。 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(

5、this.getRectangle())) { return true; } } return false; } 6、 getRectangle()方法 该方法关键是用来检测是否发生了碰撞。 public Rectangle getRectangle() { return new Rectangle(x, y, TANK_WIDTH, TANK_HEIGHT); } 7、 add(int count, TankWar tw)方法 该方法是用来添加敌人坦克, 当敌人坦克数量降低时, 而此时敌人count又未小于0时添加对应数量敌人坦克来增加游

6、戏可玩性。 三、 MyTank类 MyTank类继承Tank类 1、 locDir(KeyEvent e)方法 经过键盘监听, 对按键进行监听来实现用户能够经过W D S A四个方向键对坦克控制 2、 keyReleased(KeyEvent e)方法 该方法关键是为了预防连续发子弹问题, 只有放开SPACE按键才能够发弹, 这么就增加了游戏可玩性。 3、 stay()方法 该方法关键实现暂停功效, 这个是本游戏代码中一个亮点, 经过线程来实现 public void stay() { int tc = Thread.activeCount(); Thr

7、ead[] threads = new Thread[tc]; Thread.enumerate(threads); if (tw.flag) { for (int i = 0; i < threads.length; i++) { System.out.println(tc + ":suspend " + threads[i].getName()); if (threads[i].getName().matches("^Thread-.*")) { threads[i].suspend(); tw.flag = false;

8、 } } } else if (! tw.flag) { for (int i = 0; i < threads.length; i++) { System.out.println(tc + ":resume " + threads[i].getName()); if (threads[i].getName().matches("^Thread-.*")) { threads[i].resume(); tw.flag = true; } } } } 4、 move()方法 该方

9、法是实现坦克移动, 假如碰到障碍物或出界, 则返回上一次位置, 经过(oldX , oldY)坐标统计坦克每一次移动位置。 public void move() { if (dir == Dir.U) { oldy = y; y = y - speed; if (isHitWall()) { y = oldy; } } else if (dir == Dir.R) { oldx = x; x = x + speed; if (isHitWall()) { x = oldx; } } else

10、 if (dir == Dir.D) { oldy = y; y = y + speed; if (isHitWall()) { y = oldy; } } else if (dir == Dir.L) { oldx = x; x = x - speed; if (isHitWall()) { x = oldx; } } //判定坦克出界 if (x > TankWar.GAME_WIDTH - TANK_WIDTH - 5) { x = TankWar.GAME_WIDTH -

11、 TANK_WIDTH - 5; } if (x < 5) { x = 5; } if (y > TankWar.GAME_HEIGHT - TANK_HEIGHT - 5) { y = TankWar.GAME_HEIGHT - TANK_HEIGHT - 5; } if (y < TANK_HEIGHT) { y = TANK_HEIGHT; } } 5、 drawTank()方法 这个方法是实现坦克自动移动, 玩家能够经过方向键改版方向, 移动过程中能够发射子弹。 public void drawTank(Gra

12、phics g) { super.drawTank(g); if (isStay) { move(); } } 四、 EneyTank类 EnemyTank类继承Tank类 1、 moveTrace()方法 该方法实现是敌人坦克伪智能功效, 这个是本坦克大战一个亮点。敌人坦克出来后会依据目前位置和hero位置比较, 进而对hero进行追击。 public void moveTrace(){ if(step>0){ move(); step--; return; } int dx = this.x- tw.h

13、ero.x ; int dy = this.y- 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.R; } } else { if (dy > 0) { this.dir = Dir.U; } el

14、se if (dy < 0) { this.dir = Dir.D; } } } else { move(); } step = (int) (Math.random()*12+3); } 2、 move()方法 敌人坦克移动时调用方法, 方向是经过数来确定。 3、 hitTank(Tank tank)方法 敌人碰撞检测方法, 假如和hero发生碰撞则hero发生爆炸。 4、 run()方法 敌人坦克开启线程控制。 public void run() { while(isLive) { try {

15、 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画出来。

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服