欢迎来到天天文库
浏览记录
ID:33650511
大小:376.30 KB
页数:16页
时间:2019-02-27
《java课程设计报告-保卫太空小游戏》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、Java课程设计--多线程实现姓名:学号:2402100211班号:24021002专业:计算机科学与技术一:程序概述:该程序主体分为两部分一部分是演示两个航天器的对接。第二个部分是一个游戏,游戏名为《保卫太空》。该游戏中,我们的航天器在围绕地球转动,而有一些不怀好意的人想要破坏我们的飞行器,试图用导弹将其打下,我们的任务就是保护航天器,拦截敌人发出的导弹,一共有四关,随着关数升高,敌人炮弹的速度将会越来越快,敌人的大炮也会增多。二:程序分析:(1)程序中主要用到的类:lContinent类:该类是大陆线程类,控制大陆的移动,形成地球转动的效果。lView类:该类是JPanel类的
2、子类,该程序用于画界面,所有的图形全都画在View类的对象中。lAircraft类:该类是飞行器的抽象父类,提供飞行器的一些共有属性,抽象方法等,继承了线程类Thread。lShenEight类:该类是Aircraft的子类,神州八号类,可以绕地球飞行,并且可以与指定的TianGong类对象完成对接任务。lTianGong类:该类是Aircraft的子类,天宫类,可以实现绕地球飞行,并且可以在与指定的ShenEight对象对接后控制ShenEight对象一起运动。lParentBarbette类:该类是大炮的抽象父类,提供大炮的一半属性,以及抽象方法。lComBarbette类:该
3、类是ParentBarbette类的子类,并且实现了Rounnable接口,该类对象由线程控制,控制大炮发炮的速度等,攻击围绕地球运动的飞行器。lPlayerBarbette类:该类是ParentBarbette类的子类,用于拦截敌人的炮弹。实现了KeyListener接口,可以响应键盘的空格以及上下左右方向键。按下空格键,玩家炮发出炮弹,方向键可以移动炮口,使其瞄准目标。lCountScore类:该类是记分类,在游戏中,该类可以通过拦截是否成功或者是敌方炮弹是否攻击到飞行器来进行加减分,从而判断是否过关等等。三:程序主要类的实现:(1)Continent类:publicclass
4、ContinentextendsThread{Viewearth;Mainlandland1;Mainlandland2;publicContinent(Point2D.Doublecen1,Point2D.Doublecen2,Viewear){earth=ear;land1=newMainland(cen1,ear);land2=newMainland(cen2,ear);}publicvoidrun(){while(true){land2.changePos();//平移中心land1.changePos();//平移中心earth.repaint();//窗口重绘try{s
5、leep(10);}catch(InterruptedExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}}publicvoiddrawMainland(Graphics2Dg){g.setClip(earth.getEarth());//设置剪贴区ColoroldColor=g.getColor();g.setColor(newColor(0,150,0));//设置前景色g.fill(land1.polygon);g.fill(land2.polygon);g.setClip(null);//消除剪贴区
6、g.setColor(oldColor);}}classMainland{staticfinalintN=100;staticfinalintUserRadius=56;Viewearth;Point2D.Doublecenter;intxPos1[]={/*画图坐标,因太多,故省略*/};intyPos1[]={/*画图坐标,因太多,故省略*/};intxPos2[]={/*画图坐标,因太多,故省略*/};intyPos2[]={/*画图坐标,因太多,故省略*/};publicGeneralPathpolygon;publicMainland(Point2D.Doublecen,
7、Viewear){center=newPoint2D.Double();center.x=cen.x;center.y=cen.y;earth=ear;drawPolygon();}privatebooleanchangeCoor(int[]x,int[]y,int[]xPos,int[]yPos){if(x.length!=xPos.length
8、
9、y.length!=yPos.length
10、
11、xPos.length!=yPos.length)returnfalse
此文档下载收益归作者所有