欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    飞机大战-JAVA程序设计报告.doc

    • 资源ID:33795039       资源大小:213.50KB        全文页数:10页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    飞机大战-JAVA程序设计报告.doc

    _中国地质大学长城学院Java 程 序 设 计题目 基于Java的打飞机游戏设计与实现 系 别 信息工程系 专 业 计算机科学与技术 学生姓名 马辉 学 号 041120101 指导教师 田玉龙 2015 年 6 月 18 日基于Java的打飞机游戏设计与实现1、软件运行所需要的软硬件环境本系统是以Windows系统为操作平台,用Java编程语言来实现本系统所需功能的。本机器的配置如下:处理器:AMD A4 或英特尔同级别处理器主频:1.2Hz以上内存:1G以上硬盘:HHD 50G或更高采用的主要技术和软件编程语言:Java开发环境:windows7开发软件:Eclipse 3.72、软件开发环境配置JAVA_HOME = F:JAVAjdkPATH = % JAVA_HOME%bin;%JAVA_HOME%lib;%JAVA_HOME%jrelib;CLASSPATH = %JAVA_HOME%lib;%JAVA_HOME%jrelib;3、软件功能框图重新开始或再次游戏游戏界面 生命值降到04、软件所实现的截图5、主要功能部分的源代码import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyAdapter;import java.awt.event.KeyEvent;import java.util.Random;import java.util.Vector;import javax.swing.JOptionPane;import javax.swing.Timer;public class Controller extends KeyAdapterpublic static Vector<Bang> bangs = new Vector<Bang>();public static Vector<EBullet> ebullets = new Vector<EBullet>();public static Vector<PBullet> pbullets = new Vector<PBullet>();public static Vector<EPlane> eplanes = new Vector<EPlane>();public static PPlane pplane = new PPlane();private GamePanel gamePanel;private Random random = new Random();public static int baoZhaNum;public Controller(Vector<Bang> bang,Vector<EBullet> ebullet,Vector<PBullet> pbullet,Vector<EPlane> eplane,PPlane pplane,GamePanel gamePanel) super();this.bangs = bang;this.ebullets = ebullet;this.pbullets = pbullet;this.eplanes = eplane; this.pplane = pplane;this.gamePanel = gamePanel;/使用定时器 每隔一秒为每一个敌机 产生一个子弹Timer timer = new Timer(1000, new ActionListener() Overridepublic void actionPerformed(ActionEvent e) / TODO Auto-generated method stubfor(int i=0;i < eplanes.size();i+)EBullet ebullet = new EBullet(eplanes.elementAt(i).x, eplanes.elementAt(i).y,8,2);ebullets.add(ebullet););timer.start(); /声明定时器之后 就 开启定时器Overridepublic void keyPressed(KeyEvent e) / TODO Auto-generated method stubswitch (e.getKeyCode()case KeyEvent.VK_UP:PPlane.UP = true;break;case KeyEvent.VK_DOWN:PPlane.DOWN = true;break;case KeyEvent.VK_LEFT:PPlane.LEFT = true;break;case KeyEvent.VK_RIGHT:PPlane.RIGHT = true;break;case KeyEvent.VK_X:PPlane.isFired = true;break;Overridepublic void keyReleased(KeyEvent e) / TODO Auto-generated method stubswitch (e.getKeyCode()case KeyEvent.VK_UP:PPlane.UP = false;break;case KeyEvent.VK_DOWN:PPlane.DOWN = false;break;case KeyEvent.VK_LEFT:PPlane.LEFT = false;break;case KeyEvent.VK_RIGHT:PPlane.RIGHT = false;break;case KeyEvent.VK_X:PPlane.isFired = false;public void StartRun()new Thread()public void run()int count = 0; /通过count控制子弹 避免连续按发送键时 子弹连成线while(true)/本机移动pplane.pplaneMove();/添加本机子弹 if(PPlane.isFired && count%5=0)PBullet pbullet1 = new PBullet(pplane.x+65, pplane.y+50, 8, 15);pbullets.add(pbullet1);PBullet pbullet2 = new PBullet(pplane.x+50, pplane.y+50, 8, 15);pbullets.add(pbullet2);PBullet pbullet3 = new PBullet(pplane.x+35, pplane.y+50, 8, 15);pbullets.add(pbullet3);PBullet pbullet4 = new PBullet(pplane.x+20, pplane.y+50, 8, 15);pbullets.add(pbullet4);count+;/让本机子弹 移动 并判断是否打中敌机for(int i=0;i < pbullets.size();i+)pbullets.elementAt(i).bulletMove();int index = pbullets.elementAt(i).isPbulletHitEplane();if(index != -1) /不等于-1 证明打中了 并产生爆炸 Bang bang = new Bang(pbullets.elementAt(i).x,pbullets.elementAt(i).y,30,30);bangs.add(bang);baoZhaNum+;eplanes.remove(index);/判断本机子弹 出界就移除for(int i=0;i < pbullets.size();i+)if(pbullets.elementAt(i).y <= 0)pbullets.remove(i);/System.out.println("子弹 移除");/添加 敌机if(eplanes.size() < Global.ENEMY_NUMBER)int x = random.nextInt(Global.FRAME_WIDTH);int y = -30;EPlane eplane = new EPlane(x, y, 30, 30);eplanes.add(eplane);/让敌机 移动 并且判断出界 for(int i=0;i < eplanes.size();i+)eplanes.elementAt(i).eplaneMove();if(eplanes.elementAt(i).y >= Global.FRAME_HEIGHT)eplanes.remove(i);/让 敌机 子弹 移动 并将超过边界的敌机子弹 移除for(int i=0;i < ebullets.size();i+)ebullets.elementAt(i).bulletMove();if(ebullets.elementAt(i).isEBulletHitPPlane()ebullets.elementAt(i).isUsed = true;PPlane.life -= 2;if(ebullets.elementAt(i).y >= Global.FRAME_HEIGHT)ebullets.remove(i);for(int i=0;i < bangs.size();i+)if(bangs.elementAt(i).isBang = true)bangs.remove(i);try sleep(30); catch (InterruptedException e) e.printStackTrace();JudgeLife();gamePanel.display(bangs, ebullets, pbullets, eplanes, pplane);.start();public void JudgeLife()if(!pplane.isAlive()int result = JOptionPane.showConfirmDialog(gamePanel, "继续重玩?","提示",JOptionPane.YES_OPTION);if(result=0)newGame();elseSystem.exit(0);public void newGame()bangs.clear(); /重玩 必须将一切对象都 清空ebullets.clear();pbullets.clear();eplanes.clear();pplane = new PPlane(250, 400, 100, 100);baoZhaNum = 0;pplane.life = 100; /不重置生命值 在进行JudgeLife判断 会一直出现 是否重玩的对话框PPlane.DOWN = false; /重新开始游戏之后 必须重置 所有的静态变量 否则会保存上一次的静态变量值运动和发射子弹PPlane.UP = false;PPlane.LEFT = false;PPlane.RIGHT = false;PPlane.isFired = false;public class PBullet extends Bulletprivate Image img; /保存子弹的图片private JPanel jpanel;public JPanel getJpanel() return jpanel;public void setJpanel(JPanel jpanel) this.jpanel = jpanel;public PBullet(int x, int y, int width, int heigth) super(x, y, width, heigth);img = new ImageIcon("Image/fire.png").getImage();/ TODO Auto-generated constructor stubpublic void bulletMove() / TODO Auto-generated method stubthis.y-=20; /子弹的速度一定要大于 飞机的速度 否则 子弹会出现在飞机后面public void drawMe(Graphics g) / TODO Auto-generated method stubg.drawImage(img, x, y, width, heigth, jpanel);/在 本机子弹判断是否打中敌机public int isPbulletHitEplane()for(int j=0;j < Controller.eplanes.size();j+)Rectangle recPbullet = new Rectangle(x,y,width,heigth);Rectangle recEplane = new Rectangle(Controller.eplanes.elementAt(j).x,Controller.eplanes.elementAt(j).y,Controller.eplanes.elementAt(j).w,Controller.eplanes.elementAt(j).h); if(recPbullet.intersects(recEplane) /判断矩形重叠 return j; return -1;6、总结JAVA和Eclipse是一款非常好的开发语言和平台,类的建立使编程相对明朗,不同的组件很明确的摆在那,对于头脑不灵活的人来说真的是一款非常清晰明了的开发软件,通过这一段时间的JAVA程序开发,我感觉到尽管的是不同的语言和平台,开发程序一样需要动脑和努力,每一款软件或者游戏都不是一朝一夕能制作出的,都需要大量的构思和编程,最后还有繁琐的检查工作,通过这次接触JAVA我今后会更努力的学习它。10_

    注意事项

    本文(飞机大战-JAVA程序设计报告.doc)为本站会员(1595****071)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开