java手机游戏实验5

java手机游戏实验5

ID:42818984

大小:66.50 KB

页数:7页

时间:2019-09-23

上传者:U-2441
java手机游戏实验5_第1页
java手机游戏实验5_第2页
java手机游戏实验5_第3页
java手机游戏实验5_第4页
java手机游戏实验5_第5页
资源描述:

《java手机游戏实验5》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

实验五射击游戏一、实验目的1.熟悉射击类游戏规则。2.学习游戏过程中的碰撞检测方法。3.学习J2ME的记录管理系统。二、实验环境Eclipse、WTK、Proguard。三、实验内容完成打飞机游戏。游戏规则是:玩家控制一架飞机在夜空飞行,按手机方向键可移动飞机,按中心键可向前方发射导弹,游戏时背景不变,屏幕上会随时出现敌机,并不断开火。玩家的任务是尽可能多的消灭敌机。当玩家飞机中弹时游戏结束,系统提示本次战斗消灭的敌机数量,以及历史消灭敌机的最高记录。四、实验步骤1.用Eclipse创建项目及MIDlet框架2.准备好游戏所用资源图片:3.根据游戏中存在的对象以及对象之间的关系,定义五个类分别管理导弹、飞机、玩家飞机、敌机和爆炸。4.添加一个MainCanvas类。把MainCanas和Midlet框架联系起来。5.思考题 (1)理解游戏流程.(2)本程序存在问题:游戏结束后记录本次得分和历史得分,玩家飞机还可以继续打敌机,分数继续累加。。。(3)修改代码:A)本程序的RMS是否有效?去掉SaveHighScore()和LoadHighScore()观察运行结果有无差异?B)如何修改代码,使得每架玩家飞机可同时发射三枚导弹。怎么修改可以使得每家玩家飞机和敌机均可发射三枚导弹。C)如何修改代码,使得玩家可以游戏三轮,每轮中弹后记录本次得分和历史最高分。重新一轮游戏,分数应该从0开始重新计本轮得分。三轮之后游戏结束,保持游戏画面的静止。如何修改代码实现上述功能?(4)给游戏添加音效。主要类参考代码:BulletSpritepublicclassBulletSpriteextendsSprite{privateintm_nSpeedX=0;privateintm_nSpeedY=0;BulletSprite(Imageimage,intframeWidth,intframeHeight){super(image,frameWidth,frameHeight);defineReferencePixel(frameWidth/2,frameHeight/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||getRefPixelX()>MainCanvas.m_nScrWidth+10||getRefPixelY()<-10||getRefPixelY()>MainCanvas.m_nScrHeight+10)setVisible(false);}ExplosionSpritepublicclassExplosionSpriteextendsSprite{ExplosionSprite(Imageimage,intframeWidth,intframeHeight){super(image,frameWidth,frameHeight);defineReferencePixel(frameWidth/2,frameHeight/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;publicPlaneSprite(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(intnSpeedX,intnSpeedY){m_nSpeedX=nSpeedX;m_nSpeedY=nSpeedY;}publicvoidLogic(){m_Bullet.Logic(); }}MyPlane:importjavax.microedition.lcdui.Image;importjavax.microedition.lcdui.game.GameCanvas;publicclassMyPlaneextendsPlaneSprite{MyPlane(Imageimg,intnWidth,intnHeight){super(img,nWidth,nHeight);m_nSpeedY=2;m_nSpeedX=2;}publicvoidInput(intkeyStates){if(isVisible()==false)return;intnX=getRefPixelX();intnY=getRefPixelY();if((keyStates&GameCanvas.UP_PRESSED)!=0)nY-=m_nSpeedY;if((keyStates&GameCanvas.LEFT_PRESSED)!=0)nX-=m_nSpeedX;if((keyStates&GameCanvas.RIGHT_PRESSED)!=0)nX+=m_nSpeedX;if((keyStates&GameCanvas.DOWN_PRESSED)!=0)nY+=m_nSpeedY;if((keyStates&GameCanvas.FIRE_PRESSED)!=0)CreateBullet();setRefPixelPosition(nX,nY);}publicvoidLogic(){super.Logic();}privatevoidCreateBullet(){if(m_Bullet.isVisible())return;m_Bullet.setRefPixelPosition(getRefPixelX(),getRefPixelY()); m_Bullet.SetSpeed(0,-3);m_Bullet.setVisible(true);}}Enemy:importjava.util.Random;importjavax.microedition.lcdui.Image;publicclassEnemyextendsPlaneSprite{privateRandomm_Random;Enemy(Imageimg,intnWidth,intnHeight){super(img,nWidth,nHeight);m_Random=newRandom();}publicvoidLogic(){super.Logic();if(isVisible()==false)return;intnX=getRefPixelX()+m_nSpeedX;intnY=getRefPixelY()+m_nSpeedY;setRefPixelPosition(nX,nY);if(getRefPixelX()<-10||getRefPixelX()>MainCanvas.m_nScrWidth+10||getRefPixelY()<-10||getRefPixelY()>MainCanvas.m_nScrHeight+10)setVisible(false);CreateBullet();}privatevoidCreateBullet(){if(m_Bullet.isVisible())return;intRS=Math.abs(m_Random.nextInt()%30);if(RS!=0)return;intnSpeedX=m_Random.nextInt()%2;intnSpeedY=Math.abs(m_Random.nextInt()%2)+1;m_Bullet.SetSpeed(nSpeedX,nSpeedY); m_Bullet.setRefPixelPosition(getRefPixelX(),getRefPixelY());m_Bullet.setVisible(true);}}

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