摘要:論文著眼于J2ME技術的應用,開發一款嵌入手機的賽車游戲,在J2ME的相關技術下完成作品的整體構思,分析并設計了游戲結構,實現了整套游戲的開發。最終游戲能以親切的歡迎畫面把用戶帶入動感、逼真的賽車中,自由方便的控制可以使用戶在高速路上所向無敵,一路飆升,幫助用戶真正體驗F1賽車。
關鍵詞:J2ME;手機游戲;MIDP2.0
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2008)35-2544-02
Development of Mobile Phone game Based on J2ME
ZHANG Li-juan,WU Ai-yan
(Shijiazhuang Colloge,Shijiazhuang 050035,China)
Abstract:The paper focuses on the J2ME technology application, develops a Embedded-mobile race car game. First under the J2ME related technology the whole game idea is completed. Then the paper proposes the game structure, and the process of realization. Users can feel truely the lifelike race car by the kind welcome picture,and the free convenience operation can make users feel a kind of car speed on the high-speed road and an experiencement of F1 vehicle race.
Key words:J2ME;mobile phone game;MIDP2.0
1 引言
隨著計算機軟件技術的不斷發展,嵌入手機等移動設備的軟件開發逐漸出現了新的突破。Java技術的興起,解決了移動設備軟件開發固有的一些弊端,也使高級手機游戲的開發成為現實,其良好的跨平臺特性和面向對象的優勢在嵌入移動設備的軟件開發中顯示出了巨大的威力[1]。而J2ME(Java 2 Micro Edition)的誕生給高級手機游戲的開發又帶來了新的生機。J2ME技術用于手機游戲開發,不但便于查看游戲運行過程中內存的占用量和程序的每一部分代碼消耗了多少處理器時間,而且可以不斷地優化代碼,使用J2ME和MIDP進行手機游戲開發已越來越受到人們的關注[2]。
該文著眼于J2ME技術在手機娛樂上的應用,開發一個的基于MIDP2.0的手機《賽車》游戲程序,并介紹了游戲的結構分析和具體功能實現。游戲的界面和運作方式,盡力模擬手機游戲的普遍性形式,成為一個完整的手機游戲。
2 作品思想及主要技術
2.1 作品思想
一個相對比較完整的手機游戲,通常包括了:新游戲、游戲設置、分數、游戲幫助、游戲說明五個主要部分[3],本作品也是如此,盡量模擬使之成為一個完整的作品。其作品主要思想如下所述:
1) 背景高速路采用滾動式圖片,自定義可視化區域,由此可以在周邊空間加上用戶反饋信息:分數、級別等,也用來輔助實現背景圖片的滾動;對于背景圖片的描繪實現,定義了游戲背景的一個特定區域,由此重復利用它來生成一個完整的背景圖片。
2) 游戲設置選項包括了游戲說明,游戲難度的設置,暫停和開始。
3) 己方控制跑車,盡量逃避高速路上其它車的撞擊,同時跑車擁有加速的功能;跑車積數為一定值,級別自動加一級,玩到一定級別,有鼓勵提示,同時,級別越高難度越大;一旦跑車與其它車相撞,游戲結束。
游戲程序是一項精度要求很高的程序系統,因為其代碼利用率很高。一個實時運行的最終作品,每秒都會運行成千上萬行程序,繪圖事件、鍵盤事件都會以極高的頻率在后臺等待響應,若有絲毫的差別都將很容易導致程序在運行不久后可能出現嚴重錯誤,甚至死循環。因此,其邏輯設計應當相當嚴謹,需將所有可能發生的事件及意外情況考慮在設計中。
2.2 主要技術
1) 2D繪圖技術:可以使用Graphics類實現2D繪圖的功能。Graphics類具有24位深度色彩的繪制能力,以三原色分別各占一個字節表示其顏色[4]。程序在paint()函數中使用Graphics繪制,GameCanvas可調用getGraphics()函數直接繪制在緩沖區上,可以在任何時間請求傳輸到前臺。其對象會被傳給Canvas的paint()函數,以便最終顯示。
2) 雙緩沖繪制背景技術:由于游戲屏幕在動畫圖形繪制之前被清除過,而且擦除和重繪過程都是直接發生在游戲屏幕上的,所以動畫看上去會是抖動的。使用雙緩沖技術可以在一個用戶不可見的屏幕外繪圖,當所有的繪圖工作完成后,直接加載最終的結果到游戲屏幕上,使所發生的擦除成為了不可見的,有效避免抖動。
3) 動態畫面技術:可以使用Sprite類制作動畫效果,同時進行有效地沖突檢測。Sprite類支持多幀圖像,可以使圖像旋轉、反射,而且可以使用矩形、縮小的矩形或圖像數據來進行沖突檢測,因此采用Sprite類可以制作逼真的動態畫面。
4) 地圖動態加載技術:采用TiledLayer實現大幅地圖的動態加載。TiledLayer是有一組圖象格元素組成的整塊虛擬圖象。用其創建大幅圖面時并不需要圖象具有高分辨率。一塊整圖可被分割成等大小的圖象格,每塊格有其對應的序號,按照行列遞增。多塊小格可由大塊同時替換組合以模擬動態的背景,不需要逐塊替換所有的靜態圖象格而顯得非常方便。
5) 內存優化技術:由于手機內存空間小,所以在程序設計時應該盡量減少內存的使用,在游戲實現中應盡量縮短命名的長度、盡可能重用對象、顯示地清除對象、去除不必要的圖片,同時采用混淆器精簡編譯程序[5-6]。
3 游戲主要模塊的實現
3.1 游戲選項界面及說明界面的實現
利用Image類添加圖片,利用Command類添加開始,級別及說明按扭,實現游戲選項界面,通過上下鍵進行菜單選擇,點擊可以進入各個界面,主要實現如下:
Public OpenCanvas (Display d, F1Car c)
{………
img=Image.createImage(\"/welcome3.png\");
……..
startcmd=new Command(\"開始\",Command.SCREEN,1);
helpcmd=new Command(\"說明\",Command.SCREEN,1);
levelcmd=new Command(\"級別\",Command.SCREEN,1);
exitcmd=new Command(\"退出\",Command.EXIT,1);
…….}
利用Form類添加窗體,實現游戲說明界面,主要代碼如下:
Public MyForm (Display d, OpenCanvas canvas)
{
super(\"游戲說明\");
this.canvas=canvas;
display=d;
append(\"左鍵:左移右鍵:右移 上鍵:上移 下鍵:下移\");
……}
3.2 賽車界面的實現
高速路圖片由Canvas類添加,四輛車隨機從上方開出,并設置不同的速度,是模擬的高速路形象、逼真。使用左右鍵控制跑車,盡量逃避高速路上其它車的撞擊,上下鍵可使跑車加速或減速。跑車積數為一定值,級別自動加一級,同時,級別越高難度越大,如圖1所示,主要實現如下:
public MyCanvas(OpenCanvas canvas,LevelCanvas lc,Display d,int level)
{…….
if(level==1)
{……}
else if(level==2)
………
resumecmd=new Command(\"繼續\",Command.SCREEN,1);
restartcmd=new Command(\"重新開始\",Command.SCREEN,1);
pausecmd=new Command(\"暫停\",Command.SCREEN,1);
exitcmd=new Command(\"退出\",Command.EXIT,1);
……..
4 游戲的測試
使用Eclipse完成代碼的調試之后,需要使用WTK生成包(即jar文件),其過程如下:
1) 使用WTK的新建項目功能建立一個新項目,要求與Eclipse工作區下的項目名稱相同;
2) 新建項目后,將Eclipse工作區下的java文件拷入src文件夾,將圖片文件夾拷入res文件夾,點擊生成,如一切正常,如圖2所示;
3) 生成之后,選擇菜單“項目”-“包”-“生成包”,生成的jar和jad文件存儲在Flcar/bin目錄下;
4) 最后就可以將jar包和jad包一起拷貝到手機上的Game文件夾(參考手機說明書,各個手機有可能不同)進行安裝測試。
5 小結
J2ME(Java 2 Micro Edition) 是近年來隨著各種不同設備,尤其是移動通信設備的飛速發展而誕生的一項新的開發技術。它定位在消費性電子產品的應用上,對設備的智能化、多樣化,提供了革命性的解決方案。本文著眼于J2ME技術的應用,開發一款嵌入手機的賽車游戲,最終游戲能以親切的歡迎畫面把用戶帶入動感、逼真的賽車中。
參考文獻:
[1] Eckel B.Java編程思想[M].陳昊鵬,等.譯.北京:機械工業出版社,2002.
[2] Morrison M.J2ME 手機游戲編程入門[M].北京:人民郵電出版社,2005.
[3] 劉志.Java編程基礎[M].北京:機械工業出版社,2007.
[4] 詹建飛.J2ME開發精解[M].北京:電子工業出版社,2006.
[5] 盧軍.J2ME應用程序開發—手機、PDA程序開發捷徑[M].北京:中國鐵道出版社,2002.
[6] Michael Juntao Yuan Kevin Sharp.Series 40 可擴展應用程序開發[M].北京:人民郵電出版社,2005.