您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 飞机大战JAVA程序设计报告
中国地质大学长城学院Java程序设计题目基于Java的打飞机游戏设计与实现系别信息工程系专业计算机科学与技术学生姓名马辉学号041120101指导教师田玉龙2015年6月18日基于Java的打飞机游戏设计与实现1、软件运行所需要的软硬件环境本系统是以Windows系统为操作平台,用Java编程语言来实现本系统所需功能的。本机器的配置如下:处理器:AMDA4或英特尔同级别处理器主频:1.2Hz以上内存:1G以上硬盘:HHD50G或更高采用的主要技术和软件编程语言:Java开发环境:windows7开发软件:Eclipse3.72、软件开发环境配置JAVA_HOME=F:\JAVA\jdkPATH=%JAVA_HOME%\bin;%JAVA_HOME%\lib;%JAVA_HOME%\jre\lib;CLASSPATH=%JAVA_HOME%\lib;%JAVA_HOME%\jre\lib;3、软件功能框图4、软件所实现的截图游戏界面重新开始或再次游戏生命值降到05、主要功能部分的源代码importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.event.KeyAdapter;importjava.awt.event.KeyEvent;importjava.util.Random;importjava.util.Vector;importjavax.swing.JOptionPane;importjavax.swing.Timer;publicclassControllerextendsKeyAdapter{publicstaticVectorBangbangs=newVectorBang();publicstaticVectorEBulletebullets=newVectorEBullet();publicstaticVectorPBulletpbullets=newVectorPBullet();publicstaticVectorEPlaneeplanes=newVectorEPlane();publicstaticPPlanepplane=newPPlane();privateGamePanelgamePanel;privateRandomrandom=newRandom();publicstaticintbaoZhaNum;publicController(VectorBangbang,VectorEBulletebullet,VectorPBulletpbullet,VectorEPlaneeplane,PPlanepplane,GamePanelgamePanel){super();this.bangs=bang;this.ebullets=ebullet;this.pbullets=pbullet;this.eplanes=eplane;this.pplane=pplane;this.gamePanel=gamePanel;//使用定时器每隔一秒为每一个敌机产生一个子弹Timertimer=newTimer(1000,newActionListener(){@OverridepublicvoidactionPerformed(ActionEvente){//TODOAuto-generatedmethodstubfor(inti=0;ieplanes.size();i++){EBulletebullet=newEBullet(eplanes.elementAt(i).x,eplanes.elementAt(i).y,8,2);ebullets.add(ebullet);}}});timer.start();//声明定时器之后就开启定时器}@OverridepublicvoidkeyPressed(KeyEvente){//TODOAuto-generatedmethodstubswitch(e.getKeyCode()){caseKeyEvent.VK_UP:PPlane.UP=true;break;caseKeyEvent.VK_DOWN:PPlane.DOWN=true;break;caseKeyEvent.VK_LEFT:PPlane.LEFT=true;break;caseKeyEvent.VK_RIGHT:PPlane.RIGHT=true;break;caseKeyEvent.VK_X:PPlane.isFired=true;break;}}@OverridepublicvoidkeyReleased(KeyEvente){//TODOAuto-generatedmethodstubswitch(e.getKeyCode()){caseKeyEvent.VK_UP:PPlane.UP=false;break;caseKeyEvent.VK_DOWN:PPlane.DOWN=false;break;caseKeyEvent.VK_LEFT:PPlane.LEFT=false;break;caseKeyEvent.VK_RIGHT:PPlane.RIGHT=false;break;caseKeyEvent.VK_X:PPlane.isFired=false;}}publicvoidStartRun(){newThread(){publicvoidrun(){intcount=0;//通过count控制子弹避免连续按发送键时子弹连成线while(true){//本机移动pplane.pplaneMove();//添加本机子弹if(PPlane.isFired&&count%5==0){PBulletpbullet1=newPBullet(pplane.x+65,pplane.y+50,8,15);pbullets.add(pbullet1);PBulletpbullet2=newPBullet(pplane.x+50,pplane.y+50,8,15);pbullets.add(pbullet2);PBulletpbullet3=newPBullet(pplane.x+35,pplane.y+50,8,15);pbullets.add(pbullet3);PBulletpbullet4=newPBullet(pplane.x+20,pplane.y+50,8,15);pbullets.add(pbullet4);}count++;//让本机子弹移动并判断是否打中敌机for(inti=0;ipbullets.size();i++){pbullets.elementAt(i).bulletMove();intindex=pbullets.elementAt(i).isPbulletHitEplane();if(index!=-1)//不等于-1证明打中了并产生爆炸{Bangbang=newBang(pbullets.elementAt(i).x,pbullets.elementAt(i).y,30,30);bangs.add(bang);baoZhaNum++;eplanes.remove(index);}}//判断本机子弹出界就移除for(inti=0;ipbullets.size();i++){if(pbullets.elementAt(i).y=0){pbullets.remove(i);//System.out.println(子弹移除);}}//添加敌机if(eplanes.size()Global.ENEMY_NUMBER){intx=random.nextInt(Global.FRAME_WIDTH);inty=-30;EPlaneeplane=newEPlane(x,y,30,30);eplanes.add(eplane);}//让敌机移动并且判断出界for(inti=0;ieplanes.size();i++){eplanes.elementAt(i).eplaneMove();if(eplanes.elementAt(i).y=Global.FRAME_HEIGHT){eplanes.remove(i);}}//让敌机子弹移动并将超过边界的敌机子弹移除for(inti=0;iebullets.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(inti=0;ibangs.size();i++){if(bangs.elementAt(i).isBang==true){bangs.remove(i);}}try{sleep(30);}catch(InterruptedExceptione){e.printStackTrace();}JudgeLife();gamePanel.display(bangs,ebullets,pbullets,eplanes,pplane);}}}.start();}publicvoidJudgeLife(){if(!pplane.isAlive()){intresult=JOptionPane.showConfirmDialog(gamePanel,继续重玩?,提示,JOptionPane.YES_OPTION);if(result==0){newGame();}else{System.exit(0);}}}publicvoidnewGame(){bangs.clear();//重玩必须将一切对象都清空ebullets.clear();pbullets.clear();eplanes.clear();pplane=newPPlane(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;}}publicclassPBulletextendsBullet{privateImageimg;//保存子弹的图片privateJPaneljpanel;publicJPanelgetJpanel(){returnjpanel;}publicvoidsetJpanel(JPaneljpanel){this.jpanel=jpanel;}publicPBullet(intx,inty,intwidth,intheigth){super(x,y,width,heigth);img=newImageIcon(Image/fire.png).getImage();//TODOAuto-generatedconstructorstub}publicvoidbulletMove(){//TODOAuto-generatedmethodstubthis.y-=20;//子弹的速度一定要大于飞机的速度否则子弹会出现在飞机后面}publicvoiddrawMe(Graphicsg){//TODOAuto-generatedmethodstubg.drawImage(img,x,y,width,heigth,jpanel);}//在本机子弹判断是否打中敌机publi
本文标题:飞机大战JAVA程序设计报告
链接地址:https://www.777doc.com/doc-1987367 .html