JME手機游戲設計案例源代碼SpaceWar_Plane_第1頁
JME手機游戲設計案例源代碼SpaceWar_Plane_第2頁
JME手機游戲設計案例源代碼SpaceWar_Plane_第3頁
JME手機游戲設計案例源代碼SpaceWar_Plane_第4頁
JME手機游戲設計案例源代碼SpaceWar_Plane_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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); /創(chuàng)建啟動畫面 display.setC

4、urrent(startscreen); /設置啟動畫面為當前顯示畫面 /* 加載閃屏畫面 */ public void loadFlashScreen() flashscreen=new FlashScreen(this); /創(chuàng)建閃屏 display.setCurrent(flashscreen); /設置閃屏畫面為當前顯示畫面 /* 加載游戲菜單*/ public void loadGameMenu(int menuIndex) flashscreen=null; startscreen=null; if(gmenu=null) gmenu = new GameMenu(this); /

5、創(chuàng)建菜單 gmenu.setMenuIndex(menuIndex); /設置當前菜單項 display.setCurrent(gmenu); /設置菜單畫面為當前顯示畫面 /* 加載游戲主界面 */ public void loadGameWorld() gmenu=null; if(gw=null) gw = new GameWorld(this); /創(chuàng)建游戲引擎畫布 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; /子彈發(fā)射計時 private int bulletStay=15; /子彈發(fā)射間隔時間 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(); /創(chuàng)建子彈精靈 sprbullet.defineReferencePixel(imgbullet.getWidth()/2, imgbullet.getHeight()/2);/設置參考點 this.plane=plane; /引用玩家飛機 v = new Vector(); /創(chuàng)建存儲子彈數據的Vector shootTimes=0; /初始化子彈發(fā)射間隔時間 /* 增加新子彈 */ 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; /循環(huán)繪制子彈for(int

14、i=0;i0 & shootTimes%bulletStay=0) addNew(); /增加子彈 shootTimes=0; /重置子彈發(fā)射時間 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); /設置子彈精靈位置 /當子彈發(fā)生碰撞,刪除子彈,并

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(); /創(chuàng)建定時器task = new TimerTask() /創(chuàng)建定時任務 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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論