J2ME手機游戲開發(fā)入門_第1頁
J2ME手機游戲開發(fā)入門_第2頁
J2ME手機游戲開發(fā)入門_第3頁
J2ME手機游戲開發(fā)入門_第4頁
J2ME手機游戲開發(fā)入門_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

J2ME游戲開發(fā)入門主要內容平臺的特點J2ME的優(yōu)勢和劣勢J2ME程序的運行環(huán)境J2ME程序的開發(fā)環(huán)境游戲的種類游戲程序的根本功能J2ME游戲開發(fā)關鍵的包和類J2ME游戲開發(fā)實戰(zhàn)2程序的本質1、指令12、指令2…程序程序程序程序CPU程序是指令的集合程序通過調用CPU的指令實現(xiàn)功能3現(xiàn)代程序操作系統(tǒng)程序硬體環(huán)境調用CPU的指令調用OS的API4平臺硬件環(huán)境不同:不同的CPU,不同的指令集軟件環(huán)境不同:不同的操作系統(tǒng)5開發(fā)程序麻煩!6解決的方法利用Java跨平臺的特性只要支持Java,就可以運行Java程序但是,Java也有著顯著的劣勢:運行效率低,特別是在受限環(huán)境中7Java平臺8J2ME開發(fā)平臺Java虛擬機ConfigurationProfile9開發(fā)環(huán)境J2SE-1_5_0J2MEWirelessToolkit2.5Eclipse3.4.0Release版EclipseMe1.710CLDC和MIDPJ2ME平臺定義了兩個底層配置CDC和CLDCCDC〔ConnectDeviceConfiguration,連接設備配置〕標準用于比PC機小、但同時具有多于512K內存的設備,這一類設備包括互聯(lián)網絡電視系統(tǒng)、機頂盒、POS系統(tǒng)、汽車導航以及娛樂系統(tǒng)CLDC〔ConnectedLimitedDeviceConfiguration,有限連接設備配置〕標準應用于內存128K到512K之間的消費類電子設備,這一類別中典型的代表設備包含呼叫器、移動、個人數字助理PDA和POS終端等MIDP:移動信息設備簡表,是J2ME補充CLDC配置的JavaAPI集合,也是基于CDLC的最上層。MIDP為開發(fā)者提供了計時器、簡單固定存儲器、通過HTTP的連網等常用API。11游戲種類種類描述動作游戲(Arcade/Action)節(jié)奏快、圖像豐富、高度交互性。比如Quake和CS益智類游戲(Puzzle)學要邏輯推理的游戲,比如Tetris卡片游戲(Card)類似Poker、BlackJack這樣的紙牌游戲戰(zhàn)略游戲(Strategy)需要大量思考和戰(zhàn)術移動的游戲。比如CommandandConquer和Warcraft角色扮演游戲(RolePlayGame)需要用戶遵守操作規(guī)則,而且長時間塑造人物。比如仙劍奇?zhèn)b傳運動游戲(Sport)和運動相關的游戲12游戲程序的根本功能繪制動畫碰撞檢測AI13J2ME游戲開發(fā)主要的包和類游戲開發(fā)的類都在包:主要的類GameCanvacSpriteLayerLayerManagerTiledLayer14準備開始準備好開發(fā)環(huán)境安裝J2SE-1_5_0安裝J2MEWirelessToolkit2.5安裝Eclipse3.4.0Release版安裝EclipseMe1.7配置Eclipse開發(fā)環(huán)境15先熱一熱身搭建J2ME程序框架繪制一幅背景繪制一個精靈讓精靈動起來看看碰撞的效果16先寫一個Midlet在上運行的Java程序叫:MIDlet創(chuàng)立一個MIDlet的步驟:打開Eclipse1新建J2MEMidletSuite2新建J2MEMidlet317Midlet組成分析import;import;publicclassMyMidletextendsMIDlet{ publicMyMidlet(){ //構造函數,初始化數據

} protectedvoiddestroyApp(booleanarg0)throwsMIDletStateChangeException{ //程序結束執(zhí)行,釋放資源

} protectedvoidpauseApp(){ //暫停程序

} protectedvoidstartApp()throwsMIDletStateChangeException{ //啟動程序

}}引入Midlet的包結束程序暫停程序啟動程序都要繼承演示例如1:第一個Midlet18游戲背景圖形游戲背景圖片不是一整塊,而是由很多小圖片組成,原因:節(jié)約內存資源需要碰撞檢測,比方哪些地形可以通行,哪些不能通行;哪里可以被子彈擊毀,哪里不怕子彈等等J2ME游戲包提供了下面的類繪制游戲背景DisplayGameCanvasTiledLayer19繪制游戲背景圖形要在程序中顯示圖像,需要顯示器:Display。顯示器并不能直接匯制圖像,需要將圖像繪制在畫布:GameCanvas。然后將畫布顯示出來TiledLayer負責管理繪制游戲背景,可以將小圖片整合成一張游戲背景創(chuàng)建自己的畫布1填充游戲圖層2創(chuàng)建顯示器3顯示畫布4演示例如2:繪制游戲背景20繪制精靈游戲精靈就是一個圖片,一個會動的圖片J2ME提供了Sprite類繪制和控制精靈準備精靈圖片1創(chuàng)建精靈2將精靈畫到畫布上3演示例如3:繪制精靈21關鍵代碼//精靈圖片ImageroleImg=null;roleImg=Image.createImage("/role.png");….//構建精靈〔21*35〕role=newSprite(roleImg,21,35);//精靈初始位置在中間introleX=this.getWidth()/2;introleY=this.getHeight()/2;role.setRefPixelPosition(roleX,roleY);…..this.role.paint(g);this.flushGraphics();22動畫的原理系列動作的圖片連續(xù)繪出23精靈動畫01234567891011左行前行后行右行24讓精靈動起來setFrame(intindex)顯示哪一幀,設置動畫開始的畫面nextFrame()顯示下一幀Move(intdx,intdy)在x和y方向上移動

