<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    即興的靈感

    思維是一種藝術; 藝術需要靈感。

    博客好友

    最新評論

    J2ME手機游戲引擎程序架構

    ???在游戲開發(fā)以及任何軟件的設計都需要建立一個穩(wěn)定的引擎結構體,來作為軟件設計的基本架構,是軟件體系結構的核心支撐框架,一切功能的實現(xiàn)以及擴展都在這個基礎架構之上來完成。一個游戲的設計涉及到游戲控制、角色、游戲場景、道具、游戲聲效以及游戲過程事件監(jiān)聽機制等元素,因此建立良好的游戲引擎能對以上各元素進行有效的控制。本文介紹在J2ME游戲設計中游戲引擎的基本程序架構。
    ???游戲引擎可以建立不同的結構體來實現(xiàn),但是任何游戲的設計都離不開通過設計一個主循環(huán)loop來重復控制整個游戲過程,當然整個游戲的核心結構(背景幻化控制、精靈坐標變化、動作幀畫面變化等)都包含在該循環(huán)中。在J2ME游戲設計中,程序架構一般需要建立兩個核心類,即是MIDlet跟Displayable兩類。
    ???1、其中MIDlet是J2ME的主類,任何程序主類都需要繼承MIDlet來控制整個游戲的生命周期,需要覆蓋MIDlet中的三個周期方法startApp、pauseApp跟destoryApp,分別為執(zhí)行開始、暫停、結束等動作的操作體。
    public class?GameTest extends MIDlet implements CommandListener{
    /**
    ? * 游戲引擎介紹
    ? */
    ?private Command exitCommand;
    ?private GameCanvasTest gameCanvas;
    ?public GameTest () {
    ??exitCommand=new Command(" exit?,command.exit,1);
    ??GameCanvasTest gameCanvas=new GameCanvasTest (this);
    ??sfcan.addCommand(exitCommand);
    ??sfcan.setCommandListener(this);
    ??Display.getDisplay(this).setCurrent(gameCanvas);
    ??// TODO 自動生成構造函數(shù)存根
    ?}
    ?protected void startApp() throws MIDletStateChangeException {
    ??// TODO 自動生成方法存根
    ??//gameCanvas.thread.start();
    ?}
    ?protected void pauseApp() {
    ??// TODO 自動生成方法存根
    ??try{
    ???gameCanvas.thread.wait();
    ??}catch(Exception e){}
    ?}
    ?protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
    ??// TODO 自動生成方法存根
    ??gameCanvas=null;
    ?}
    ?public void commandAction(Command c,Displayable d){
    ??if(c==exitCommand){???
    ???notifyDestroyed();
    ??}
    ?}
    //實現(xiàn)游戲過程界面跟不同操作變化的調度
    public void changeTale(int taleIndex)
    {
    ???具體代碼實現(xiàn).......
    ???Display.getDisplay(this).setCurrent(....);
    }
    }
    ???GameTest類繼承了MIDlet類,實現(xiàn)游戲生命周期的控制,而且也僅僅對游戲生命周期的控制跟游戲過程中的UI調度工作,而把具體的游戲核心模塊放到GameCanvasTest類中去實現(xiàn)。
    ???2、Displayable是游戲的顯示效果核心,在J2ME游戲設計中使用GameCanvas類完成游戲畫布工作,設計類繼承GameCanvas來實現(xiàn)游戲核心模塊,通常將游戲主循環(huán)放置于該類中實現(xiàn)整個游戲的控制,因此在繼承GameCanvas的同時還需要實現(xiàn)循環(huán)Runnable接口。
    ???public class GameCanvasTest extends GameCanvas implements Runnable {
    ???? //聲明變量.......
    ???public GameCanvasTest(MIDlet midlet)
    ???{
    ??????super(true);
    ??????//初始化變量.......
    ???}
    ??? public void run(){
    ??????keyPressed(getKeyStates());
    ??????spritePixel();
    ??????drawCanvas();
    ??????//其他方法以及處理.......
    ?? }
    ????protected void keyPressed(int keyCode){
    ?????//按鍵處理.......
    }
    ???public void spritePixel(){
    ???//精靈以及地圖坐標變幻控制......
    }
    ???public void drawCanvas(){
    ???//根據坐標變化重繪畫面處理........
    }
    }
    ???GameCanvasTest類中完成了游戲主干部分,包括鍵盤按鍵事件處理、坐標變化、畫面重繪,當然游戲精靈跟地圖背景也在該類中定義,并使用LayerManager進行管理。
    ???以上是一般的游戲架構,當然,在較復雜的游戲設計里面,使用以上架構將會較麻煩,使得程序不清晰。因此在程序設計中可以采用MVC模式來構建游戲引擎,將各部分抽象出來不同的層(分別為UI顯示、線程控制以及輸入監(jiān)控等調度、精靈等游戲具體模型)去完成各自的功能,從而提高軟件的可讀性跟可維護性。

    ?(轉載時請注明出處并保持鏈接,作為對作者辛勤勞動的尊重,謝謝。)

    ?
    鳳凰涅槃/浴火重生/馬不停蹄/只爭朝夕
    ???? 隱姓埋名/低調華麗/簡單生活/完美人生

    posted on 2009-02-19 14:18 poetguo 閱讀(1740) 評論(0)  編輯  收藏 所屬分類: J2ME

    主站蜘蛛池模板: 国产色爽免费无码视频| 91福利免费视频| 成人免费一区二区三区| 鲁大师在线影院免费观看| 国产无遮挡色视频免费视频| 久久亚洲精品中文字幕三区| 亚洲精品二三区伊人久久| 国产激情久久久久影院老熟女免费| 97碰公开在线观看免费视频| 国产亚洲欧洲Aⅴ综合一区| 亚洲资源最新版在线观看| 999久久久免费精品国产 | 国产91免费在线观看| 亚洲女人初试黑人巨高清| caoporm碰最新免费公开视频| 亚洲?v女人的天堂在线观看| 亚洲国产成人久久精品app| 久久国产精品免费一区| 尤物永久免费AV无码网站| 亚洲a级成人片在线观看| 久久美女网站免费| 亚洲情侣偷拍精品| 精品亚洲视频在线| 九九精品免费视频| 亚洲电影一区二区三区| 一区二区三区免费视频观看| 日韩免费视频播播| 人人鲁免费播放视频人人香蕉| 成年轻人网站色免费看| 亚洲不卡中文字幕| 国产一级一片免费播放i| 色天使亚洲综合一区二区| 国产亚洲情侣一区二区无| 日韩内射激情视频在线播放免费| 亚洲人成综合网站7777香蕉| 香蕉97超级碰碰碰免费公| 自拍偷自拍亚洲精品偷一| 亚洲AV无码久久| 日本免费高清视频| 亚洲国产香蕉碰碰人人| 美女视频黄的免费视频网页|