摘要:隨著手機(jī)游戲的普及和發(fā)展,各大軟件開發(fā)商都瞄準(zhǔn)了Java手機(jī)游戲開發(fā),文章在介紹J2ME及其體系結(jié)構(gòu)的基礎(chǔ)上,以貪吃蛇游戲為實例,描述了借助J2ME的MIDlet類庫開發(fā)手機(jī)游戲的過程。
關(guān)鍵詞:手機(jī)游戲;MIDP應(yīng)用程序;永久性數(shù)據(jù)
中圖分類號:TP311.52 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9599 (2012) 24-0185-02
隨著通信技術(shù)的發(fā)展和移動通信設(shè)備的普及,帶動了手機(jī)應(yīng)用技術(shù)的開發(fā)與研究。以J2ME為開發(fā)平臺,可以在手機(jī)上實現(xiàn)靜態(tài)HTML技術(shù)所無法實現(xiàn)的計算處理、數(shù)據(jù)存儲、與服務(wù)器的通信等功能,還能夠開發(fā)各種手機(jī)游戲。隨著手機(jī)游戲的發(fā)展,國內(nèi)外各大開發(fā)商紛紛運用Java進(jìn)行手機(jī)游戲開發(fā)。J2ME作為一種基于Java的便攜設(shè)備開發(fā)平臺,在各大手機(jī)開發(fā)公司得到了廣泛應(yīng)用。
1 J2ME簡介
現(xiàn)在JAVA-JAVA2 Platform大致可分為J2SE、J2EE、J2ME三類。J2SE為JAVA-JAVA2 Platform 的標(biāo)準(zhǔn)版,通常在PC上使用的JAVA。J2EE是在J2SE的API上,擴(kuò)展了給企業(yè)使用EJB與Servlet等主要使用在服務(wù)器上的功能。而J2ME則是面向家電和通信工具等微小設(shè)備。J2ME的目標(biāo)是微小設(shè)備,這類設(shè)備有許多種類,在這些設(shè)備的J2ME當(dāng)中,定義了CDC(Connected Device Configuration),CLDC(Connected Limited Device Configuration)這兩個Configuration。CDC是以能用在個人網(wǎng)關(guān)、下一代移動電話、PDA(個人數(shù)字助理)、家電設(shè)備、POS終端、車輛導(dǎo)航系統(tǒng)等上運行為前提設(shè)計出來的。CLDC,是以能使用在移動電話、PDA(個人數(shù)字助理)、家電設(shè)備、POS終端等上面為前提設(shè)計出來的。J2me的目標(biāo)是家電與嵌入式設(shè)備,這類設(shè)備有很多種類,對應(yīng)這些設(shè)備的J2me當(dāng)中,定義了CDC(連接設(shè)備配置)和CLDC(受限接設(shè)備配置)兩個配置,配置所提供的類函數(shù)只有Java.lang, Java.io,Java..util包等J2SE等核心類的子集。CLDC是與手機(jī)相關(guān)的,它實際是定義一個設(shè)備制造商用來實現(xiàn)Java運行環(huán)境的標(biāo)準(zhǔn),第三方開發(fā)者只需要遵循這個標(biāo)準(zhǔn)。
2 貪吃蛇游戲的規(guī)則以及開發(fā)環(huán)境
2.1 貪吃蛇游戲的規(guī)則簡介
在貪吃蛇游戲中,玩家操作由小方塊連接而成的蛇,去吃隨機(jī)散落在畫面內(nèi)的小方塊,每吃一塊就增加一小方塊長度,要是撞壁以及撞自己的尾,就屬于失敗,如無失敗則直到通關(guān)為止。屏幕的長度的行向為11單位,縱向為18單位。在這個范圍內(nèi),玩家通過操作方向鍵來控制蛇的運動方向。該游戲的最大特色是屏幕自適應(yīng),無論各種手機(jī),PDA的屏幕大小如何,該游戲總是能獲得最佳的顯示效果。
2.2 開發(fā)環(huán)境
2.2.1 開發(fā)的硬件環(huán)境:CPU C1.7HZ/Maxor 40G/DDR 256M/CD-ROW 40X
2.2.2 開發(fā)軟件:JDK1.3和J2MEWTK
2.3 游戲設(shè)計
貪吃蛇游戲的操作流程是:用戶在啟動MIDlet后,即進(jìn)入游戲主畫面,屏幕開始顯示為歡迎畫面。用戶按下[開始]按鈕后,就可以開始玩游戲。當(dāng)用戶想暫停時,再次按一下[開始]按鈕,游戲就暫停了,在暫停的情況下再按[開始]按鈕,游戲繼續(xù)運行。任何時候按[退出]按鈕,游戲MIDlet都會終止。
2.4 游戲設(shè)計
2.4.1 游戲地圖設(shè)計
游戲地圖是蛇的活動范圍和食物隨機(jī)散落的范圍,游戲的容器為行向為11單位,縱向為18單位,采用二維繪圖工具:二維繪圖工具drawLine采用4個參數(shù)——直線起點的x、y坐標(biāo)值和直線終點x、y的坐標(biāo)值,例如:graphics.drawLine(50,0,100,0);這行代碼會從位置(50,0)到(100,0)繪制一條直線。繪制一個矩形是一個類似的過程,不同的只是需要用起點加上寬度和高度的方式來指定這個對象。可以繪制透明的或者填充的矩形,甚至可以繪制圓角的矩形。4個繪制矩形的方法是:drawRect、drawRoundedRect、fillRect和fillRoundedRect。
2.4.2 貪吃蛇和食物設(shè)計
屏幕的長度為行向為11單位,縱向為18單位;在這個范圍內(nèi)玩家操作方向鍵控制蛇的運動方向。該游戲的最大特色是屏幕自適應(yīng),無論各種手機(jī),PDA的屏幕大小如何,該游戲總是能獲得最佳的顯示效果。貪吃蛇最初由3個小正方形組成,小正方形是蛇的身體和游戲容器的組成部分。食物也由一塊小正方形組成,并且隨機(jī)散落在游戲框圖的區(qū)域內(nèi),每次只出現(xiàn)唯一的一個,待玩家操作游戲完成一個任務(wù)后面,再出現(xiàn)下個食物,小蛇每吃一個食物就增加一個長度。
2.4.3 操作控制及代碼設(shè)計
MIDP的游戲設(shè)計,本質(zhì)上就是用一個線程或者定時器產(chǎn)生重繪事件,用線程和用戶輸入改變游戲狀態(tài)。這個游戲也不例外,啟動MIDlet后,就立即生成一個重繪線程,該線程每隔50ms繪制一次屏幕。當(dāng)然,重繪時有一些優(yōu)化措施,并不是屏幕上所有的像素都需要重繪,而是有所選擇,比如游戲畫布上那些已經(jīng)固定下來的就不需重繪。游戲畫布是一個CommandListener,可以接受用戶鍵盤命令,控制蛇的左移,右移,下移,上移。其代碼如下:
public void move(){hide();
if(aoSnakes[0].getRow()==Food.getRow()aoSnakes[0].getCell()==Food.getCell())
eat();
Snake tempSnakes[] = new Snake[iLen-1];
for(int i=0;i tempSnakes[i] = aoSnakes[i].clone(); } switch(heading){ case 37: aoSnakes[0].moveLeft(); break; case 38: aoSnakes[0].moveUp(); break; case 39: aoSnakes[0].moveRight(); break; case 40: aoSnakes[0].moveDown(); break; default: break; 整個游戲的流程控制體現(xiàn)在游戲畫布對象的paint()方法里。paint()根據(jù)當(dāng)前的游戲狀態(tài),繪制出當(dāng)時的游戲畫面。歡迎畫面和Game Over畫面的繪制相當(dāng)簡單,游戲暫停畫面的繪制也相當(dāng)容易,就是設(shè)立標(biāo)志,讓paint()執(zhí)行的時候無需真正執(zhí)行重繪動作。 4 結(jié)束語 本文所設(shè)計開發(fā)的手機(jī)游戲,實現(xiàn)了手機(jī)游戲的一些基本和必需的功能,如游戲的界面設(shè)置,游戲動畫的設(shè)置,玩家的控制鍵設(shè)置,游戲的保存和游戲紀(jì)錄的保存,游戲的開始和暫停等功能。但游戲功能還存在著很多不足,只是通過實驗室模擬器在PC機(jī)上實現(xiàn),并沒有針對批量生產(chǎn)進(jìn)行驗證,仍需要進(jìn)一步的開發(fā)與研究。 參考文獻(xiàn): [1]米川英樹.手機(jī)游戲程序設(shè)計[M].中國鐵道出版社,2005. [2]孫淑敏.Java2游戲開發(fā)北京[M].清華大學(xué)出版社,2005. [3]朱全銀,章慧,孫文杰.基于J2ME技術(shù)的手機(jī)網(wǎng)絡(luò)游戲研究與開發(fā)[J].計算機(jī)工程與應(yīng)用,2008(32). [4]林立.基于J2ME的手機(jī)游戲開發(fā)[J].硅谷,2011(11).