56J2ME手机游戏设计案例源代码-SpaceWar_Bonus

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

******GameMID/*@authorwizardyx*/importjavax.microedition.lcdui.Display;importjavax.microedition.midlet.*;/*游戏MIDlet*/publicclassGameMIDextendsMIDlet{privateDisplaydisplay;//声明DisplayprivateStartScreenstartscreen;//声明启动画面对象privateFlashScreenflashscreen;//声明闪屏画面对象privateGameMenugmenu;//声明菜单画面对象privateGameWorldgw;//声明游戏引擎框架privateGameMusicgm;//声明音效对象publicGameMID(){display=Display.getDisplay(this);//获取Displaygm=newGameMusic();loadFlashScreen();//加载闪屏画面}publicvoidstartApp(){}publicvoidpauseApp(){}publicvoiddestroyApp(booleanunconditional){gmenu=null;flashscreen=null;startscreen=null;gm=null;GameMusic.releases();System.gc();//释放资源}/*退出程序*/publicvoidexit(){try{destroyApp(false);}catch(Exceptione){}notifyDestroyed();}/*加载游戏启动画面*/publicvoidloadStartScreen(){flashscreen=null;startscreen=null;startscreen=newStartScreen(this);//创建启动画面display.setCurrent(startscreen);//设置启动画面为当前显示画面}/*加载闪屏画面*/publicvoidloadFlashScreen(){flashscreen=newFlashScreen(this);//创建闪屏display.setCurrent(flashscreen);//设置闪屏画面为当前显示画面}/*加载游戏菜单*/publicvoidloadGameMenu(intmenuIndex){flashscreen=null;startscreen=null;if(gmenu==null){gmenu=newGameMenu(this);//创建菜单}gmenu.setMenuIndex(menuIndex);//设置当前菜单项display.setCurrent(gmenu);//设置菜单画面为当前显示画面}/*加载游戏主界面*/publicvoidloadGameWorld(){gmenu=null;if(gw==null){gw=newGameWorld(this);//创建游戏引擎画布}display.setCurrent(gw);//设置游戏引擎画布为当前显示画面gw.start();}}***********Bonus/*@authorwiardyx*/importjava.util.Vector;importjavax.microedition.lcdui.Graphics;importjavax.microedition.lcdui.Image;importjavax.microedition.lcdui.game.Sprite;/*宝物奖励类*/publicclassBonus{protectedVectorv;//存储奖励数据privateImagebonus;//奖励宝物图像privateSpritesprPower,sprResult,sprBlood;//奖励精灵,分别为子弹威力、加分和加血privateintwidth,height;//精灵运动范围/*构造奖励对象*/publicBonus(){width=GameWorld.ScreenWidth;height=GameWorld.ScreenHeight;v=newVector();//创建Vector//创建奖励精灵try{bonus=Image.createImage(/bonus.png);sprPower=newSprite(Image.createImage(bonus,0,0,36,12,Sprite.TRANS_NONE),12,12);sprResult=newSprite(Image.createImage(bonus,36,0,24,12,Sprite.TRANS_NONE),12,12);sprBlood=newSprite(Image.createImage(bonus,60,0,24,12,Sprite.TRANS_NONE),12,12);}catch(Exceptionex){ex.printStackTrace();}}/*在坐标x,y创建奖励对象,type代表奖励的种类*/protectedvoidaddBonus(intx,inty,inttype){intb_x=x;intb_y=y;intt=type;intBonusData[]={b_x,b_y,t};//设置奖励数据v.addElement(BonusData);//将奖励数据加到v}/*释放资源*/protectedvoidreleaseResourece(){v.removeAllElements();bonus=null;sprPower=null;sprResult=null;sprBlood=null;}/*更新数据*/protectedvoidupdate(Planeplane){int[]BonusData=null;for(inti=0;iv.size();i++){//循环取得奖励数据BonusData=(int[])(v.elementAt(i));BonusData[1]++;//奖励Y坐标增加if(BonusData[1]height){//如果坐标超出范围则删除v.removeElementAt(i);}else{v.setElementAt(BonusData,i);//重设奖励数据}//按类型计算奖励的运行效果switch(BonusData[2]-1){case0://计算弹药sprPower.setPosition(BonusData[0],BonusData[1]);//设置位置sprPower.nextFrame();//移动帧//检查是否与玩家飞机相撞if(sprPower.collidesWith(plane,false)){if(plane.getBullet().getBulletPower()5){//如果子弹威力级别小于5,则增加威力级别plane.getBullet().setBulletPower(plane.getBullet().getBulletPower()+1);}v.removeElementAt(i);//移除}break;case1://计算加分sprResult.setPosition(BonusData[0],BonusData[1]);//设置位置sprResult.nextFrame();//移动帧//检查是否与玩家飞机相撞if(sprResult.collidesWith(plane,false)){plane.addResult(500);//加分v.removeElementAt(i);//移除}break;case2://计算补血if(plane.getLifes()0){//检查玩家飞机是否存活sprBlood.setPosition(BonusData[0],BonusData[1]);//设置位置sprBlood.nextFrame();//移动帧//检查是否与玩家飞机相撞if(sprBlood.collidesWith(plane,false)){plane.setLifes(plane.getLifes()+30);//加生命if(plane.getLifes()100){//检查生命值是否大于100plane.setLifes(100);}v.removeElementAt(i);//移除}}break;}}}/*绘制奖励*/protectedvoidPaint(Graphicsg){int[]BonusData=null;//循环获取奖励对象,并绘制for(inti=0;iv.size();i++){BonusData=(int[])(v.elementAt(i));switch(BonusData[2]){case1://绘制子弹威力奖励sprPower.paint(g);break;case2://绘制加分奖励sprResult.paint(g);break;case3://绘制补血奖励sprBlood.paint(g);break;}}}}************Bulletimportjava.io.IOException;importjava.util.Vector;importjavax.microedition.lcdui.Graphics;importjavax.microedition.lcdui.Image;importjavax.microedition.lcdui.game.Sprite;/**Tochangethistemplate,chooseTools|Templates*andopenthetemplateintheeditor.*//****@authorAdministrator*/publicclassBullet{Planeplane;//玩家飞机Spritesprbullet;//子弹精灵Imageimgbullet;//子弹图像privateintbulletPower;privateintbulletSpeed=4;//子弹速度privateintshootTimes;//子弹发射计时privateintbulletStay=15;//子弹发射间隔时间publicVectorv;//子弹矢量publicBullet(Planeplane){try{imgbullet=Image.createImage(/mybullet.png);//子弹图像}catch(IOExceptionex){ex.printStackTrace();}sprbullet=newSprite(imgbullet,imgbullet.getWidth(),imgbullet.getHeight());//创建子弹精灵sprbullet.defineReferencePixel(imgbullet.getWidth()/2,imgbullet.getHeight()/2);//设置参考点this.plane=plane;//引用玩家飞机v=newVector();//创建存储子弹数据的VectorshootTimes=0;//初始化子弹发射间隔时间}/*增加新子弹*/publicvoidaddNew(){//初始化子弹坐标为飞机坐标intp_x=plane.getX()+plane.getWidth()/2;intp_y=plane.getY();//根据子弹威力级别,添加不同的子弹switch(bulletPower){case1:{inta[]={p_x-5,p_y,0};//一级子弹数据intb[]={p_x+5,p_y,0};v.addElement(a);//添加子弹数据到v中v.addElement(b);}break;case2:{inta[]={p_x-8,p_y+5,0};//二级子弹数据intb[]={p

1 / 69
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功