Sprite的方法(this.getKeyStates()&GameCanvas.LEFT_PRESSED)!=0是否按下左方向鍵(this.getKeyStates()&GameCanvas.RIGHT_PRESSED)!=0是否按下右方向鍵(this.getKeyStates()&GameCanvas.UP_PRESSED)!=0是否按下上方向鍵(this.getKeyStates()&GameCanvas.DOWN_PRESSED)!=0是否按下下方向鍵(this.getKeyStates()&GameCanvas.FIRE_PRESSED)!=0是否按下開火鍵獲取用戶按鍵的方法25向左移動if((this.getKeyStates()&GameCanvas.LEFT_PRESSED)!=0){ if(!this.moveLeft) { this.moveLeft=true; this.moveRight=false; this.moveUp=false; this.moveDown=false; this.role.setFrame(0); } this.role.nextFrame(); if(this.role.getFrame()>2) { this.role.setFrame(0); } this.role.move(-5,0);}注意:需要降低循環(huán)的速度26向右移動if((this.getKeyStates()&GameCanvas.RIGHT_PRESSED)!=0){ if(!this.moveRight) { this.moveLeft=false; this.moveRight=true; this.moveUp=false; this.moveDown=false; this.role.setFrame(9); } this.role.nextFrame(); if(this.role.getFrame()==0) { this.role.setFrame(9); } this.role.move(5,0);}27向上移動if((this.getKeyStates()&GameCanvas.UP_PRESSED)!=0){ if(!this.moveUp) { this.moveLeft=false; this.moveRight=false; this.moveUp=true; this.moveDown=false; this.role.setFrame(6); } this.role.nextFrame(); if(this.role.getFrame()>8) { this.role.setFrame(6); } this.role.move(0,-5);}28向下移動if((this.getKeyStates()&GameCanvas.DOWN_PRESSED)!=0){ if(!this.moveDown) { this.moveLeft=true; this.moveRight=false; this.moveUp=false; this.moveDown=true; this.role.setFrame(5); } this.role.nextFrame(); if(this.role.getFrame()>5) { this.role.setFrame(3); } this.role.move(0,5);}29碰撞檢測collidesWith(Sprites,boolean

pixelLevel)是否和其他的精靈碰撞了collidesWith(TiledLayert,boolean

pixelLevel)是否和背景層某一個單元格碰撞了

Sprite為我們提供了如下的碰撞檢測方法30關鍵代碼if(role!=null){ if(this.role.collidesWith(bomb,false)) { this.explosion.setPosition(role.getX()-16,role.getY()-16); System.out.println("碰到炸彈了"); for(inti=0;i<8;i++) { this.explosion.nextFrame(); this.explosion.paint(g); try{ Thread.sleep(30); }catch(InterruptedExceptione){ e.printStackTrace(); } } this.role=null; this.bo

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論