JME手机游戏设计案例源代码SpaceWar_Plane_第1页
JME手机游戏设计案例源代码SpaceWar_Plane_第2页
JME手机游戏设计案例源代码SpaceWar_Plane_第3页
JME手机游戏设计案例源代码SpaceWar_Plane_第4页
JME手机游戏设计案例源代码SpaceWar_Plane_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、*GameMID/* author wizardyx */import javax.microedition.lcdui.Display;import javax.microedition.midlet.*;/* 游戏MIDlet */public class GameMID extends MIDlet private Display display; /声明Display private StartScreen startscreen; /声明启动画面对象 private FlashScreen flashscreen; /声明闪屏画面对象 private GameMenu gmenu;

2、/声明菜单画面对象 private GameWorld gw; /声明游戏引擎框架 private GameMusic gm; /声明音效对象 public GameMID() display = Display.getDisplay(this); /获取Display gm=new GameMusic(); loadFlashScreen(); /加载闪屏画面 public void startApp() public void pauseApp() public void destroyApp(boolean unconditional) gmenu=null; flashscreen=n

3、ull; startscreen=null; gm=null; GameMusic.releases(); System.gc(); /释放资源 /* 退出程序 */ public void exit() try destroyApp(false); catch(Exception e) notifyDestroyed(); /* 加载游戏启动画面 */ public void loadStartScreen() flashscreen=null; startscreen=null; startscreen=new StartScreen(this); /创建启动画面 display.setC

4、urrent(startscreen); /设置启动画面为当前显示画面 /* 加载闪屏画面 */ public void loadFlashScreen() flashscreen=new FlashScreen(this); /创建闪屏 display.setCurrent(flashscreen); /设置闪屏画面为当前显示画面 /* 加载游戏菜单*/ public void loadGameMenu(int menuIndex) flashscreen=null; startscreen=null; if(gmenu=null) gmenu = new GameMenu(this); /

5、创建菜单 gmenu.setMenuIndex(menuIndex); /设置当前菜单项 display.setCurrent(gmenu); /设置菜单画面为当前显示画面 /* 加载游戏主界面 */ public void loadGameWorld() gmenu=null; if(gw=null) gw = new GameWorld(this); /创建游戏引擎画布 display.setCurrent(gw); /设置游戏引擎画布为当前显示画面 gw.start(); *Bullet/* author wizardyx */import java.io.IOException;imp

6、ort java.util.Vector;import javax.microedition.lcdui.Graphics;import javax.microedition.lcdui.Image;import javax.microedition.lcdui.game.Sprite;/* * To change this template, choose Tools | Templates * and open the template in the editor. */* 玩家子弹类 */public class Bullet Plane plane; /玩家飞机 Sprite sprb

7、ullet; /子弹精灵 Image imgbullet; /子弹图像 private int bulletPower; private int bulletSpeed =4; /子弹速度 private int shootTimes; /子弹发射计时 private int bulletStay=15; /子弹发射间隔时间 public Vector v; /子弹向量 public Bullet(Plane plane) try imgbullet = Image.createImage(/mybullet.png); /子弹图像 catch (IOException ex) ex.prin

