版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 畢業(yè)論文/設(shè)計(jì)</b></p><p> 題 目: 基于J2ME的手機(jī)游戲開(kāi)發(fā) </p><p> 姓 名: _________XXX _________________</p><p> 系 別: __ 信息工程系 ____</p&
2、gt;<p> 專(zhuān) 業(yè): ___ _ 計(jì)算機(jī)應(yīng)用技術(shù)___ ______</p><p> 班 級(jí): ___ 09應(yīng)用(1)班__ ____</p><p> 指導(dǎo)老師: ____ XXX_ _ </p><p> 日 期: _____ 2012年5
3、月10日 __</p><p><b> 摘 要</b></p><p> JAVA已經(jīng)從一種平臺(tái)無(wú)關(guān)的編程語(yǔ)言演變成一種與廠商及平臺(tái)無(wú)關(guān)的健壯的服務(wù)器端技術(shù),促使IT業(yè)界深入發(fā)掘以Web為核心的應(yīng)用程序的巨大潛力。J2ME 的出現(xiàn)使這一變化達(dá)到了一種新的高度。J2ME,簡(jiǎn)稱(chēng)Java2平臺(tái)袖珍版( Java 2 Platform ,Micro Edit
4、ion (J2ME) ),是SUN公司在J2SE和J2EE之后,致力于消費(fèi)產(chǎn)品和嵌入式設(shè)備的最佳解決方案。作為JAVA的三個(gè)版本之一,J2ME在無(wú)線編程技術(shù)中正發(fā)揮著它獨(dú)特的作用。J2ME為在小型電子設(shè)備上創(chuàng)建性能卓越的網(wǎng)絡(luò)應(yīng)用提供了一套完整的解決方案。它也使設(shè)備制造商、服務(wù)提供商及應(yīng)用開(kāi)發(fā)人員為他們的用戶(hù)發(fā)布新的軟件應(yīng)用成為可能。</p><p> 本篇論文共分為七個(gè)部分:包括緒論、J2ME技術(shù)概覽、游戲設(shè)計(jì)
5、的需求分析、“Pocket Boxing”手機(jī)游戲開(kāi)發(fā)制作、手機(jī)游戲開(kāi)發(fā)存在的困難、J2ME手機(jī)游戲前景展望和結(jié)論。其中第四部分“Pocket Boxing手機(jī)游戲開(kāi)發(fā)制作”是本篇論文的重點(diǎn)。整篇論文都是圍繞著這一部分來(lái)展開(kāi)論述的,在這一部分里詳細(xì)介紹一款手機(jī)游戲“Pocket Boxing”的開(kāi)發(fā)全過(guò)程和開(kāi)發(fā)過(guò)程中存在的疑難問(wèn)題。其中包括:游戲事件、游戲API等以及對(duì)事件的處理,另外在游戲描繪處理部分也將作為重點(diǎn)進(jìn)行介紹。</p
6、><p> 通過(guò)對(duì)J2ME的詳細(xì)介紹我們可以從中了解到其自身的作用,近年來(lái),隨著JAVA手機(jī)的誕生,其無(wú)可替代的靈活性與輕便性致使JAVA手機(jī)游戲成為游戲市場(chǎng)的又一亮點(diǎn),它的前景無(wú)可限量,必將在我們以后的生活中發(fā)揮著重要的作用。</p><p> 關(guān)鍵字:J2ME, MIDP, 游戲編程, 事件, 描繪處理</p><p><b> Abstract&l
7、t;/b></p><p> Java is already changed from a platform-independent programming language to a mission-critical technological with manufacture platform independent, and java encourage IT circle to deeply ta
8、p the huge potential of application with the care of Web. The emergences of J2ME push it to a new high level. J2ME( Java 2 Platform, Micro Edition (J2ME) ) called “Java 2 platform” for short —a pocket-edition is a prefec
9、t solution plan of consume products and embedded equipment, after J2SE&J2EE in SUN company.</p><p> This article has seven portions: include the introduction, the general situation of J2ME technology, t
10、he demand of the game design analyzes, the significance and development of Pocket Boxing, the difficult, the prospect of mobile phone games exploitation and the Conclusion. The forth part — “the production of Pocket Boxi
11、ng mobile phone games” is the focus of this article. This entire article is around this focus, and this part detail introduces the exploitation process of a mobile phone game and</p><p> Through the detail
12、introduce of J2ME, the function of java is obvious. Of late years, follow the emerge of java mobile phone its unimpeded identity and portability make java mobile phone games become a new focal point of game market. J2ME
13、have unlimited brighten and make an important role in the future life.</p><p> Keywords: J2ME, MIDP, Game programming, Deal with description, Case</p><p><b> 目 錄</b></p>&
14、lt;p><b> 摘 要I</b></p><p> AbstractII</p><p> 第1章 緒 論1</p><p> 第2章 J2ME技術(shù)概覽2</p><p> 2.1 J2ME的概念2</p><p> 2.2 J2ME簡(jiǎn)介2</p&g
15、t;<p> 2.2.1 J2ME架構(gòu)3</p><p> 2.2.2 JVM ( 虛擬機(jī) )3</p><p> 2.2.3 MIDP( 移動(dòng)信息設(shè)備簡(jiǎn)表 )4</p><p> 2.3 手機(jī)游戲的發(fā)展5</p><p> 2.3.1 目前國(guó)內(nèi)的發(fā)展情況5</p><p> 2.3
16、.2 目前國(guó)際的發(fā)展情況6</p><p> 第3章 游戲設(shè)計(jì)的需求分析9</p><p> 3.1 MIDP中的游戲API9</p><p> 3.2 游戲類(lèi)構(gòu)成9</p><p> 3.2.1 Boxer類(lèi)的實(shí)現(xiàn)10</p><p> 3.2.2 GameCanvas類(lèi)的功能及特點(diǎn)10<
17、;/p><p> 3.2.3 Sprite類(lèi)的功能及特點(diǎn)11</p><p> 3.3游戲角色的處理11</p><p> 3.4 游戲中的事件處理12</p><p> 3.4.1 key Pressed方法12</p><p> 3.4.2 key Released方法13</p>&
18、lt;p> 第4章 “Pocket Boxing”手機(jī)游戲開(kāi)發(fā)制作14</p><p> 4.1 游戲編程14</p><p> 4.2 格斗類(lèi)手機(jī)游戲?qū)嵗?4</p><p> 4.2.1 “Pocket Boxing”游戲背景介紹及開(kāi)發(fā)環(huán)境14</p><p> 4.2.2 MIDlet的構(gòu)成15</p&
19、gt;<p> 4.2.3 MIDlet的生命周期16</p><p> 4.2.4 MIDlet的畫(huà)面顯示基礎(chǔ)16</p><p> 4.2.5 游戲項(xiàng)目的創(chuàng)建18</p><p> 4.2.6 命令種類(lèi)及命令處理19</p><p> 4.2.7 游戲中的描繪處理21</p><p&g
20、t; 4.2.8 游戲狀態(tài)的類(lèi)變量23</p><p> 4.2.9 按鍵事件的處理24</p><p> 4.2.10 設(shè)計(jì)存在的難點(diǎn)25</p><p> 第5章 手機(jī)游戲開(kāi)發(fā)過(guò)程中的困難26</p><p> 5.1 手機(jī)游戲開(kāi)發(fā)存在的困難26</p><p> 5.1.1 移動(dòng)開(kāi)發(fā)存在的
21、問(wèn)題27</p><p> 5.1.2 操作環(huán)境不兼容性問(wèn)題27</p><p> 5.1.3 顯示速度方面的問(wèn)題28</p><p> 5.1.4 不同的屏幕尺寸問(wèn)題28</p><p> 5.1.5 輸入問(wèn)題29</p><p> 5.2 解決方案29</p><p>
22、 第6章 J2ME手機(jī)游戲前景展望31</p><p> 6.1 J2ME手機(jī)游戲的優(yōu)勢(shì)31</p><p> 6.2 J2ME手機(jī)游戲的開(kāi)發(fā)意義32</p><p> 第7章 結(jié) 論35</p><p><b> 致 謝36</b></p><p><b>
23、 參考文獻(xiàn)37</b></p><p><b> 英文資料翻譯38</b></p><p><b> 第1章 緒 論</b></p><p> 手機(jī)是人們?nèi)粘I钪兴玫姆浅nl繁的通信工具,雖然現(xiàn)在其費(fèi)用比有線電話(huà)高,但是其隨時(shí)隨地的溝通優(yōu)勢(shì),使人們擺脫了線路的束縛。目前中國(guó)的一些大城市幾乎人手
24、一部或幾部手機(jī),正是由于手機(jī)的高普及率,使得無(wú)線移動(dòng)商務(wù)才得以迅速普及和發(fā)展。</p><p> JAVA技術(shù)已經(jīng)從一種最初用來(lái)編寫(xiě)與硬件無(wú)關(guān)的嵌入式系統(tǒng)的編程語(yǔ)言變成了一種與廠商無(wú)關(guān)、與硬件無(wú)關(guān)的健壯的服務(wù)器端技術(shù),它使整個(gè)企業(yè)界可以全面發(fā)掘以Web為核心的應(yīng)用程序的巨大潛力。隨著JAVA技術(shù)的不斷更新提高,J2ME技術(shù)的出現(xiàn),使得手機(jī)游戲越來(lái)越成為我們關(guān)注的焦點(diǎn)。J2ME技術(shù)目前最流行的就是在制作手機(jī)游戲方
25、面,JAVA手機(jī)的出現(xiàn)使得這一技術(shù)更有它的用武之地,發(fā)揮著他靈活、輕便、快捷的作用。</p><p> 下面在本篇文章中就將詳細(xì)的介紹J2ME這一技術(shù)在手機(jī)游戲制作方面的具體過(guò)程以及其重要的作用。</p><p> 第2章 J2ME技術(shù)概覽</p><p> 2.1 J2ME的概念</p><p> J2ME的全稱(chēng)是Java2 Mi
26、cro Edition (J2ME)——Java2技術(shù)微型版,與J2SE、J2EE一樣都是有美國(guó)SUN微系統(tǒng)公司提出的JAVA技術(shù)規(guī)范。</p><p> 2.2 J2ME簡(jiǎn)介</p><p> J2ME是為了能夠開(kāi)發(fā)運(yùn)行在小型設(shè)備、獨(dú)立設(shè)備、互聯(lián)移動(dòng)設(shè)備、嵌入式設(shè)備上的JAVA應(yīng)用程序而被提出的。J2ME是建立在一個(gè)由概要描述、配置、JAVA虛擬機(jī)和操作系統(tǒng)等部分組成的標(biāo)準(zhǔn)架構(gòu)之上的
27、,這些內(nèi)容共同組成了完整的J2ME實(shí)時(shí)運(yùn)行環(huán)境。它的技術(shù)核心是由一個(gè)JAVA虛擬機(jī)( JVM )及一套適合運(yùn)行在上述設(shè)備環(huán)境上的API接口構(gòu)成。</p><p> J2ME在1999年的JavaOne開(kāi)發(fā)人員大會(huì)上初次亮相,它的目標(biāo)是面向智能無(wú)線設(shè)備和小型計(jì)算設(shè)備的開(kāi)發(fā)人員,這些開(kāi)發(fā)人員需要在他們的產(chǎn)品中整合跨平臺(tái)的能力。</p><p> 無(wú)線設(shè)備和小型計(jì)算設(shè)備的消費(fèi)者期望這些設(shè)備能
28、夠有較高的性能。他們希望小型計(jì)算設(shè)備有快速的響應(yīng)時(shí)間,與同種設(shè)備相兼容,擁有功能完備的應(yīng)用程序。消費(fèi)者希望桌面計(jì)算機(jī)和筆記本電腦上的軟件和功能同樣能夠運(yùn)行在移動(dòng)電話(huà)和個(gè)人數(shù)字助理上。</p><p> 為了滿(mǎn)足他們的需求,開(kāi)發(fā)人員必須重新考慮他們?cè)O(shè)計(jì)計(jì)算機(jī)系統(tǒng)的方式。開(kāi)發(fā)人員需要利用商業(yè)計(jì)算機(jī)上現(xiàn)有的前端和后端軟件的計(jì)算能力,并將這些能力傳遞到微型、移動(dòng)和無(wú)線的計(jì)算設(shè)備上。J2ME能夠以最小的修改來(lái)實(shí)現(xiàn)這種傳遞
29、,如果應(yīng)用程序的設(shè)計(jì)是可伸縮的,應(yīng)用程序就可以適應(yīng)小型計(jì)算設(shè)備上有限的資源。</p><p> J2ME為在小型電子設(shè)備上創(chuàng)建性能卓越的網(wǎng)絡(luò)應(yīng)用提供了一套完整的解決方案,能很好的解決軟件跨平臺(tái)的兼容性和安全性的問(wèn)題。[5]</p><p> 2.2.1 J2ME架構(gòu)</p><p> J2ME架構(gòu)的模塊化設(shè)計(jì)使應(yīng)用程序可以靈活適應(yīng)小型計(jì)算設(shè)備的限制。J2ME架
30、構(gòu)沒(méi)有替代小型計(jì)算設(shè)備的操作系統(tǒng)。相反,J2ME架構(gòu)由位于原生操作系統(tǒng)之上的多層軟件組成,這些軟件共同稱(chēng)為“連接有限設(shè)備配置”(Connected Limited Device Configuration, CLDC)。安裝在操作系統(tǒng)之上的CLDC形成了小型計(jì)算設(shè)備的運(yùn)行時(shí)環(huán)境。</p><p> J2ME架構(gòu)由3個(gè)軟件層組成:第一層是包括在內(nèi)的配置層,這個(gè)層次直接與原生操作系統(tǒng)進(jìn)行交互。配置層還處理profi
31、le和JVM之間的交互。第二層是profile層,由小型計(jì)算設(shè)備的應(yīng)用程序編程接口(API)的最小集合組成。第三層是Mobile Information Device Profile( MIDP )層。MIDP層由用戶(hù)網(wǎng)絡(luò)連接、永久存儲(chǔ)和用戶(hù)界面的java API組成。它還能夠訪問(wèn)CLDC庫(kù)和MIDP庫(kù)。</p><p> 2.2.2 JVM ( 虛擬機(jī) )</p><p> JVM是
32、專(zhuān)門(mén)為微型電子設(shè)備與資源受限設(shè)備如:手機(jī)、尋呼機(jī)、移動(dòng)互聯(lián)網(wǎng)設(shè)備、家用微電子設(shè)備等設(shè)計(jì)的一種輕便、緊湊的JAVA虛擬機(jī)。</p><p> JVM可以為微型電子設(shè)備提供一個(gè)完整的JAVA運(yùn)行環(huán)境,除了一些微型設(shè)備所必需的適當(dāng)?shù)墓δ苡兴煌?,它是由JAVA虛擬機(jī)規(guī)范定義的真實(shí)的JAVA虛擬機(jī)。它是專(zhuān)門(mén)為那些受資源限制,只有幾百K字節(jié)內(nèi)存的微型設(shè)備設(shè)計(jì)的。</p><p> JVM起初是
33、由SUN微系統(tǒng)實(shí)驗(yàn)室為一個(gè)名叫“Spotless”的項(xiàng)目創(chuàng)建的。它的目標(biāo)是為資源受限制的Palm(是目前較為流行的掌上電腦操作系統(tǒng))可連接的電子設(shè)備,實(shí)現(xiàn)一個(gè)java虛擬機(jī)。</p><p> 基于上述原因,JVM具有以下幾個(gè)特點(diǎn):</p><p> (1)小,僅具有40KB至80KB的靜態(tài)內(nèi)存。</p><p><b> ?。?)輕便、精巧。<
34、/b></p><p> ?。?)模塊化并可定制。</p><p> ?。?)盡可能完全緊湊的完成設(shè)計(jì)目的。</p><p> 2.2.3 MIDP( 移動(dòng)信息設(shè)備簡(jiǎn)表 )</p><p> MIDP是專(zhuān)門(mén)為互聯(lián)受限設(shè)備配置設(shè)計(jì)的,它為移動(dòng)設(shè)備提供一套API集合,MIDP包含用戶(hù)界面類(lèi)、持久存儲(chǔ)功能與網(wǎng)絡(luò)功能。它同時(shí)也包括一個(gè)供用戶(hù)
35、下載新應(yīng)用到終端設(shè)備的標(biāo)準(zhǔn)運(yùn)行環(huán)境。運(yùn)行在MIDP下的小應(yīng)用程序叫做MIDlet移動(dòng)設(shè)備小應(yīng)用程序,它與Applet類(lèi)似。MIDP要求平臺(tái)設(shè)備提供一個(gè)機(jī)制用來(lái)存儲(chǔ)簡(jiǎn)單的數(shù)據(jù)記錄,通過(guò)正常的平臺(tái)事件,比如重新啟動(dòng)和電池更新維護(hù)系統(tǒng)的完整性。</p><p> MIDP是以SUN、Motorola、Nokia為中心的MIDPEG組織(Mobile Information Profile Expert Group)所
36、制訂出來(lái)使用在CLDC上的Profile,是以能使用在移動(dòng)電話(huà)、雙向?qū)χv機(jī)、可無(wú)線通信的PDA(個(gè)人數(shù)字助理)上面為前提設(shè)計(jì)出來(lái)的。另外,像日本國(guó)內(nèi)的NTT DoCoMo、J-PHONE、KDDI等電信商與移動(dòng)電話(huà)制造商也都曾參與了MIDPEG。</p><p> MIDP是在CLDC的功能上附加提供適合目標(biāo)設(shè)備用的GUI與事件處理功能。這樣一來(lái),就可以當(dāng)成MIDP應(yīng)用程序(MIDlet)來(lái)運(yùn)行了。</
37、p><p> MIDP由于是由多個(gè)企業(yè)所共同策劃出來(lái)的開(kāi)放標(biāo)準(zhǔn),因此主要的移動(dòng)電話(huà)制造商也會(huì)制造出大量的對(duì)應(yīng)機(jī)種。也就是說(shuō),以MIDP為基準(zhǔn)所制作出來(lái)的應(yīng)用程序,也將可以在流通于市面上的移動(dòng)電話(huà)上執(zhí)行。</p><p> 另外,MIDP不僅限于移動(dòng)電話(huà),也已經(jīng)被移植到PDA Palm OS上,而以MIDP for Palm OS的名字來(lái)稱(chēng)呼(與KJava是不同的)。在不使用各電信商的擴(kuò)展A
38、PI的時(shí)候,制作給移動(dòng)電話(huà)用的MIDlet也將可以使用在Palm OS上面。由于未來(lái)MIDP也將會(huì)搭載到不同設(shè)備之上,也由于其兼容性高,只要寫(xiě)過(guò)一次程序,就可以在其他移動(dòng)電話(huà)或是移動(dòng)電話(huà)以外的設(shè)備上執(zhí)行;而這也就是它最大的好處。</p><p> 2.3 手機(jī)游戲的發(fā)展</p><p> 手機(jī)是現(xiàn)在人們生活中必不可少的通訊工具之一,有著其重要的作用,現(xiàn)在的人們?cè)絹?lái)越認(rèn)識(shí)到它的重要性。作
39、為手機(jī)中的一部分——手機(jī)游戲,也發(fā)揮著它特有作用。可以說(shuō),手機(jī)游戲發(fā)展到今天已經(jīng)越來(lái)越為人們所熟知,也越來(lái)越受到人們的喜愛(ài)。但是應(yīng)該看到,國(guó)內(nèi)手機(jī)游戲的發(fā)展還是剛剛起步,與歐美日韓等先進(jìn)國(guó)家還有著一定的差距,但是這種差距正在一步一步的縮小。</p><p> 2.3.1 目前國(guó)內(nèi)的發(fā)展情況</p><p> 隨著技術(shù)對(duì)游戲經(jīng)驗(yàn)的促進(jìn),游戲市場(chǎng)持續(xù)增長(zhǎng)。商業(yè)IT革命為我們節(jié)省了時(shí)間和金錢(qián)
40、,從而提高了我們的工作水平,我們因此花費(fèi)更多的時(shí)間和金錢(qián)在游戲上,來(lái)改善生活的整體質(zhì)量。甚至在當(dāng)今困難的經(jīng)濟(jì)時(shí)代,游戲仍保持快速增長(zhǎng),它仍然是盈利行業(yè)的組成部分。Java開(kāi)發(fā)者應(yīng)該注意到這里蘊(yùn)藏著的巨大的商機(jī)。</p><p> 在全球數(shù)字娛樂(lè)的快速發(fā)展浪潮中,中國(guó)的游戲產(chǎn)業(yè)正以其驚人的井噴式發(fā)展速度前進(jìn),牢牢吸引住了世界目光。當(dāng)然,目前中國(guó)游戲產(chǎn)業(yè)一片大好的形勢(shì)可以說(shuō)是電腦網(wǎng)絡(luò)游戲一枝獨(dú)秀的成績(jī)。據(jù)信息產(chǎn)業(yè)部
41、 2004 年 10 月統(tǒng)計(jì)出的主要業(yè)務(wù)量數(shù)據(jù)表,到本年 10 月止,中國(guó)移動(dòng)電話(huà)用戶(hù)合計(jì)32503.4 萬(wàn)戶(hù),比上年末新增 5508.1 萬(wàn)戶(hù)。明年或者后年 3G 手機(jī)牌照發(fā)放下來(lái)以后,手機(jī)游戲的硬件設(shè)備更是日趨完善。2004 年里,又有很多手機(jī)游戲中小型開(kāi)發(fā)企業(yè)成立,很多新的手機(jī)游戲涌入內(nèi)容市場(chǎng)。似乎在這紅紅火火形勢(shì)下“手機(jī)游戲馬上會(huì)火起來(lái)”這一想法已經(jīng)點(diǎn)燃了很多人心里的希望之火。</p><p> 手機(jī)游
42、戲市場(chǎng)的確有很大的市場(chǎng)發(fā)展空間,前景看好,但是在中國(guó)游戲市場(chǎng)中馬上占據(jù)主流地位是不大可能的,那應(yīng)該還需要至少一年的“磨合期”。 中國(guó)大眾還不大熟悉手機(jī)游戲這一新鮮事物,在消費(fèi)心理和習(xí)慣上需要引導(dǎo)和培養(yǎng),尤其是在電腦網(wǎng)絡(luò)游戲大行中國(guó)的時(shí)期。這也是一個(gè)消費(fèi)對(duì)象需要被確定的問(wèn)題。什么樣的人會(huì)為手機(jī)游戲而消費(fèi)呢?而這直接關(guān)系到這一新興產(chǎn)業(yè)的存活。只有有了消費(fèi)需求,才能帶動(dòng)整個(gè)手機(jī)游戲產(chǎn)業(yè)鏈的循環(huán)。 在發(fā)展不見(jiàn)明朗的萌芽期,手機(jī)游戲營(yíng)運(yùn)方式、費(fèi)用
43、結(jié)算方式也是需要一段摸索時(shí)間的。內(nèi)容提供商、電信運(yùn)營(yíng)商、手機(jī)終端生產(chǎn)商之間利益的協(xié)調(diào)還需要實(shí)踐地調(diào)整。而這都是目前中國(guó)手機(jī)游戲界內(nèi)無(wú)法做到的事情。手機(jī)游戲肯定會(huì)有大發(fā)展,但是,目前不適合非理智地冒進(jìn)。[9]</p><p> 2.3.2 目前國(guó)際的發(fā)展情況</p><p> 在國(guó)際上日本、韓國(guó)在這方面處于領(lǐng)先地位。日本在手機(jī)游戲領(lǐng)域占據(jù)了絕對(duì)的領(lǐng)導(dǎo)地位。1999年,包括北美在內(nèi)的很多國(guó)
44、家和地區(qū)對(duì)手機(jī)游戲還一無(wú)所知,日本就已擁有超過(guò)30萬(wàn)的手機(jī)游戲用戶(hù),占全球手機(jī)游戲用戶(hù)的70%以上。2001年初,當(dāng)短信游戲在全球逐步發(fā)展之時(shí),日本NTT DoCoMo已經(jīng)推出了近500款i-mode游戲。2004年4月,日本計(jì)算機(jī)娛樂(lè)協(xié)會(huì)(CESA)發(fā)表的統(tǒng)計(jì)報(bào)告顯示,2003年日本國(guó)內(nèi)利用手機(jī)上網(wǎng)玩游戲的用戶(hù)數(shù)達(dá)897萬(wàn)人。日本在手機(jī)游戲領(lǐng)域走在世界前列的主要的原因是:</p><p> 其一,日本擁有龐大
45、的移動(dòng)數(shù)據(jù)業(yè)務(wù)用戶(hù)群。經(jīng)過(guò)近年來(lái)的不斷發(fā)展,到2004年6月底,日本移動(dòng)用戶(hù)數(shù)已經(jīng)達(dá)到8270萬(wàn),其中7000萬(wàn)以上的用戶(hù)使用移動(dòng)數(shù)據(jù)業(yè)務(wù)。NTT DoCoMo的i-mode業(yè)務(wù)是世界公認(rèn)的經(jīng)營(yíng)最成功的移動(dòng)數(shù)據(jù)業(yè)務(wù)。而手機(jī)游戲作為其中的一項(xiàng)業(yè)務(wù),擁有廣泛的用戶(hù)群。</p><p> 其二,日本是傳統(tǒng)的電子游戲大國(guó)。世界傳統(tǒng)游戲市場(chǎng)的巨頭索尼、世嘉和任天堂都在日本,他們手中掌握了豐富的視頻游戲和PC游戲資源,都可
46、以轉(zhuǎn)化為手機(jī)游戲產(chǎn)品。2004年,NTT DoCoMo推出了新一代FOMA手機(jī),具有更強(qiáng)大的“i-appli”( Java )游戲功能。新一代FOMA手機(jī),把軟件存儲(chǔ)區(qū)域和數(shù)據(jù)保存區(qū)域(高速緩存)的總?cè)萘刻岣叩浆F(xiàn)有230k的2倍以上,從性能上看已經(jīng)超過(guò)了任天堂GBA掌機(jī)。這說(shuō)明,隨著日本手機(jī)功能的升級(jí)和無(wú)線寬帶網(wǎng)絡(luò)數(shù)據(jù)承載能力的提高,手機(jī)游戲已經(jīng)對(duì)高端的游戲廠商產(chǎn)生了強(qiáng)大的吸引力,手機(jī)游戲已不再是簡(jiǎn)單游戲的代名詞。到2007年,日本的手
47、機(jī)游戲市場(chǎng)規(guī)模將會(huì)增長(zhǎng)到近6億美元。</p><p> 近年來(lái),韓國(guó)網(wǎng)絡(luò)游戲一直保持著高速增長(zhǎng)的勢(shì)頭,這為手機(jī)游戲的發(fā)展奠定了良好的用戶(hù)基礎(chǔ)。與此同時(shí),韓國(guó)的移動(dòng)通信用戶(hù)基礎(chǔ)非常雄厚。2004年,在韓國(guó)總共4500萬(wàn)人口中,移動(dòng)通信用戶(hù)數(shù)已經(jīng)超過(guò)了3500萬(wàn)。</p><p> 韓國(guó)政府一直在努力推動(dòng)包括網(wǎng)絡(luò)游戲和手機(jī)游戲在內(nèi)的數(shù)字內(nèi)容產(chǎn)業(yè)的發(fā)展,相應(yīng)的優(yōu)惠政策和充足的資金投入催生了大
48、批的手機(jī)游戲開(kāi)發(fā)商,有力推動(dòng)了手機(jī)游戲內(nèi)容的開(kāi)發(fā)進(jìn)程。與此同時(shí),諸如NC Soft、Webzen、Nexon等韓國(guó)領(lǐng)先的網(wǎng)絡(luò)游戲開(kāi)發(fā)商也積極躋身移動(dòng)游戲領(lǐng)域,而主要的移動(dòng)門(mén)戶(hù)運(yùn)營(yíng)商N(yùn)HN和DAUM積極致力于移動(dòng)在線交互式游戲的開(kāi)發(fā),從而促進(jìn)了手機(jī)游戲內(nèi)容的繁榮。</p><p> 雖然韓國(guó)的手機(jī)游戲產(chǎn)業(yè)發(fā)達(dá),但其國(guó)內(nèi)市場(chǎng)是有限的。為此,隨著市場(chǎng)競(jìng)爭(zhēng)的加劇,韓國(guó)企業(yè)致力于推動(dòng)手機(jī)游戲產(chǎn)品的出口。目前,韓國(guó)手機(jī)游戲
49、產(chǎn)品主要向美國(guó)、日本和歐洲出口,出口的市場(chǎng)份額分別為:美國(guó)56%、日本19.9%、歐洲12.6%、其他國(guó)家11.5%。</p><p> 歐洲很早就推出了手機(jī)游戲業(yè)務(wù),但在2003年以前,歐洲手機(jī)游戲市場(chǎng)還主要停留在SMS和WAP游戲時(shí)代。與日韓相比,歐洲的手機(jī)游戲市場(chǎng)相對(duì)滯后。</p><p> 隨著移動(dòng)數(shù)據(jù)業(yè)務(wù)的不斷發(fā)展和市場(chǎng)壓力的不斷加大,歐洲移動(dòng)運(yùn)營(yíng)商已認(rèn)識(shí)到改善手機(jī)游戲市場(chǎng)環(huán)
50、境的必要性和緊迫性。在終端問(wèn)題上,歐洲的運(yùn)營(yíng)商開(kāi)始直接引入日韓的高端手機(jī),打破了傳統(tǒng)歐洲手機(jī)市場(chǎng)為歐洲手機(jī)廠商壟斷的局面;在經(jīng)營(yíng)模式上,他們也采取了開(kāi)放的數(shù)據(jù)業(yè)務(wù)經(jīng)營(yíng)模式。比如Vodafone公司就推出了Vodafone Live,通過(guò)合作分成的模式鼓勵(lì)手機(jī)游戲開(kāi)發(fā)商的積極參與。也有公司直接引入日本imode的運(yùn)作模式和游戲內(nèi)容。這些舉措大大推動(dòng)了歐洲手機(jī)游戲業(yè)務(wù)的發(fā)展。到2003年年底,歐洲手機(jī)游戲市場(chǎng)的環(huán)境已基本成熟,Java手機(jī)在
51、歐洲已經(jīng)十分普及,還出現(xiàn)了像N-Gage這樣的專(zhuān)用手機(jī)游戲終端。據(jù)預(yù)測(cè),2008年歐洲手機(jī)游戲市場(chǎng)達(dá)到30億歐元,占移動(dòng)娛樂(lè)內(nèi)容收入的19%。</p><p> 美國(guó)手機(jī)游戲市場(chǎng)起步雖晚,但是發(fā)展卻十分迅速。從2002年秋天開(kāi)始,美國(guó)大多數(shù)移動(dòng)網(wǎng)絡(luò)速度得到了提升,更加適于手機(jī)游戲業(yè)務(wù)的發(fā)展。如今,美國(guó)移動(dòng)運(yùn)營(yíng)商每月都在推出新的游戲,手機(jī)廠商也在不斷推出新的支持手機(jī)游戲的產(chǎn)品。從游戲提供的數(shù)量看,美國(guó)移動(dòng)運(yùn)營(yíng)商已
52、經(jīng)大大超過(guò)了歐洲運(yùn)營(yíng)商。2003年,手機(jī)游戲已成為美國(guó)眾多移動(dòng)數(shù)據(jù)下載應(yīng)用的第一應(yīng)用。IDC數(shù)據(jù)顯示,2003年美國(guó)手機(jī)游戲用戶(hù)滲透率為7.9%;預(yù)測(cè)到2008年,美國(guó)手機(jī)游戲滲透率將達(dá)到34.7%,達(dá)到6520萬(wàn)戶(hù)的規(guī)模。Yankee Group的分析師表示,美國(guó)手機(jī)游戲業(yè)務(wù)的迅速發(fā)展,使得手機(jī)平臺(tái)有望成為繼電腦、控制桿、掌機(jī)游戲、互聯(lián)網(wǎng)之后的第五大游戲平臺(tái)。</p><p> 從當(dāng)今國(guó)內(nèi)外形勢(shì)看,我國(guó)在手機(jī)
53、游戲制作方面還剛剛處于起步階段,還不像日韓和歐美國(guó)家處于一個(gè)高速發(fā)展階段。我們只是剛剛引進(jìn)這一技術(shù),但是隨著時(shí)代的發(fā)展,我們應(yīng)該看到手機(jī)游戲制作在中國(guó)的市場(chǎng)以及在中國(guó)發(fā)展的潛力。我們要相信在不久的將來(lái),國(guó)內(nèi)手機(jī)游戲市場(chǎng)一定回迎來(lái)一個(gè)春天的![8] </p><p> 第3章 游戲設(shè)計(jì)的需求分析</p><p> 3.1 MIDP中的游戲API</p><p>
54、 MIDP是專(zhuān)門(mén)為互聯(lián)受限設(shè)備配置設(shè)計(jì)的,它為移動(dòng)設(shè)備提供了一套API集合,MIDP包含用戶(hù)界面類(lèi)、持久存儲(chǔ)功能與網(wǎng)絡(luò)功能。早在MIDP1.0版本時(shí),是沒(méi)有單獨(dú)的游戲API的,在MIDP2.0后增加了一個(gè)新的專(zhuān)門(mén)的游戲軟件包Javax.microedition.lcdui.game,顧名思義,此包中定義了游戲開(kāi)發(fā)的各種類(lèi)型。這個(gè)軟件包是一個(gè)專(zhuān)門(mén)為在移動(dòng)信息設(shè)備上開(kāi)發(fā)游戲應(yīng)用而設(shè)計(jì)的,所以又叫作游戲API。[10]它里面的成員類(lèi)有以下幾
55、個(gè):GameCanvas、Layer、LayerManager、Sprite、TiledLayer。GameCanvas是提供基本的游戲界面;Layer是一個(gè)用來(lái)表示游戲中的可視元素的抽象類(lèi);LayerManager管理一系列的Layer;Sprite是一個(gè)基本的可視元素,它本身包含了許多操作,比如將一個(gè)圖片切分成若干畫(huà)面幀(Row Frame),再對(duì)這些畫(huà)面幀編排出一個(gè)動(dòng)畫(huà)序列(Frame Sequence);TiledLayer是一
56、個(gè)可以被許多圖片填充的類(lèi)似于表格的可視元素。[10]本論文在設(shè)計(jì)游戲過(guò)程中涉及到其中的GameCanvas類(lèi)和Sprite類(lèi)</p><p><b> 3.2 游戲類(lèi)構(gòu)成</b></p><p> 在游戲中,主要的一些類(lèi)構(gòu)成有Pocket Boxing、Boxer、Enemy、GameCanvas。其中Pocket Boxing類(lèi)繼承了MIDlet類(lèi),用來(lái)進(jìn)行MI
57、Dlet的Live Cycle控制;Boxer存儲(chǔ)了玩家的拳擊手的信息,進(jìn)行拳擊手的描繪;Enemy存儲(chǔ)電腦控制的拳擊手的信息,進(jìn)行拳擊手的描繪,它繼承了Boxer類(lèi);GameCanvas繼承了Canvas類(lèi),進(jìn)行畫(huà)面的描繪與操作。各類(lèi)都是用與類(lèi)名稱(chēng)相同的文件名來(lái)存儲(chǔ)的。[3]各類(lèi)間的關(guān)系如圖3.1。</p><p> 3.2.1 Boxer類(lèi)的實(shí)現(xiàn)</p><p> Boxer類(lèi)是用
58、來(lái)存儲(chǔ)玩家拳擊手狀態(tài)的信息,再以次為根據(jù)進(jìn)行描繪。Boxer類(lèi)由于與用來(lái)表現(xiàn)對(duì)手的Enemy類(lèi)大致上是相同的,所以要以繼承了Enemy類(lèi)為</p><p> DefaultPackage</p><p><b> 圖3.1游戲類(lèi)圖</b></p><p> Fig 3.1. Game diagram</p><p>
59、;<b> 前提來(lái)實(shí)現(xiàn)。</b></p><p> 在Boxer類(lèi)的Constructor當(dāng)中,會(huì)進(jìn)行拳擊手圖像的獲取。這里要準(zhǔn)備拳擊手的身體、上段防御的手腕、下段防御的手腕、上段拳擊的手腕、下段拳擊的手腕等五種圖像。通過(guò)身體圖像四種類(lèi)圖像的配合,就可以描繪出生動(dòng)拳擊手動(dòng)態(tài)。</p><p> 3.2.2 GameCanvas類(lèi)的功能及特點(diǎn)</p>
60、<p> GameCanvas類(lèi)是Javax.microedition.lcdui軟件包中的Cavas類(lèi)的一個(gè)子類(lèi),它可以為游戲提供基本的顯示功能;GameCanvas類(lèi)是提供了游戲的中心屬性,如游戲鍵當(dāng)前狀態(tài)的能力、雙緩存繪圖等;GameCanvas類(lèi)是一個(gè)專(zhuān)門(mén)的為每一個(gè)GameCanvas實(shí)例填充初始化純白像素的緩存器;通過(guò)調(diào)用Graphics對(duì)象可以改變緩存器中的內(nèi)容。[4]</p><p>
61、 3.2.3 Sprite類(lèi)的功能及特點(diǎn)</p><p> Sprite類(lèi)是一個(gè)能顯示幾個(gè)繪圖幀(frame)中的其中一幀的基本動(dòng)態(tài)層;這些幀大小相同并且由一個(gè)單獨(dú)的圖片(image)對(duì)象提供;Sprite類(lèi)可以使許多幀連續(xù)的運(yùn)動(dòng),可以使一個(gè)定制的序列以任何方式被放置;另外還可以提供轉(zhuǎn)化于檢測(cè)方法。下面是Sprite代碼樣例:[1]</p><p> import javax.mic
62、roedition.lcdui.game.*;</p><p> import javax.microedition.lcdui.*;</p><p> public class Text Layer extends Sprite {</p><p> Image _image; String _string;</p><p> Te
63、xtLayer (Image i) {</p><p> super( i );}</p><p> public void draw(Graphics g ) throws NullPointerException</p><p><b> {</b></p><p> Graphics.LEFT ) ;
64、</p><p><b> }</b></p><p> 3.3游戲角色的處理</p><p> 這里的游戲角色——拳擊手的初始化是以將拳擊手設(shè)為后退,并將生命值設(shè)為默認(rèn)值為主要目的。</p><p> 拳擊手在揮出拳之后,將會(huì)在等待一段時(shí)間后恢復(fù)原本的防御狀態(tài)。為了要進(jìn)行這個(gè)等待處理,使用到了Tick計(jì)數(shù)。當(dāng)現(xiàn)
65、在的狀態(tài)為上下拳擊時(shí),就會(huì)開(kāi)始Tick計(jì)數(shù),當(dāng)數(shù)到4以上的狀態(tài)時(shí)就會(huì)回到原來(lái)的防御位置。這樣一來(lái)就可以表現(xiàn)出拳擊手出拳頭后再回到原來(lái)防御狀態(tài)的樣子。</p><p> 不過(guò),在后退時(shí)揮出拳擊的情況中,這里不能馬上回到后退狀態(tài)。要在揮出拳擊后回到后退狀態(tài)時(shí),就得通過(guò)玩家自己的操作來(lái)進(jìn)行了。</p><p> 3.4 游戲中的事件處理</p><p> 事件可分為
66、:低層事件( low-level event )與高層事件( high-level event )。低層事件一般用來(lái)處理設(shè)備事件,如:按鍵事件、探針事件。高層事件用來(lái)處理應(yīng)用中的相關(guān)事件,如:命令事件、組件狀態(tài)變化事件。由于開(kāi)發(fā)手機(jī)游戲時(shí)我們主要用到的是Key事件的處理方法,因?yàn)橐苿?dòng)設(shè)備的鍵盤(pán)是傳遞用戶(hù)意圖的最主要的輸入設(shè)備,Key事件屬于低層事件。那么低層事件中用下面的兩種方法來(lái)處理應(yīng)用的Key事件。[2] </p>&
67、lt;p> 3.4.1 key Pressed方法</p><p> 方法key Pressed是用來(lái)處理鍵被按下的事件,這個(gè)方法沒(méi)有與其對(duì)應(yīng)的顯示的聽(tīng)眾對(duì)象( Listener ),這些聽(tīng)眾對(duì)象有系統(tǒng)根據(jù)實(shí)際對(duì)象缺省提供,例如后面提到的Canvas對(duì)象就是默認(rèn)的key事件聽(tīng)眾對(duì)象,它缺省地實(shí)現(xiàn)了Key Listener接口。簡(jiǎn)單的一個(gè)樣例代碼:</p><p><b>
68、; … ….</b></p><p> public void keyPressed (int keyCode) {</p><p> if (keyCode > 0) {</p><p> //輸出當(dāng)前被按下鍵的鍵碼</p><p> System. out.println(“keyPressed ” +( (
69、char) keyCode ) );</p><p><b> } else {</b></p><p><b> …</b></p><p><b> }</b></p><p><b> }</b></p><p>
70、當(dāng)按下手機(jī)的操作鍵盤(pán)上的按鍵時(shí),就會(huì)觸發(fā)這key事件,系統(tǒng)并會(huì)自動(dòng)調(diào)用keyPressed()方法,并且系統(tǒng)將捕獲到的鍵碼傳遞給該方法,在上面的那段代碼中方法判斷了所按的按鍵值是否大于0,如果大于0輸出所按的手機(jī)鍵盤(pán)上的實(shí)際值,否則執(zhí)行其他的操作任務(wù)。[4] </p><p> 3.4.2 key Released方法</p><p> 可以說(shuō)方法key Released()與上面提到
71、的keyPressed()方法是對(duì)應(yīng)的。它是用來(lái)處理手機(jī)操作鍵盤(pán)上的按鍵被釋放的事件,這個(gè)方法也同樣沒(méi)有與之對(duì)應(yīng)的顯示的聽(tīng)眾,這些聽(tīng)眾也是由系統(tǒng)根據(jù)實(shí)際對(duì)象提供的。下面是一個(gè)樣例代碼:</p><p><b> … …</b></p><p> public void keyReleased(int keyCode) {</p><p>
72、 if (keyCode >0 ) {</p><p> / /輸出當(dāng)前被釋放鍵的鍵碼</p><p> System.out.println(“keyReleased ” +( (char) keyCode) );</p><p><b> } else {</b></p><p><b>
73、 …</b></p><p><b> }</b></p><p><b> }</b></p><p><b> … …</b></p><p> 當(dāng)釋放手機(jī)操作鍵盤(pán)上被按下的按鍵時(shí),則會(huì)觸發(fā)這個(gè)key事件,系統(tǒng)并會(huì)自動(dòng)交由keyReleased()方法來(lái)
74、處理該事件,同樣的上面的這段代碼中,該方法判斷了所按的按鍵值是否大于0,如果大于0則輸出所釋放的手機(jī)鍵盤(pán)上的被按下的按鍵的實(shí)際鍵值,否則執(zhí)行其他的操作任務(wù)。[4] </p><p> 上面說(shuō)的是在開(kāi)發(fā)手機(jī)游戲過(guò)程中遇到的兩種低層事件的方法keyPressed方法和keyReleased方法,下面就具體介紹“Pocket Boxing”手機(jī)游戲的開(kāi)發(fā)過(guò)程。</p><p> 第4章 “
75、Pocket Boxing”手機(jī)游戲開(kāi)發(fā)制作</p><p><b> 4.1 游戲編程</b></p><p> 眾所周知,J2ME現(xiàn)在最流行的就是制作手機(jī)游戲,況且現(xiàn)在無(wú)線游戲編程現(xiàn)在又是一個(gè)很熱門(mén)的話(huà)題,不但因?yàn)樗哂袠O強(qiáng)的趣味性,更重要的是它給我們帶來(lái)了無(wú)限的商機(jī)。隨著JAVA手機(jī)的誕生,手機(jī)游戲編程的靈活性與輕便性使得JAVA手機(jī)游戲成為游戲市場(chǎng)的又一亮
76、點(diǎn)。 </p><p> 4.2 格斗類(lèi)手機(jī)游戲?qū)嵗?lt;/p><p> 手機(jī)游戲有很多種類(lèi),其中格斗類(lèi)游戲憑借著它的趣味性和娛樂(lè)性深受人們的青睞。如何制作一款優(yōu)秀的格斗類(lèi)游戲,就成為手機(jī)游戲開(kāi)發(fā)人員一個(gè)最關(guān)鍵的問(wèn)題了。</p><p> 4.2.1 “Pocket Boxing”游戲背景介紹及開(kāi)發(fā)環(huán)境 </p><p> 這里將通過(guò)一
77、款拳擊游戲來(lái)介紹格斗類(lèi)手機(jī)游戲中的攻擊與防御等重要因素、以及如何控制對(duì)手角色。</p><p> 這款游戲名字叫“Pocket Boxing”。在這款游戲中,玩家所控制的拳擊手將出現(xiàn)在屏幕的左側(cè),電腦所控制的拳擊手則出現(xiàn)在屏幕的右側(cè)。拳擊手可以進(jìn)行上下兩種的攻擊方式,以及上下阻擋防守與后退防守的防衛(wèi)。當(dāng)攻擊命中對(duì)手時(shí),就可以是對(duì)手角色的生命點(diǎn)數(shù)減少,不過(guò)不是任何的攻擊方法都可以使對(duì)手的生命點(diǎn)數(shù)減少的。當(dāng)玩家在進(jìn)
78、行上方和下方的攻擊的時(shí)候,對(duì)手進(jìn)行相對(duì)應(yīng)防衛(wèi)的時(shí)候,在對(duì)手防守狀態(tài)中是不能使對(duì)手的生命點(diǎn)數(shù)減少的,還有一種情況就是在對(duì)手后退一步避開(kāi)你的攻擊的時(shí)候也同樣不會(huì)減少生命點(diǎn)數(shù)的。</p><p> 當(dāng)對(duì)手的生命點(diǎn)數(shù)用盡的時(shí)候,玩家就獲得了這一局比賽的勝利,就可以進(jìn)入下一個(gè)回合。在進(jìn)入下一個(gè)回合后,電腦控制的對(duì)手的生命值會(huì)恢復(fù),同時(shí)拳擊手的攻擊力會(huì)加強(qiáng),也就是難度會(huì)加大。相對(duì)的玩家控制的拳擊手在前一回合所剩下的生命點(diǎn)數(shù)
79、,也可以附加到下一回合的生命點(diǎn)數(shù)上去。</p><p> 游戲中一共有五個(gè)回合,在全部的回合中取得勝利的話(huà)就是冠軍了。在中途如果被打敗,就算是游戲結(jié)束了。游戲流程如圖4.1:</p><p> 這款手機(jī)游戲是個(gè)簡(jiǎn)單的MIDP應(yīng)用程序,在這里進(jìn)行開(kāi)發(fā)有它需要的開(kāi)發(fā)環(huán)境。MIDPlet的開(kāi)發(fā)環(huán)境需要有java2 SDK1.3版以上(這里使用的是JDK1.4版)與MIDP的類(lèi)庫(kù)、以及后述的運(yùn)
80、行前驗(yàn)證工具三種。在J2MEWTK中除了包括MIDP的類(lèi)庫(kù)、運(yùn)行前驗(yàn)證工具之外,還會(huì)把編譯與包裝(JAR文件化)、JAD文件的創(chuàng)建、模擬器的啟動(dòng)等在開(kāi)發(fā)MIDP需要用到的操作加以集成。當(dāng)完成了JDK1.4以及J2MEWTK的安裝以后,就可以開(kāi)始對(duì)游戲項(xiàng)目進(jìn)行創(chuàng)建了。</p><p> 4.2.2 MIDlet的構(gòu)成</p><p> 開(kāi)發(fā)環(huán)境準(zhǔn)備好了之后,就應(yīng)該進(jìn)行MIDlet的開(kāi)發(fā)了
81、。</p><p> 遵循MIDP規(guī)范的基本MIDPlet是組合了JAR文件與JAD文件來(lái)運(yùn)行的。JAR文件是將Class文件或者是圖像等集成在一起的文件,而JAD文件則用來(lái)指定JAR文件內(nèi)啟動(dòng)MIDlet類(lèi)名稱(chēng)或JAR文件的大小、版本等屬性。移動(dòng)電話(huà)的JAM(Java Application Manager)一開(kāi)始就是將這個(gè)文件讀進(jìn)來(lái)后才啟動(dòng)MIDlet的。</p><p> JAR
82、文件雖然基本上與J2SE是相同的,不過(guò)其中所放置的列表文件內(nèi)容是不一樣的。列表文件中編寫(xiě)了許多的文件打包信息。一般來(lái)說(shuō)可以在JAR文件內(nèi)放置多個(gè)MIDlet,通過(guò)在JAD文件中編寫(xiě)MIDlet個(gè)數(shù)相等的內(nèi)容,JAM就能依次判斷MIDlet的數(shù)目。</p><p> MIDlet文件的構(gòu)成:</p><p> ?。?)JAR(Java ARchive)文件:集成了Class File與圖像
83、、聲音等內(nèi)容的數(shù)據(jù)文件,雖然與J2SE的文件相同,但是列表的文件內(nèi)容不同。</p><p> ?。?)JAD(Java Application Descriptor)文件:指定啟動(dòng)的MIDlet類(lèi)名稱(chēng)或是數(shù)據(jù)文件大小、版本等信息。</p><p> ?。?)KDDI的地方,使用組合了JAR文件與JAD文件的KDDI專(zhuān)用的KJK(KDDIJavaeXtension)。</p>
84、<p> 4.2.3 MIDlet的生命周期</p><p> MIDlet的生命周期,與Applet或DoJa是不一樣的東西.若想要在Applet與DoJa之間作相互的移植時(shí),對(duì)這個(gè)生命周期的流程有越深入地了解,在進(jìn)行移植的時(shí)候就會(huì)越輕松。</p><p> MIDlet是以下列的生命周期來(lái)運(yùn)行的:</p><p> (1)當(dāng)終端發(fā)出了MIDle
85、t的運(yùn)行命令時(shí),若編寫(xiě)于JAD文件MIDlet有多個(gè)的時(shí)候,就讓其進(jìn)行選擇后啟動(dòng)MIDlet。</p><p> (2)MIDlet的Constructor被調(diào)用。</p><p> (3)MIDlet#startAPP()方法被調(diào)用,啟動(dòng)MIDlet。</p><p> ?。?)在終端有來(lái)電的時(shí)候MIDlet#startAPP()方法就會(huì)被調(diào)用,并讓MIDle
86、t暫停。</p><p> ?。?)當(dāng)通話(huà)結(jié)束等的時(shí)候,就再次調(diào)用MIDlet#starAPP()方法,MIDlet就會(huì)再次啟動(dòng)。</p><p> ?。?)調(diào)用MIDlet#destoryAPP(boolean)方法,以將MIDlet結(jié)束。</p><p><b> 如圖4.2 : </b></p><p> 4
87、.2.4 MIDlet的畫(huà)面顯示基礎(chǔ)</p><p> MIDlet類(lèi)本身由于并沒(méi)有提供直接操作畫(huà)面顯示的功能,因此在MIDlet類(lèi)的子類(lèi)也沒(méi)有直接操作畫(huà)面顯示的功能。因此,要使用管理畫(huà)面顯示功能的Display類(lèi)。這個(gè)Display類(lèi)可以讓javax.microedition.lcdui.Displayable 類(lèi)的子類(lèi)顯示在畫(huà)面</p><p><b> 上。&
88、lt;/b></p><p> 圖4.1 游戲的流程圖</p><p> Fig 4.1. The flow chart of games</p><p> 圖4.2 MIDlet的生命周期</p><p> Fig 4.2 .The life cycle of MIDlets</p><p> Dis
89、playable類(lèi)的子類(lèi)大致來(lái)說(shuō)可以分為兩種,分別用來(lái)進(jìn)行線與圖形、圖像的低級(jí)描繪類(lèi),與用來(lái)顯示警告與文本的輸入、選擇列表等UI組件類(lèi)。前者是指javax.microedition.lcdui.Canvaslei類(lèi),用來(lái)進(jìn)行低級(jí)描繪。后者是指其中的javax.microedition.lcdui.Screen類(lèi)與其子類(lèi)(Alert、Form、List、TextBox類(lèi)等)。</p><p> Displayab
90、le類(lèi)與子類(lèi)之間的關(guān)系如圖4.3</p><p> 4.2.5 游戲項(xiàng)目的創(chuàng)建</p><p> 在J2MEWTK中,是以項(xiàng)目這個(gè)單位來(lái)管理MIDletSuite,因此在進(jìn)行程序編寫(xiě)前必須先要?jiǎng)?chuàng)建項(xiàng)目。首先要將項(xiàng)目取名為SimpleMIDlet。在Windows“開(kāi)始”菜單啟動(dòng)J2MEWTK的KToolbar,啟動(dòng)之后,單擊“New project”按鈕。然后在“New project
91、”對(duì)話(huà)框的“project Name”與“MIDlet Class Name”的文本框輸入項(xiàng)目的名稱(chēng)“Pocket Boxing”,并單擊“Create project”按鈕。這樣就完成了對(duì)游戲項(xiàng)目的創(chuàng)建。</p><p> 圖4.3 Displayable類(lèi)與子類(lèi)類(lèi)圖</p><p> Fig 4.3. Displayable and a Son diagram</p>
92、<p> 接著就要對(duì)程序進(jìn)行編譯了,說(shuō)到編寫(xiě)程序代碼首先要提到支持J2ME的開(kāi)發(fā)工具。我用到的開(kāi)發(fā)工具是Borland公司推出的開(kāi)發(fā)工具——JBuilder9企業(yè)版。其功能非常強(qiáng)大,不僅可以集成化的編碼、調(diào)試,還可以進(jìn)行應(yīng)用發(fā)布,網(wǎng)絡(luò)調(diào)試以及版本控制等等,是一個(gè)非常不錯(cuò)的開(kāi)發(fā)工具。</p><p> 4.2.6 命令種類(lèi)及命令處理</p><p> 這個(gè)游戲中要定義的命令
93、,一共有使用在標(biāo)題畫(huà)面的Start、Exit命令與使用在游戲中的Pause、Resume、Quit命令共計(jì)五種。</p><p> 下面是這五種命令變量的程序代碼:</p><p> /**Start命令變量*/</p><p> Private Command startCmd=new Command (“Start”, command. SCREEN, 5
94、);</p><p> /**Exit命令變量*/</p><p> Private Command exitCmd=new Command (“Exit”, command. SCREEN, 1);</p><p> 如圖4.5 圖4.5游戲開(kāi)始界面</p><p> Fig4.5.Game beginning interf
95、ace</p><p> /**Pause命令變量*/</p><p> Private Command pauseCmd=new Command (“Pause”, command. SCREEN, 5);</p><p> /**Resume命令變量*/</p><p> Private Command resumeCmd=new
96、 Command (“Resume”, command. SCREEN, 5);</p><p> /**Quit命令變量*/</p><p> Private Command quitCmd=new Command (“Quit”, command. SCREEN, 1);</p><p><b> 如圖4.6:</b></p&g
97、t;<p> 圖4.6游戲暫停畫(huà)面</p><p> Fig4.6.Game pause appearance</p><p> 4.2.7 游戲中的描繪處理</p><p> 進(jìn)行描繪的doDraw( Graphics g )方法,將會(huì)在Game Canvas類(lèi)進(jìn)行描繪時(shí)被調(diào)用出來(lái)。描繪位置會(huì)在Game Canvas類(lèi)中先使用Set Dra
98、w X( int x )和Set Draw Y(int y)方法來(lái)預(yù)先指定。在決定畫(huà)面位置的時(shí)候,由于拳擊手圖像只有上半身,因此必須將圖像的下半部分設(shè)置在畫(huà)面的最下方。因此,就要準(zhǔn)備能返回圖像高度的get Height()方法。另外,在被擊倒的時(shí)候由于是以拳擊手倒在地下為前提,因此將什么都不描繪。</p><p> 描繪處理的程序代碼如下:</p><p> /**存儲(chǔ)了描繪開(kāi)始的X坐
99、標(biāo)的變量*/</p><p> Protected int draw X ;</p><p> /**存儲(chǔ)了描繪開(kāi)始的Y坐標(biāo)的變量*/</p><p> Protected int draw Y ;</p><p><b> /**</b></p><
100、;p> * 設(shè)置用來(lái)進(jìn)行描繪的X坐標(biāo)的方法</p><p> * @ Param x 進(jìn)行描繪的X坐標(biāo)</p><p><b> */</b></p><p> Void set draw X ( int x ) {</p><p> this. drawX=x ;</p>
101、;<p><b> }</b></p><p><b> /**</b></p><p> * 設(shè)置用來(lái)進(jìn)行描繪的Y坐標(biāo)的方法</p><p> * @ Param y 進(jìn)行描繪的Y坐標(biāo)</p><p><b> */</b></
102、p><p> Void set draw Y( int y ) {</p><p> this. drawY=y ;</p><p><b> }</b></p><p><b> /**</b></p><p> * 返回圖像高度的方法</p>&l
103、t;p> * @ return int 進(jìn)行描繪的圖像高度</p><p><b> */</b></p><p> int get Height() {</p><p> //返回身體圖像的高度</p><p> return images[0]. Get Height() ;</p>
104、<p><b> }</b></p><p> 以上是對(duì)Boxer進(jìn)行的描繪,在Enemy類(lèi)繼承了在功能方面幾乎相同的Boxer類(lèi),并承續(xù)其功能改寫(xiě)了get Imagepaths()方法與doDraw( Graphics g )方法,更改為進(jìn)行了圖像的獲取以及與玩家位置相反的方向描繪。在Constructor當(dāng)中,就會(huì)調(diào)用出Boxer類(lèi)的Constructor,并進(jìn)行圖像
105、的讀取。</p><p> 4.2.8 游戲狀態(tài)的類(lèi)變量</p><p> 在游戲中,在Game Canvas類(lèi)中定義表現(xiàn)游戲狀態(tài)的類(lèi)變量。要實(shí)現(xiàn)的變量將包括:標(biāo)題、回合開(kāi)始、回合中、回合結(jié)束、全部回合結(jié)束等變量。</p><p><b> 程序代碼:</b></p><p> /** 代表標(biāo)題顯示狀態(tài)的常量 *
106、/</p><p> Private static final short TITLE =0 ;</p><p> /** 代表回合開(kāi)始顯示狀態(tài)的常量 */ 如圖4.7 </p><p> 圖4.7回合開(kāi)始畫(huà)面</p><p> Fig4.7.Bout beginning appearance</p><p>
107、; Private static final short ROUND_START =1 ;</p><p> /** 代表比賽中顯示狀態(tài)的常量 */ 如圖4.8 </p><p><b> 圖4.8比賽中畫(huà)面</b></p><p> Fig4.8.The game is inside the appearance</p>
108、<p> Private static final short FIGHTING =2 ;</p><p> /** 代表回合結(jié)束顯示狀態(tài)的常量 */如圖4.9 </p><p> 圖4.9回合結(jié)束畫(huà)面</p><p> Fig4.9.At an end appearance in bout</p><p> Pri
109、vate static final short ROUND_END =9 ;</p><p> /** 代表回合過(guò)關(guān)狀態(tài)的常量 */如圖4.10 </p><p> 圖4.10回合過(guò)關(guān)畫(huà)面</p><p> Fig4.10. Bouts pass the appearance</p><p> Private static fina
110、l short ALL_ROUND_CLEAR =10 ;</p><p> 另外,除了上述提到的五種狀態(tài)變量,還涉及到了代表存儲(chǔ)現(xiàn)在狀態(tài)的變量(game state)與暫停狀態(tài)的標(biāo)識(shí)(ispaused)。代碼如下:</p><p> /** 存儲(chǔ)現(xiàn)在顯示狀態(tài)的變量 */</p><p> Private short gamesta
111、te ;</p><p> /** 代表暫停狀態(tài)的標(biāo)志 */</p><p> Private Boolean ispaused ;</p><p> 4.2.9 按鍵事件的處理</p><p> 在進(jìn)行按鍵處理的key Pressed方法中,當(dāng)不是在回合中的時(shí)候或在回合中但暫停中的時(shí)候,由于沒(méi)有必要所以不進(jìn)行
112、處理。除此之外,在拳擊中也不進(jìn)行任何的處理,這是因?yàn)槿绻谌瓝舢?dāng)中若能做出其他動(dòng)作的話(huà)會(huì)非常奇怪。當(dāng)都不符合以上條件時(shí),就要根據(jù)所按下的數(shù)字按鍵來(lái)更改使用者的狀態(tài)。在這款游戲中按鍵是這樣分配的:“1”后退、“4”后退、“2”上方防御、“5”下方防御、“3”上方攻擊、“6”下方攻擊。當(dāng)為上方攻擊和下方攻擊時(shí),就要調(diào)用出doLifepointCheck4 Enemy( )方法來(lái)根據(jù)對(duì)手的狀態(tài)減少生命點(diǎn)數(shù),然后根據(jù)生命點(diǎn)數(shù)的剩余量來(lái)結(jié)束回合。
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)論文---- 基于j2me的手機(jī)游戲開(kāi)發(fā)
- j2me畢業(yè)論文-- j2me手機(jī)彩票軟件開(kāi)發(fā)
- 畢業(yè)論文范文——基于j2me的手機(jī)游戲開(kāi)發(fā) (2)
- j2me飛機(jī)游戲(畢業(yè)設(shè)計(jì))
- 基于j2me手機(jī)推箱子游戲的設(shè)計(jì)與實(shí)現(xiàn)[畢業(yè)論文]
- 畢業(yè)設(shè)計(jì)---基于j2me的java游戲
- 畢業(yè)論文---基于j2me手機(jī)華容道游戲的設(shè)計(jì)與實(shí)現(xiàn)
- 基于j2me俄羅斯方塊游戲的設(shè)計(jì)和實(shí)現(xiàn)【畢業(yè)論文】
- 畢業(yè)設(shè)計(jì)(論文)j2me手機(jī)游戲的開(kāi)發(fā)-beckham goal
- 基于j2me平臺(tái)的手機(jī)應(yīng)用開(kāi)發(fā)-畢業(yè)論文
- 畢業(yè)論文——基于gprs網(wǎng)絡(luò)的j2me應(yīng)用開(kāi)發(fā)
- j2me手機(jī)游戲的開(kāi)發(fā)-beckhamgoal
- 畢業(yè)論文--基于j2me平臺(tái)的俄羅斯方塊游戲設(shè)計(jì)與實(shí)現(xiàn)
- 畢業(yè)設(shè)計(jì)---基于j2me的手機(jī)游戲開(kāi)發(fā)
- 基于j2me平臺(tái)的手機(jī)應(yīng)用開(kāi)發(fā)-畢業(yè)論文
- 基于j2me平臺(tái)的手機(jī)游戲開(kāi)發(fā)
- 基于j2me平臺(tái)的手機(jī)游戲開(kāi)發(fā)
- j2me手機(jī)游戲設(shè)計(jì)綜述[文獻(xiàn)綜述]
- 基于J2ME的手機(jī)游戲設(shè)計(jì).pdf
- [jsp畢設(shè)]j2me彈球游戲設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論