资源描述:
《java手机游戏实验5》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验五射击游戏一、实验目的1.熟悉射击类游戏规则。2.学习游戏过程中的碰撞检测方法。3.学习J2ME的记录管理系统。二、实验环境Eclipse、WTK、Proguard。三、实验内容完成打飞机游戏。游戏规则是:玩家控制一架飞机在夜空飞行,按手机方向键可移动飞机,按中心键可向前方发射导弹,游戏时背景不变,屏幕上会随时出现敌机,并不断开火。玩家的任务是尽可能多的消灭敌机。当玩家飞机中弹时游戏结束,系统提示本次战斗消灭的敌机数量,以及历史消灭敌机的最高记录。四、实验步骤1.用Eclipse创建项目及MIDlet框架2.准备好游戏所用资源图片:3.根据游戏中存在的对象以及对象之间的关系
2、,定义五个类分别管理导弹、飞机、玩家飞机、敌机和爆炸。4.添加一个MainCanvas类。把MainCanas和Midlet框架联系起来。5.思考题(1)理解游戏流程.(2)本程序存在问题:游戏结束后记录本次得分和历史得分,玩家飞机还可以继续打敌机,分数继续累加。。。(3)修改代码:A)本程序的RMS是否有效?去掉SaveHighScore()和LoadHighScore()观察运行结果有无差异?B)如何修改代码,使得每架玩家飞机可同时发射三枚导弹。怎么修改可以使得每家玩家飞机和敌机均可发射三枚导弹。C)如何修改代码,使得玩家可以游戏三轮,每轮中弹后记录本次得分和历史最高分。重
3、新一轮游戏,分数应该从0开始重新计本轮得分。三轮之后游戏结束,保持游戏画面的静止。如何修改代码实现上述功能?(4)给游戏添加音效。主要类参考代码:BulletSpritepublicclassBulletSpriteextendsSprite{privateintm_nSpeedX=0;privateintm_nSpeedY=0;BulletSprite(Imageimage,intframeWidth,intframeHeight){super(image,frameWidth,frameHeight);defineReferencePixel(frameWidth/2,fr
4、ameHeight/2);setVisible(false);}publicvoidSetSpeed(intnSpeedX,intnSpeedY){m_nSpeedX=nSpeedX;m_nSpeedY=nSpeedY;}publicvoidLogic(){if(isVisible()==false)return;intnX=getRefPixelX()+m_nSpeedX;intnY=getRefPixelY()+m_nSpeedY;setRefPixelPosition(nX,nY);if(getRefPixelX()<-10
5、
6、getRefPixelX()>MainCan
7、vas.m_nScrWidth+10
8、
9、getRefPixelY()<-10
10、
11、getRefPixelY()>MainCanvas.m_nScrHeight+10)setVisible(false);}ExplosionSpritepublicclassExplosionSpriteextendsSprite{ExplosionSprite(Imageimage,intframeWidth,intframeHeight){super(image,frameWidth,frameHeight);defineReferencePixel(frameWidth/2,frameHeig
12、ht/2);setVisible(false);}publicvoidLogic(){if(isVisible()==false)return;intnFrame=getFrame();nFrame++;if(nFrame>7){setVisible(false);return;}setFrame(nFrame);}}PlaneSpritepublicclassPlaneSpriteextendsSprite{protectedintm_nSpeedX=0;protectedintm_nSpeedY=0;publicBulletSpritem_Bullet;publicPlan
13、eSprite(Imageimg,intnWidth,intnHeight){super(img,nWidth,nHeight);try{ImageBImg=Image.createImage("/Bullet.png");m_Bullet=newBulletSprite(BImg,5,5);}catch(IOExceptione){}setVisible(false);defineReferencePixel(nWidth/2,nHeight/2);}publicvoidSetSpeed(