8、tStackTrace(); sprbullet=new Sprite(imgbullet,imgbullet.getWidth(),imgbullet.getHeight(); /创建子弹精灵 sprbullet.defineReferencePixel(imgbullet.getWidth()/2, imgbullet.getHeight()/2);/设置参考点 this.plane=plane; /引用玩家飞机 v = new Vector(); /创建存储子弹数据的Vector shootTimes=0; /初始化子弹发射间隔时间 /* 增加新子弹 */ public void add

9、New() /初始化子弹坐标为飞机坐标 int p_x=plane.getX()+plane.getWidth()/2; int p_y=plane.getY(); /根据子弹威力级别,添加不同的子弹 switch(bulletPower) case 1: /前两个参数是子弹的当前坐标,第3个参数是子弹在水平方向上的速度 int a = p_x-5,p_y,0; /一级子弹数据 int b = p_x+5,p_y,0; v.addElement(a); /添加子弹数据到v中 v.addElement(b); break; case 2: int a = p_x-8,p_y+5,0; /二级子弹

10、数据 int b = p_x,p_y,0; int c = p_x+8,p_y+5,0; v.addElement(a); v.addElement(b); v.addElement(c); break; case 3: int a = p_x-8,p_y+5,-1; /三级子弹数据 int b = p_x-5,p_y,0; int c = p_x+5,p_y,0; int d = p_x+8,p_y+5,1; v.addElement(a); v.addElement(b); v.addElement(c); v.addElement(d); break; case 4: int a = p

11、_x-8,p_y,0; /四级子弹数据 int b = p_x+8,p_y,0; int c = p_x,p_y,0; int d = p_x-10,p_y+8,-1; int e = p_x+10,p_y+8,1; int f = p_x-14,p_y+8,-1; int g = p_x+14,p_y+8,1; v.addElement(a); v.addElement(b); v.addElement(c); v.addElement(d); v.addElement(e); v.addElement(f); v.addElement(g); break; case 5: int a =

12、p_x-4,p_y,0; /五级子弹数据 int b = p_x,p_y,0; int c = p_x+4,p_y,0; int d = p_x-6,p_y+6,-1; int e = p_x+6,p_y+6,1; int f = p_x-10,p_y+8,-1; int g = p_x+10,p_y+8,1; int h = p_x-10,p_y+10,-2; int i = p_x+10,p_y+10,2; int j = p_x-14,p_y+12,-2; int k = p_x+14,p_y+12,2; v.addElement(a); v.addElement(b); v.addEl

13、ement(c); v.addElement(d); v.addElement(e); v.addElement(f); v.addElement(g); v.addElement(h); v.addElement(i); v.addElement(j); v.addElement(k); break; /* 删除指定的子弹 */ public void delBullet(int i) if(iv.size() v.removeElementAt(i); /* 绘制子弹 */public void render(Graphics g)int row=null; /循环绘制子弹for(int

14、i=0;i0 & shootTimes%bulletStay=0) addNew(); /增加子弹 shootTimes=0; /重置子弹发射时间 for(int i=v.size()-1;i=0;i-)bulletData = (int)v.elementAt(i); /获取子弹数据bulletData0=bulletData0+2*bulletData2; /计算子弹X坐标bulletData1-=bulletSpeed; /按子弹速度计算Y坐标 /检查子弹是否超出屏幕 if(bulletData10 | bulletData0240) delBullet(i); /当子弹超出屏幕范围,删

15、除子弹 else v.setElementAt(bulletData, i); /更新子弹数据 /* 子弹碰撞检测 */ public int collidesWith(Sprite spr) int n=0; /初始化碰撞次数 int bulletData = null; /初始化子弹数据数组 for(int i=v.size()-1;i=0;i-)bulletData = (int)v.elementAt(i); /获取子弹数据 sprbullet.setRefPixelPosition(bulletData0,bulletData1); /设置子弹精灵位置 /当子弹发生碰撞,删除子弹,并

16、记入碰撞次数 if(sprbullet.collidesWith(spr,false) delBullet(i); n+; return n; /返回碰撞次数 public void Release() v.removeAllElements(); v=null; imgbullet=null; sprbullet=null; *FlashScreenimport java.io.IOException;import java.util.Timer;import java.util.TimerTask;import javax.microedition.lcdui.Canvas;import

17、javax.microedition.lcdui.Graphics;import javax.microedition.lcdui.Image;/* * To change this template, choose Tools | Templates * and open the template in the editor. */* * * author Wizardyx */* 闪屏画面 */public class FlashScreen extends Canvas GameMID mid; Image img; private Timer timer; /声明定时器 private

18、 TimerTask task; /声明定时器任务 /* 构造方法 */ public FlashScreen(GameMID mid) this.mid=mid; try img = Image.createImage(/logo.png); catch (IOException ex) ex.printStackTrace(); FlashTimer(); /闪屏计时 repaint(); /绘制闪屏画面 /释放资源 public void release() img=null; /*按键事件处理,按任意键均加载游戏菜单画面*/ protected void keyPressed(int

19、keyCode) super.keyPressed(keyCode); timer.cancel(); release(); mid.loadGameMenu(1);/加载游戏菜单 /*绘制闪屏画面*/ protected void paint(Graphics g) g.drawImage(img,0, 0, Graphics.TOP|Graphics.LEFT); /* 闪屏画面计时 */ private void FlashTimer() timer = new Timer(); /创建定时器task = new TimerTask() /创建定时任务 private int times

20、=0; /计时变量 public void run() times+; /task任务计时,每次增加100ms(下面任务启动中定义) if(times10) /3000ms后,自动加载游戏启动界面 release(); mid.loadStartScreen(); /加载游戏启动界面 timer.cancel(); ; /启动task任务,在0ms后开始,每隔300ms运行一次 timer.schedule(task, 0,300); *GameDesign/* * To change this template, choose Tools | Templates * and open the

21、 template in the editor. */import javax.microedition.midlet.*;import javax.microedition.lcdui.*;import javax.microedition.lcdui.game.*;import java.io.IOException;/* * author Administrator */public class GameDesign /GEN-BEGIN:|fields|0| private Image bgTiles; private TiledLayer background; private Ti

22、ledLayer Meteorite; /GEN-END:|fields|0| /GEN-BEGIN:|methods|0| /GEN-END:|methods|0| public Image getBgTiles() throws java.io.IOException /GEN-BEGIN:|1-getter|0|1-preInit if (bgTiles = null) /GEN-END:|1-getter|0|1-preInit / write pre-init user code here bgTiles = Image.createImage(/bgTiles.png);/GEN-

23、BEGIN:|1-getter|1|1-postInit /GEN-END:|1-getter|1|1-postInit / write post-init user code here return this.bgTiles;/GEN-BEGIN:|1-getter|2| /GEN-END:|1-getter|2| public TiledLayer getBackground() throws java.io.IOException /GEN-BEGIN:|2-getter|0|2-preInit if (background = null) /GEN-END:|2-getter|0|2-

24、preInit / write pre-init user code here background = new TiledLayer(8, 20, getBgTiles(), 32, 32);/GEN-BEGIN:|2-getter|1|2-midInit int tiles = 1, 2, 3, 3, 3, 3, 4, 1 , 1, 2, 3, 3, 3, 3, 4, 1 , 1, 2, 3, 3, 3, 3, 4, 1 , 1, 2, 3, 3, 3, 3, 4, 1 , 1, 2, 3, 3, 3, 3, 4, 1 , 1, 2, 3, 3, 3, 3, 4, 1 , 1, 2, 3,

25、 3, 3, 3, 4, 1 , 1, 2, 3, 3, 3, 3, 4, 1 , 1, 2, 3, 3, 3, 3, 4, 1 , 1, 2, 3, 3, 3, 3, 4, 1 , 1, 2, 3, 3, 3, 3, 4, 1 , 1, 2, 3, 3, 3, 3, 4, 1 , 1, 2, 3, 3, 3, 3, 4, 1 , 1, 2, 3, 3, 3, 3, 4, 1 , 1, 2, 3, 3, 3, 3, 4, 1 , 1, 2, 3, 3, 3, 3, 4, 1 , 1, 2, 3, 3, 3, 3, 4, 1 , 1, 2, 3, 3, 3, 3, 4, 1 , 1, 2, 3,

26、 3, 3, 3, 4, 1 , 1, 2, 3, 3, 3, 3, 4, 1 ;/GEN-END:|2-getter|1|2-midInit / write mid-init user code here for (int row = 0; row 20; row+) /GEN-BEGIN:|2-getter|2|2-postInit for (int col = 0; col 8; col+) background.setCell(col, row, tilesrowcol); /GEN-END:|2-getter|2|2-postInit / write post-init user code here return background;/GEN-BEGIN:|2-getter|3| /GEN-END:|2-getter|3| public TiledLayer getMeteorite() th

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论