【精品】:國內(nèi)外手機游戲的研究現(xiàn)狀_第1頁
【精品】:國內(nèi)外手機游戲的研究現(xiàn)狀_第2頁
【精品】:國內(nèi)外手機游戲的研究現(xiàn)狀_第3頁
【精品】:國內(nèi)外手機游戲的研究現(xiàn)狀_第4頁
【精品】:國內(nèi)外手機游戲的研究現(xiàn)狀_第5頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、【精品】:國內(nèi)外手機游戲的研究現(xiàn)狀武漢科技大學(xué)中南分校畢業(yè)設(shè)計(論文)目錄第一章引言1國內(nèi)外手機游戲的研究現(xiàn)狀1手機游戲的技術(shù)分類1研究意義2第二章基于J2ME的手機游戲開發(fā)平臺概述4什么是J2ME4J2ME平臺體系結(jié)構(gòu)4KVM5CLDC6移動信息設(shè)備描述(MIDP)8MIDP應(yīng)用程序8MIDPUI組件.9第三章手機游戲開發(fā)的相關(guān)知識及工具12手機游戲的畫面.12手機游戲中的按鍵13線程使用14手機硬件平臺特點14手機游戲開發(fā)工具軟件15第四章手機游戲一“逃亡者”的設(shè)計與實現(xiàn)174.1游戲描述17可行性研究17游戲設(shè)計17詳細編碼設(shè)計.19程序打包、下載安裝與運行19最后效果圖20第五章結(jié)束語

2、21參考文獻22致謝23附錄24第1頁共42頁楊永:基于J2ME的手機游戲設(shè)計第一章引言1.1 國內(nèi)外手機游戲的研究現(xiàn)狀近年來,因特網(wǎng)在國內(nèi)迅速普及,導(dǎo)致了網(wǎng)絡(luò)游戲的高速發(fā)展。同樣手機的普及,導(dǎo)致了手機游戲市場呈現(xiàn)爆炸式的發(fā)展。尤其是國內(nèi)外巨大的手機擁有量,更是讓商家看到了商機,手機游戲市場利潤將會十分豐厚。面對潛力如此巨大的手機游戲市場,各游戲開發(fā)商、運營商、服務(wù)商以及手機終端廠商等都紛紛開始了各自的應(yīng)戰(zhàn)準備,以便搶占商機。諾基亞、索愛、摩托羅拉等各大手機廠商開始不斷的提升手機在游戲方面的性能,同時還在手機操作系統(tǒng)方面采用開放式的平臺,方便用戶享受不同的1手機游戲業(yè)務(wù)。而國內(nèi)游戲開發(fā)商,如盛

3、大、網(wǎng)易等公司,紛紛躋身手機游戲開發(fā)商行列。新浪、搜狐等著名的門戶網(wǎng)站,也紛紛涉足手機游戲領(lǐng)域,相繼開辟了各自的手機游戲頻道和欄目,其他一些游戲網(wǎng)站也都全面加快了手機游戲開發(fā)的步伐。目前SU心司的J2MECLDC/MID即境和高通公司的BREW(BinaryRuntimeEnvironmentforWireless)客戶端程序是國內(nèi)外游戲開發(fā)的兩大主要平臺。中國電信業(yè)巨頭中國移動建立了無線Java增值服務(wù)體系,推出了基于SU心司的J2ME環(huán)境的“百寶箱”業(yè)務(wù),包括游戲類、商務(wù)類、生活類等豐富的數(shù)據(jù)服務(wù)。中國移動用戶只要使用支持Java的手機,通過GPRS勺無線上網(wǎng)方式,訪問移動夢網(wǎng)門戶的“百寶

4、箱”服務(wù)菜單,就能方便地下載各種由Java語言編寫的應(yīng)用程序。而中國聯(lián)通與高通公司合作,采用高通公司的BREM臺技術(shù),推出了“神奇寶典”業(yè)務(wù),中國聯(lián)通用戶可以從聯(lián)通公司的應(yīng)用下載服務(wù)器上以無線方式下載應(yīng)用程序。1.2 手機游戲的技術(shù)分類手機游戲按實現(xiàn)的技術(shù)分,可分為嵌入式游戲、瀏覽器游戲、基于J2ME和其它的解釋語言的游戲、基于C+g用程序和其它編譯語言的游戲等。1.3 入式游戲嵌入式游戲在出廠時就固化在手機的芯片中,像Nokia的“貪吃蛇”就是一個經(jīng)典的例子。這些游戲是為手機量身定做,能夠充分發(fā)揮特定手機的強大性能,從而達到其他類型的游戲所無法達到的效果,而且嵌入式游戲在運行過程中不會讓用戶

5、產(chǎn)生費用。但是這些游戲是依據(jù)手機生產(chǎn)廠商的平臺進行開發(fā)1 J2ME開發(fā)網(wǎng)?J2ME中文教程?PDF電子文檔,2005-9-5第1頁共42頁武漢科技大學(xué)中南分校畢業(yè)設(shè)計(論文)的,出廠時設(shè)置了幾款游戲,玩家就只能在這幾款游戲當中進行選擇,而不能根據(jù)用戶自己的喜好對游戲進行升級、刪除等操作,所以嵌入式游戲的缺點也是明顯的,無法給玩家?guī)硇迈r感,玩家容易對固定的幾款游戲產(chǎn)生厭倦。2 瀏覽器游戲WAP1一種用手機上網(wǎng)的網(wǎng)絡(luò)服務(wù)。進行WAP游戲時,通過手機自帶的WA捌覽器來瀏覽手機網(wǎng)站上的頁面,并通過頁面中描述的內(nèi)容來進行游戲。形式上類似于網(wǎng)上常見的一些心理測驗之類的交互手段。WAP游戲沒有圖片和容量的

6、限制,但這類游戲大多采用文字交互方式,這樣游戲性就不強,缺乏直觀感覺。而且在收費上,WAP游戲費用比較高,因為在游戲的過程中,您不僅需要向服務(wù)商交納一定的費用,而且同時要向中國移動或中國聯(lián)通交納一定的流量費用。.基于C+g用程序和其它編譯語言的游戲3使用C+g用程序和其它編譯語言開發(fā)游戲也是一種較好的開發(fā)方式。編譯語言程序能提供更好的控制用戶界面,而且編寫的應(yīng)用程序相比用腳本語言編寫的程序,效率更高、使用的內(nèi)存更少,并且執(zhí)行得更快。但由于這些編譯語言往往不具有跨平臺性,而且由于編譯語言的特點,往往需要較長的開發(fā)周期。4.基于J2ME和其它解釋語言的游戲Java2MicroEdition(J2M

7、E)是一種針對移動電話和PDA等小型設(shè)備的Java語言。采用J2ME極大的提高了手機支持游戲的能力。它有比WAP游戲更易控制的界面,J2ME游戲擺脫了純文字交互的方式,它允許使用圖形動畫,并且可以通過無線網(wǎng)絡(luò)連接到遠程服務(wù)器。而且Java是面向?qū)ο蟪绦蛟O(shè)計的語言,它最大的特點是一次編寫、到處運行,即平臺無關(guān)性?,F(xiàn)在支持Java的手機比較普及,它也已經(jīng)成為目前比較好的移動游戲開發(fā)環(huán)境。1.3研究意義對手機功能的擴充。手機游戲成了電信增值業(yè)務(wù)中一項主要的應(yīng)用,在公交車等公共場合不時會看到拿著手機玩游戲的人。相比較早開發(fā)的“貪吃蛇”、“俄羅斯方塊”等手機游戲,如今的手機游戲,無論是從視覺效果、聽覺效

8、果還是游戲的可玩性來說,都要精彩的多。在全球,移動電話數(shù)量巨大,除美國之外,其他各個發(fā)達國家擁有手機的人數(shù)比擁有計算機的人數(shù)還多。在我國,手機擁有量甚至超過了美國的人口數(shù)量,而且每個月手機數(shù)量還正以驚人的速度遞增著。手機市場的高速增加帶動了手機游戲市場的急速膨脹,基于JAVABRE慚技術(shù)平臺第2頁共42頁楊永:基于J2ME的手機游戲設(shè)計2的手機游戲市場規(guī)模紛紛呈現(xiàn)幾何增長態(tài)勢。2林邦杰?Java程序設(shè)計入門教程?中國青年出版社,2001-9-15第3頁共42頁武漢科技大學(xué)中南分校畢業(yè)設(shè)計(論文)第二章基于J2ME的手機游戲開發(fā)平臺概述2.1什么是J2MEJ2ME是SUN公司針對嵌入式、消費類電

9、子產(chǎn)品推出的開發(fā)平臺,與J2SE和J2EE共同組成Java技術(shù)的三個重要的分支。J2ME實際上是一系列規(guī)范的集合,由JCP組織制定相關(guān)的JavaSpecificationRequest(JSR)并發(fā)布,各個廠商會按照規(guī)范在自己的產(chǎn)品上進行實現(xiàn),但是必須要通過TCK測試,這樣確保3兼容性。2.2J2ME平臺體系結(jié)構(gòu)J2ME平臺是由配置(Configuration)和簡表(Profile)構(gòu)成的。配置是提供給最大范圍設(shè)備使用的最小類庫集合,在配置中同時包含Java虛擬機。簡表是針對一系列設(shè)備提供的開發(fā)包集合。在J2ME中還有一個重要的概念是可選包(Optional-Package),它是針對特定設(shè)

10、備提供的類庫,比如某些設(shè)備是支持藍牙的,針對此功能J2ME中制定了JSR82(BluetoothAPI)提供了對藍牙的支持。目前,J2ME中有兩個最主要的配置,分別是ConnectedLimitedDevicesConfiguration(CLDC)和ConnectedDevicesConfiguration(CDC)。他們是根4據(jù)設(shè)備的硬件性能進行區(qū)分的。CDC的硬件參數(shù):(1)2M以上內(nèi)存。(2)具有網(wǎng)絡(luò)連接能力,通常為無線網(wǎng)絡(luò)。(3)需要實現(xiàn)java虛擬機規(guī)范的全部功能。(4) 32位或者64位的處理器。CLDC的硬件參數(shù):(1) 512KB以下內(nèi)存(2)有限能源供應(yīng)(通常使用電池)。(

11、3)有限或非持續(xù)網(wǎng)絡(luò)連接。(4)簡單的用戶界面。(5) 16位或者32位的處理器。34黃聰明?JAVA動通信程序設(shè)計J2MEMIDP清華大學(xué)出版社第4頁共42頁楊永:基于J2ME的手機游戲設(shè)計從上述的標準中我們不難看出CLDC主要針對那些資源非常受限的設(shè)備比如手機、PDA雙工尋呼機等。而CDC主要面對那些家電產(chǎn)品,比如機頂盒、汽車導(dǎo)航系統(tǒng)等。簡表是以配置為基礎(chǔ)的,例如MobileInformationDevicesProfile(MIDP)就是CLDC上層的重要簡表。與配置的縱向特性不同的是,簡表是橫向的。-1是J2ME體系結(jié)構(gòu)的框圖:下圖2TheJ2MEEnvironmentJ2MEAppl

12、iacationLayerMIDLetMIDLetClassLayerMIDLetApplicationManager圖2-1J2ME體系結(jié)構(gòu)框圖(1)主機操作系統(tǒng)層(HostOperatingSystemLayer):這一層為特定硬件設(shè)備的操作系統(tǒng)層。Java虛擬機層(JavaVirtualMachineLayer):這一層是Java虛擬機的一個實現(xiàn),它是為特定為特定設(shè)備的主機操作系統(tǒng)定制的,支持一個特定的J2ME配置。(3)配置層(ConfigurationLayer):配置層定義Java虛擬機的功能和特定類別設(shè)備上可用的Java類庫的最小集。從某種程度上說,一個配置定義了Java平臺的功

13、能部件和庫的共同性,開發(fā)者可以假設(shè)這些功能部件和庫在屬于某一特定類別的所有設(shè)備上都是可用的。這一層對用戶是透明的,但它對描述的實現(xiàn)者非常重要。(4)描述層(ProfileLaver):描述層定義了特定類別設(shè)備上可用的應(yīng)用程序編程設(shè)備的主機操作系統(tǒng)定制的,支持一個特定的J2ME配置。在手機上,KVM,CLDC,MID吩別實現(xiàn)了J2M*系結(jié)中的Java虛擬機層、配置層和描述層。2.3 KVMCLDC和MIDP都是運行在Sun公司的KVMt。KVM1一個專門為小型、資源受限設(shè)備所設(shè)計的緊湊的、便攜的Java虛擬機。Java虛擬機是Java程序語言的核心,只要Java程序在執(zhí)行,Java虛擬機也必定在

14、執(zhí)行。Java虛擬機是實際執(zhí)行Java程序的引擎,也是Java語言具有這么多優(yōu)良特色的關(guān)鍵所在。當你執(zhí)行Java程序時,程序內(nèi)的指令其實并不是由硬件直接執(zhí)行,而是由一個特別的軟第5頁共42頁武漢科技大學(xué)中南分校畢業(yè)設(shè)計(論文)件一一讀取這些指令來執(zhí)行的。簡單地說,Java程序不是被底層的CPUft接執(zhí)行,而是被“虛擬CPU執(zhí)行的,所謂的虛擬CPIM實就是計算機上執(zhí)行的一個特別軟件。虛擬機的優(yōu)點甚多,比如移植方便,只需要移植虛擬機和相關(guān)的支持程序庫到新的硬件架構(gòu)上,所有上層的應(yīng)用程序都不需要更動就完成移植了。虛擬機的另一個好處是它在計算機軟硬件間加入一抽象層來分離和保護,5可以防止惡作劇的程序暗

15、中搞鬼。2.4 CLDC2000年5月,JavaCommunityProcess(JCP)公布了CLDC1.0規(guī)范(即JSR30)。作為第一個面對小型設(shè)備的Java應(yīng)用開發(fā)規(guī)范,CLD久由包括Nokia,Motorola和Siemens在內(nèi)的18家全球知名公司共同協(xié)商完成的。CLDCMJ2ME核心配置中的一個,可以支持一個或多個profileo其目標主要面向小型的、網(wǎng)絡(luò)連接速度慢、能源有限(主要是電池供電)且資源有限的設(shè)備,如手機、機頂盒、PDA等。CLDC的核心是虛擬機和核心類庫。虛擬機運行在目標操作系統(tǒng)之上,對下層的硬件提供必要的兼容和支持;核心類庫提供操作系統(tǒng)所需的最小的軟件需求。1核心

16、類2庫虛擬機可選包Profile配置操作系統(tǒng)圖2-2CLDC標準構(gòu)架2.4.1 CLDC的目標(1)為小型的、資源受限的連接設(shè)備定義一個Java平臺標準。(2)允許向上述設(shè)備動態(tài)的傳遞Java應(yīng)用和內(nèi)容。(3)使Java開發(fā)人員能夠輕松的在這些設(shè)備上進行應(yīng)用開發(fā)。2.4.2CLDC的整體需求(1)能運行在絕大多數(shù)的小型的、資源受限的連接設(shè)備上。(2)用CLDC為上述設(shè)備開發(fā)的應(yīng)用盡可能的不使用設(shè)備的本地系統(tǒng)軟件。5盧軍?J2MES用程序開發(fā)手機、PDAS序開發(fā)捷徑?中國鐵道出版社第6頁共42頁楊永:基于J2ME的手機游戲設(shè)計(3)定義能應(yīng)用在絕大多數(shù)上述設(shè)備上的最小子集的規(guī)范。(4)保證在不同

17、類型上述設(shè)備之間代碼級的可移植性和互操作性。2.4.3CLDC的硬件需求由于CLDC要面向盡可能多的設(shè)備,而這些設(shè)備所使用的硬件又各不相同。因此CLDC規(guī)范中并沒有指明需要某種硬件支持,只是對設(shè)備的最小內(nèi)存進行了限制。CLDC規(guī)范中要求硬件必須達到以下要求:(1)至少160KB的固定內(nèi)存以供虛擬機和CLDC核心類庫使用。(2)至少32KB的動態(tài)內(nèi)存以供虛擬機運行時使用(堆棧等)。這里所說的固定內(nèi)存是指擁有寫保護,不會因關(guān)機而抹去的ROM對于具體的設(shè)備的具體實現(xiàn),這些需求也可能有變化。這里所規(guī)定的160KB是CLDC規(guī)范中的要求,實際也可以是128KB左右。2.4.4 CLDC的軟件需求和硬件類

18、似,CLDC上運行的軟件也是多種多樣的。例如,有些設(shè)備支持多進程操作系統(tǒng)或者支持文件系統(tǒng);而有些功能極其有限的設(shè)備并不需要文件系統(tǒng)。對于這些不確定性,CLDCR定義了軟件所必須的最小集合。CLDC規(guī)范中要求操作系統(tǒng)不需要支持多進程或是分址空間。2.4.5 CLDC的功能范圍在CLDC1.0版本中定義了以下功能:(1) Java核心語言與Java虛擬機的特性(2)核心Java類庫(3)輸入/輸出(4)對網(wǎng)絡(luò)的支持(5)對安全性的支持(6)對國際化的支持2.4.6 CLDC特征安全(2)遵守Java語言規(guī)范(3)遵守Java虛擬機規(guī)范(4)要求類文件驗證J2EE和J2SE為桌面計算機和服務(wù)器的企業(yè)

19、級應(yīng)用和開發(fā)提供了非常豐富的庫函數(shù)。不幸的是這些庫需要幾十兆的內(nèi)存來運行,因此并不適合于資源受限的小型設(shè)備。所以CLDCM對小型受限設(shè)備重新制定了一個類庫。為了保證應(yīng)用程序的兼容性和可移植性,包括進CLDC勺大多數(shù)類庫都是J2SE中規(guī)定的子集,其它一些是由CLDC®定的專用于移動設(shè)備的類。包括:從J2SE中繼承的第7頁共42頁武漢科技大學(xué)中南分校畢業(yè)設(shè)計(論文)6類、國際化支持類、系統(tǒng)屬性類、CLD咬用類四個方面。2.5移動信息設(shè)備描述(MIDP)J2ME®供了描述的概念,使得可以為特定的設(shè)備家族定義相同的Java平臺。描述可以滿足兩種明顯不同的可移植性需求:(1)描述為在

20、一個特定的設(shè)備家族實現(xiàn)應(yīng)用提供了完整的工具,比如傳呼機、機頂盒、移動電話、洗衣機或智能玩具。(2)可以創(chuàng)建一種描述來支持重要的、一致的一組應(yīng)用,這些應(yīng)用可能會在幾各不同的設(shè)備上運行。簡單地說,描述就是應(yīng)用和市場的設(shè)備家族之間的協(xié)議。處于同一個設(shè)備家族中的所有設(shè)備都必須實現(xiàn)其描述所定義的特征,并且要求應(yīng)用只使用這個特定描述所提供的功能。在實現(xiàn)層次上,描述被簡單地定義為應(yīng)用在特定配置上的JavaAPI和類庫的集合,同時為市場中特定的設(shè)備家族提供了附加的面向7特定領(lǐng)域的功能?,F(xiàn)在,己經(jīng)有了五個規(guī)范化了的描述,如表2-1表2-1五個規(guī)范化描述描述名稱下層配置Mobileinformationdevic

21、eprofile(MIDP)CLDCPersonaldigitalassistantprofileCLDCFoundationprofileCDCPersonalprofileCDCRMIprofileCDC2.6 MIDP應(yīng)用程序CLDG口MIDPffl合起來為創(chuàng)建移動電話應(yīng)用程序提供了完整的環(huán)境。MIDP應(yīng)用程序或者稱為MIDlet.其模型如圖2-3所示6 JSR-000139ConnectedLimitedDeviceConfiguration1.17第8頁共42頁楊永:基于J2ME的手機游戲設(shè)計TheJ2MEEnvironmentJ2MEAppliacationLayerMIDLetM

22、IDLetClassLayerMIDLetApplicationManager圖2-3MIDlet應(yīng)用框MIDlet有三個狀態(tài),分別是pause、active和destroyed。在啟動一個MIDlet的時候,應(yīng)用管理軟件會首先創(chuàng)建一個MIDlet實例并使得他處于pause狀態(tài),active狀態(tài),也就是所說的運行狀當startApp()方法被調(diào)用的時候MIDlet進入態(tài)。在active狀態(tài)調(diào)用destroyApp(booleanunconditional)或者pauseApp()方法可以使得MIDlet進入destroyed或者pause狀態(tài)。值得一提的是destroyApp(booleanu

23、nconditional)方法,事實上,當destroyApp()方法被調(diào)用的時候,AMS通知MIDlet進入destroyed狀態(tài)。在destroyed狀態(tài)的MIDlet必須釋放了所有的資源,并且保存了數(shù)據(jù)。如果unconditional為false的時候,MIDlet可以在接到通知后拋出MIDletStateChangeException而保持在當前狀態(tài),如果設(shè)置為true的話,則必須立即進入destroyed狀態(tài)。下圖2-4說明了MIDlet狀態(tài)改變情況:StartstartAppActivePausedpauseAppdestroyAppdestroyAppDestroyed圖2-4M

24、IDlet狀態(tài)圖2.7 MIDPUI組件In組件與低級繪制相比,用在游戲開發(fā)上的機會較少,但還是會到。所謂UI組件,是指繼承了javax.microedition.lcdui.Screen類的javax.microedition.ledui.Alert,javax.microedition.lcdui.Form,javax.microedition.lcdui.TextBox,javammicroedition.lcdui.List等。下圖為我們展示了整個LCDUI包的體系:第9頁共42頁武漢科技大學(xué)中南分校畢業(yè)設(shè)計(論文)DisplayCommandListerTickerDisplayab

25、leCommandCanvasScreenImageGraphicsFont圖2-5LCDUI包的體系Screen類屬于高級圖形用戶界面組件,Canvas是低級圖形用戶界面組件,在同一時刻,只能有唯一一個Screen或者Canvas類的子類顯示在屏幕上,我們可以調(diào)用Display的setCurrent。的方法來將前一個畫面替換掉,我們必須自行將前一個畫面的狀態(tài)保留起來,并自己控制整個程序畫面的切換。同時我們可以運用javax.microedition.lcdui.Command類來給我們的提供菜單項目的功能,分別是:Command.BACKCommanCommand.CANCELCommand

26、.EXITCommand.HELPCommand.ITEMCommand.OKCommand.SCREENCommand.STQ啾們在Displayable對象中定義了addCommand(和removeCommand(兩個方法,這就意味著我們可以在高級UI和低級UI中同時使用Command,同時我們通過注冊Command事件來達到事件處理的目的,即Comman龍、須與CommandListener接口配合使用才能反映用戶的動作。與高級UI相比,低級UI就自由很多,任何時候我們可以調(diào)用repaint()產(chǎn)生重繪事件,調(diào)用完了repaint()會立刻返回,調(diào)用paint()回調(diào)函數(shù)則是由另一個專

27、門的線程來完成。底層事件大致可分為三類:PressEvents(按鍵事件),ActionKeys(動作按鍵,PointerEvents(觸控事件)。我們將圍繞這三個主題來介紹一下這種事件的用法鍵事件的幾個核心方法為:keyPressed(),keyReleased(),keyRepeated(),當按鍵按下時會觸keyPressed(),當松開按鍵時,會觸發(fā)keyReleased(),當長時間按住按鍵時會觸keyRepeated(),但是RepeatEvents不是JTWI要求強制支持的,所以使用之前要進行測試,看設(shè)備是否支持。在Canvas里面我們每按下一個按鍵都會觸發(fā)keyPressed(

28、)函數(shù),并傳入相應(yīng)位置的整數(shù)值,我們在MIDP規(guī)范中可以很容易的發(fā)現(xiàn),KEY_NUM0KENUM9+個常數(shù)分別彳t表鍵盤上的0-9還有兩個功能鍵,KEY_STARKEY_POUND果我們傳入的值小于0,代表我們傳入了不合法的keycode,某些機器上還支持連續(xù)按鍵響應(yīng),但這并不是JTWI規(guī)定要支持的,所以我們在進行實際開發(fā)之前一定要用我們前面講到的hasRepeatEvents()方法來進行判定。動作按鍵主要針對游戲來設(shè)計的,在API第10頁共42頁楊永:基于J2ME的手機游戲設(shè)計中定義了一系列的動作事件:UP,DOWNLEFT,RIGHT;GAME_AGAME_BGAME_CGAME_D當按

29、下這些按鍵時會映射至ij我們自己為每個按鍵事件編寫的方法,來完成一些動作。不過我們在MIDP2.0里我們已經(jīng)有專門的游戲開發(fā)包了,所以我在這里就不重點介紹了。觸控事件主要面向高端設(shè)備,并非JTWI要求強制支持的,其核心方法為:pointerPressed(),pointerReleased(),pointerDragged(),分另U對應(yīng)我們通常所用的移動設(shè)備手寫筆的點,擊,拖拽幾個動作,我們在這三個方法里可以定義相應(yīng)的事件處理函數(shù)。在索愛P910C這樣的高端手機上,支持屏幕的觸控事件,我們在屏幕上點擊,可以引發(fā)pointerPressed()函數(shù),并傳入當時位置的坐標,放開后,會引發(fā)poin

30、terReleased()函數(shù),同樣也會傳入坐標,具體的使用方法和keyPressed()以及keyReleased()大同小異。第11頁共42頁武漢科技大學(xué)中南分校畢業(yè)設(shè)計(論文)第三章手機游戲開發(fā)的相關(guān)知識及工具3.1手機游戲的畫面MIDlet類本身并沒有提供直接操作畫面顯示的功能,因此在MIDlet類的子類中也沒有直接操作畫面顯示的功能。因此,我們要使用提供了管理畫面顯示功能的javax.microedition.lcdui.Display類。這個Display類可以javax.microedition.lcdui.Display類的子類顯示在畫面上。Displayable類的子類大致說

31、來可以分為兩種,分別為用來進行線與圖形,圖像的低級描繪類,與用于顯示警告與文本的輸入,選擇列表等UI組件類。前者是javax.micredition.lcdui.Canvas類后者是javax.microedition.lcdui.Screen類與其子類(Alert,FomList,TextBox類等)之旬的關(guān)系。它們之旬的關(guān)系如下圖3-1:ObjectObjectDisplayCanvasScreenTextBoxFormListAlert圖3-1畫面顯示類圖用來顯示畫面用的Display對象,可以從Display類的Static方法Display#getDisplay(MIDlet)值獲取

32、。通過在獲取的Display對象,就可以讓Displayable對象顯示在畫面上。MIDP中可以使用的圖像格式為PNG&式。要獲取圖像,必須使用javax.microedition.lcdui.Image類的Static方法。Image類的Static方法,提供了從byte數(shù)據(jù)中提取Image對象,以及指定與MIDlet相同JAP文件的路徑后獲取對象的功能。創(chuàng)建Image對象的Static方法:第12頁共42頁楊永:基于J2ME的手機游戲設(shè)計(1)Image#createImage(byteimageData,intimageOffset,intimageLengt)(2)Image#

33、createImage(intsouce)(3)Image#createImage(intwidth,intheight)(4)Image#createImage(Stringname)為了減少額外錯誤處理,在調(diào)用出來的時候要進行try-catch或throw。下面的代碼展示了如何創(chuàng)建Image對象:Imageimg;Tryimg=Image.createImage("/mi.png")catch(java.io.IOExceptione)上一章提到了MIDPUI的組件,這里不在做解釋。Form類是能夠?qū)⒁粋€以上的圖像文本,Item類的子類(ChoiceGroup,Data

34、Field,GaugeImageItem)混合顯示的組件。List類,與PC的UT組件中的List組件一樣,是用來顯示項目的列表,以讓用戶來進行選擇為目的的組件。也可以是附有選擇按鈕的列表與附有復(fù)選框的列表。文本框是一個允許用戶進行編輯的文本區(qū)域。一個文本框有一個足以容納的最大字符數(shù)量,具體的大小依賴于不同M工DP的實現(xiàn)或者是移動電話的存儲器大小。在文本框中字符顯示的順序和格式由設(shè)備決定。當文本框中的字符數(shù)量大于一次被顯示的字符數(shù)量時用戶可以通過滾動來編輯一個文本框中的部分字符。Alert,Form,List,TextBox各類的超類Screen由于與Canvas類一樣,是繼承了Display

35、able類,因此可以用Display#setCurrent(Displayable)方法來將其顯示在畫面上。3.2 手機游戲中的按鍵在MIDP中,每一個按鍵事件將產(chǎn)生一個按鍵代碼。在MIDP的Canvas類中定義的按鍵代碼如下所示:KEY_NUM0KEY_NUM1KEY_NUM2KEY_NUM,3KEY_NUM4KEY_NUM5KEY_UM6KEY_UM7KEY_UM8KEY_NUM9KEY_STARKEY_POUND上述按鑲代碼包括數(shù)字0,9、星號和#號。在某些特別的移動設(shè)備上可能還有其他按鍵,但是在MIDP中規(guī)定的最低限度的按鍵就是上面定義的這些。使用這些按鍵可以確保應(yīng)用程序在任何符合MI

36、DP規(guī)范的移動設(shè)備上運行。在Canvas類中,定義了一些通用按鍵值,游戲按鍵中的UPDOWNLEFTRIGHTFIRE、GAME_AGAMEB在MIDlet運行時,這些按鍵的89按鍵值可以通過getKeyCode()方法確定。8洪維恩?Java2面向?qū)ο蟪绦蛟O(shè)計?中國鐵道出版社第13頁共42頁武漢科技大學(xué)中南分校畢業(yè)設(shè)計(論文)3.3 線程使用我們所創(chuàng)建的動畫,是使用線程把所準備的多張圖像按順序描繪出來。所謂的線程就是指程序的運行單位,使用線程可以同時進行處理。在這里,為了要做出線程,我們會用到Java.Lang.Runnable接口。同樣的處理雖然也可以用到j(luò)ava.lang.Thread類

37、與Java.util.Timer類來進行,不過它們都需要創(chuàng)建出繼承各類的另一個類,所以還不如使用Runnable接口。將Runnable接口作為實現(xiàn)的類,必須將Runnable接口的run()方法重新定義。在這個run()方法中,將要編寫以線程所處理的內(nèi)容。下面的代碼為在run()方法內(nèi)調(diào)用Canvas#repaint()方法來進行再描繪的范例。Importjavax.microedition.lcdui.*ClassThreadTestextendscanvasimplementsRunnablePublicvoidrun()Repaint();Protectedvoidpaint(Grap

38、hicsg)只在以Runnable接口為實現(xiàn)的類中再定義run()方法,是不能讓線程運行的。要運行的時候必須使用到Thread類。要調(diào)用Thread類的Constructor中指定Runnable接口參數(shù)的constructor,來產(chǎn)生Thread對象。接下來,要用產(chǎn)生的Thread接口來調(diào)用Thread#run()方法來啟用線程。線程類由于會在Thread#start()方法被調(diào)用出來后調(diào)用Runnable#run()方法,因此編寫在run()方法中的處理將會被自動運行。線程的終止一般可通過兩種方法實現(xiàn);自然撤消或是被停止。自然撤消是指從線程的run()方法正常退出。通常,當一個應(yīng)用程序停止

39、運行,例如用戶從一個主頁切換到另一個主頁10時,它就會調(diào)用stop()方法來終止原主頁中正在運行的所有線程。3.4手機硬件平臺特點手機作為一種資源有限的設(shè)備,和PC機相比,有以下一些特點:(1)處理器運算速度慢,遠低于PC機的CPU1行速度。(2)存儲器容量小、存取速度慢。9焦祝軍、張威?J2ME£線通信技術(shù)應(yīng)用開發(fā)?北京希望電子出版社10范丹?J2MEftI-mode手機上的應(yīng)用?現(xiàn)代計算機,2003年第7期第14頁共42頁楊永:基于J2ME的手機游戲設(shè)計(3)網(wǎng)絡(luò)能力有限、帶寬窄,并且因為手機的移動,容易導(dǎo)致手機網(wǎng)絡(luò)地址的變化。(4)輸入/輸出的多樣性:手機不可能有PC機標準鍵盤

40、那么多按鍵,也沒有鼠標。它的顯示能力也非常有限,譬如顯示尺寸小、分辨率低等。(5)手機由電池提供能源,會因為電池耗盡或接觸不良造成經(jīng)常斷電。在編寫14手機應(yīng)用程序時,必須對以上幾個方面分別進行考慮。3.5手機游戲開發(fā)工具軟件J2MEWirelessToolkit(J2MEWTK)是Sun公司所發(fā)布的官方版MIDP應(yīng)用程序開發(fā)工具,它為編寫和測試M工DP應(yīng)用程序提供了一個完整的開發(fā)環(huán)境。J2MEWirelessToolkit()是制作手機用JAVA所必需的開發(fā)配套元件。安裝J2MEWT必前,一定要先安裝Java2SDK1.3以上的版本。如果沒有安裝Java2SDK的話,J2MEWT即使安裝完成,

41、也無法進行M工Dlet的開發(fā)工作。J2MEWT提供菜單或按鈕方式的命令。J2MEWTK有相應(yīng)的編譯(集成了預(yù)驗步當!)、打包、模擬運行的菜單(或按鈕),以及其它輔助工具。J2SESDK()是制作所有JAVA所必需的開發(fā)配套元件。11這里介紹一下Java2SDK及J2MEWirelessToolkit的安裝。我們來安裝制作JAVA所必需的開發(fā)配套元件J2SESDK先打開。點擊網(wǎng)頁中的DownloadJ2SESDK鏈接,會出現(xiàn)了一個許可協(xié)議。仔細閱讀完協(xié)議后,選中Accept然后再點擊Continue。這是選擇安裝程序的畫面。因為你的PC的OS是WINDOWST以你可以試著點擊WindowsIns

42、tallation,Multi-language,來下載安裝程序。啟動安裝程序后,會出現(xiàn)一個許可協(xié)議的畫面??赐旰筮x同意,然后點擊Next接下來,選擇要安裝的程序和安裝到的地址。這里安裝的程序就用默認的程序,安裝地址也用默認的c:j2sdk1.4.2_05。設(shè)定數(shù)據(jù)庫文件夾,這里我們也用默認的設(shè)置。點擊Next,便開始安裝了。用安裝軟件安裝完畢后,就要開始設(shè)定JAVA使用的環(huán)境。用鼠標右鍵點擊桌面上“我的電腦”圖標,在顯示選單中選擇“屬性”。打開“系統(tǒng)屬性”,選擇上面選單的“高級”,點擊“環(huán)境變量”按鈕,出現(xiàn)環(huán)14趙海廷?java語言程序設(shè)計?2005-8-811佚名?JAVA教程第15頁共4

43、2頁武漢科技大學(xué)中南分校畢業(yè)設(shè)計(論文)境變量設(shè)定窗口。在“用戶變量”和“系統(tǒng)變量”的表里如果沒有“Path”變量,就點擊“新建”。在“變量名”一欄輸入“Path”,“變量值”欄里輸入剛才安裝的J2SESDK的文件夾里“bin”文件夾的路徑。這里設(shè)定為c:j2sdk1.4.2_05bin。輸完后點擊“確定”鍵。下面就讓我們來安裝手機Java開發(fā)元件J2MEWirelessToolkit。打開,點擊網(wǎng)頁下部的Download按鍵??赐旰筮x擇Accept,然后點擊Continue。于是顯示安裝程序選擇畫面,點擊WindowsPlatform的安裝程序,并下載。出現(xiàn)WirelessToolkit的安

44、裝畫面。選擇Next。下面是許可協(xié)議的畫面,看完后選擇Yes。設(shè)定正在安裝的J2SDK勺路徑。這里點擊剛才安裝J2SESDKBrowse.鍵,設(shè)定c:j2sdk1.4.2_05,設(shè)定完后,點擊Next。接下來設(shè)定安裝WirelessToolkit的文件夾。這里使用預(yù)設(shè)的c:WTK104,點擊Next。在程序文件夾進行注冊,這里使用預(yù)設(shè)的J2MEWirelessToolkit1.0.4_01,然后點擊Next。然后是設(shè)定的確認畫面。若確認正確,點擊Next。安裝完畢后點擊Finish鍵,結(jié)束安裝。下面說明一下J2ME手機游戲開發(fā)環(huán)境:Java手機游戲的真實運行環(huán)境是Java手機。一般來說,Jav

45、a游戲的開發(fā)是先在PC機上模擬,模擬成功后再打包下載到手機上。本文的模擬環(huán)境是:(1)系統(tǒng)環(huán)境Windows2000(2)平臺支持J2SDK-1.4(3)開發(fā)工具:采用MOTO-J2ME-SDK-5.2.僅擬器。第16頁共42頁楊永:基于J2ME的手機游戲設(shè)計第四章手機游戲一“逃亡者”的設(shè)計與實現(xiàn)4.1游戲描述“逃亡者”是一款選取了一款PC小游戲作為范例移植到手機上,它的中文名為是男人就撐過30秒,雖然看似簡單,但絕對有挑戰(zhàn)性這是總結(jié)了無數(shù)日本縱版飛行射擊游戲中的武器而研究出的特殊訓(xùn)練軟件,專門用來訓(xùn)練“戰(zhàn)斗機”飛行員。在漆黑一片的宇宙中,停著一架小飛船,突然四面八方出現(xiàn)很多黃色的小點向小飛船

46、聚集過來,小飛船憑借速度優(yōu)勢和飛行技術(shù)從黃點之間的夾縫中飛過,之后又落入新的包圍圈中,直至被黃點擊毀。堅持的時間越長,就說明水平越高。持續(xù)不同的時間會得到不同的評價。如圖4-1所示是它原來的游戲畫面。圖4-1特訓(xùn)I:是男人就撐過30秒游戲畫面4.2可行性研究.技術(shù)可行性:手機游戲“逃亡者”是一款較為小型的手機游戲,根據(jù)已有的手機游戲設(shè)計經(jīng)驗,利用J2ME*可以實現(xiàn)游戲的功能。根據(jù)己往的設(shè)計進度,一款小型規(guī)模的手機游戲大概有2000,3000行代碼。1 .操作可行性:該款游戲在所有支持JAVA的手機上都可運行,按鍵簡單,易12于操作。2 .3游戲設(shè)計在進入游戲之前先顯示閃屏圖片,當用戶按下鍵盤或

47、等待3秒后,進入游戲菜單。初始情況下,游戲菜單有三個選項,它們分別是開始游戲,游戲說明和高分記錄。選擇開始新游戲則進入游戲,在游戲中如果按下非游戲鍵盤則中斷游戲返回菜單,此時菜單中增加了一個繼續(xù)游戲的選項,可以返回游戲也可12JasonLam、DeabowayChoi#?J2ME游戲開發(fā)(第一版)?PDF電子文檔第17頁共42頁武漢科技大學(xué)中南分校畢業(yè)設(shè)計(論文)以重新開始新的游戲。當游戲結(jié)束時則進入游戲結(jié)束屏幕,屏幕上顯示了玩家的成績和等級,以及游戲的最好成績,如果當前成績是最好成績,則手機震動并播放音樂慶祝成功。在菜單中選擇游戲說明或者高分紀錄,則進入相應(yīng)的屏幕,它們都能用“后退”軟鍵返回

48、菜單。菜單中的退出選13項用于退出程序。游戲的流程如圖4-3所示。閃屏新游戲退出游戲說明最高記錄繼續(xù)游戲非游戲操作游戲游戲說明最高記錄BackBack游戲結(jié)束游戲成績等級最好成績圖4-3游戲系統(tǒng)流程圖程序中一個有10個類,其中MIDlet主類負責(zé)各個屏幕的切換,它們是閃屏屏幕、菜單、介紹屏幕、高分屏幕、游戲屏幕,游戲結(jié)束屏幕。游戲中使用到的類為SoundEffects(音效)、Bullets(子彈)、Escapee(逃亡小飛機)。程序的類結(jié)構(gòu)如圖4-4所示。SoundEffectsBulletescapeeCanvass:GameCanvasescapeeMIDletSplashScreeSp

49、riten:MIDlet:CancasEscapee:SpriteGameOverScreeHighScoreSCreeInstructionsScreenMenuListnn:From:List:Canvas:Form圖4-2游戲總體類圖下面介紹游戲線程:13李振鵬、龔劍?J2M盯機游戲開發(fā)技術(shù)詳解第18頁共42頁楊永:基于J2ME的手機游戲設(shè)計游戲的線程主要由三個部分組成:檢測鍵盤輸入(與玩家交互),更新游戲場景(處理游戲邏輯),繪制游戲畫布?;旧纤械?D游戲都可以按照這三個模塊來設(shè)計,三個模塊相互聯(lián)系又互相聯(lián)系,按照模塊的思想來實現(xiàn)游戲線程將更加面向?qū)ο蠛捅阌诶斫?。如果程序運行快于預(yù)

50、期速度會使玩家感覺到抖動,從而影響游戲效果,因此還需要檢測每幀的運行時間,如果過快則等待一段時間,如果過慢則掛起當前線程允許其他線程執(zhí)行。線程的模塊如圖4-3所示:檢測鍵盤輸入更新游戲場景繪制游戲畫布繪制緩沖區(qū)到屏幕否是否快于掛起當前線程預(yù)期速度是掛起等待圖4-3游戲線程模塊圖4.4 詳細編碼設(shè)計逃亡者游戲一共實現(xiàn)了幾個類包括用于關(guān)于游戲外部的閃屏類、菜單類、高分屏幕類、簡介屏幕類、結(jié)束屏幕類,以及用于游戲本身的游戲畫布類、子彈類、逃亡飛機類和聲音效果類。詳情見附錄。4.5 程序打包、下載安裝與運行J2MEWirelessToolkit能自動對MIDlet套件進行打包。打包產(chǎn)生兩個文件,即一個

51、MIDlet描述符manifest.mf和一個MIDlet套件JAR描述符是一個小文本文件,包含有關(guān)MIDlet套件的信息。JAR包含組成MIDlet套件的類文件和資源。第19頁共42頁武漢科技大學(xué)中南分校畢業(yè)設(shè)計(論文)4.6最后效果圖圖4-6游戲運行畫面(一)圖4-7游戲運行畫面(二)圖4-8游戲結(jié)束畫面第20頁共42頁楊永:基于J2ME的手機游戲設(shè)計第五章結(jié)束語本文以基于J2ME平臺的手機游戲的功能開發(fā)為線索,進行了相關(guān)理論研究,實驗和項目開發(fā)。首先介紹了J2ME的用途和基于J2ME平臺手機開發(fā)的國內(nèi)外發(fā)展情況,然后研究介紹了J2ME平臺的特點和手機游戲開發(fā)的關(guān)鍵知識點。最后以如何在J2

52、ME環(huán)境下實現(xiàn)一款射擊類手機游戲的開發(fā)過程做了一個詳細的介紹。其主要工作為:1 .研究介紹了J2ME平臺的用途和基于J2ME平臺手機開發(fā)的國內(nèi)外發(fā)展情況。2 .研究介紹了J2ME平臺的特性和體系結(jié)構(gòu)。重點介紹了MIDP類庫,應(yīng)用程序的體系結(jié)構(gòu),程序開發(fā)周期,工具和實例。3 .研究介紹了J2ME游戲開發(fā)的關(guān)鍵技術(shù)知識。4 .實現(xiàn)了一款射擊類手機游戲一“逃亡者”,重點解決了游戲角色的表示,游戲角色及游戲流程的控制,對游戲按鍵事件的處理,并對整個游戲開發(fā)過程做了一個詳細的介紹。第21頁共42頁武漢科技大學(xué)中南分校畢業(yè)設(shè)計(論文)參考文獻1J2ME開發(fā)網(wǎng)?J2ME中文教程?PDF電子文檔,2005-9

53、-5-9-152林邦杰?Java程序設(shè)計入門教程?中國青年出版社,200134黃聰明?JAVA動通信程序設(shè)計J2MEMIDP?1華大學(xué)出版社5盧軍?J2MEB用程序開發(fā)手機、PDA程序開發(fā)捷徑?中國鐵道出版社6JSR-000139ConnectedLimitedDeviceConfiguration1.178洪維恩?Java2面向?qū)ο蟪绦蛟O(shè)計?中國鐵道出版社9焦祝軍、張威?J2ME£線通信技術(shù)應(yīng)用開發(fā)?北京希望電子出版社10范丹?J2MEftI-mode手機上的應(yīng)用?現(xiàn)代計算機,2003年第7期11佚名?JAVA教程12JasonLam、DeabowayChoi#?J2ME游戲開發(fā)(

54、第一版)?PDF電子文檔13李振鵬、龔劍?J2M盯機游戲開發(fā)技術(shù)詳解14趙海廷?java語言程序設(shè)計?2005-8-815JAVA手機網(wǎng)16溫尚書?J2MES線通信實用案例教程?清華大學(xué)出版社17 JasonLam,DeabowayChou譯?J2MEB戲開發(fā)(第一版)?PDF電子文檔H.M.Deitel、P.J.Deitel?程序設(shè)計教程?清華大學(xué)出版社第22頁共42頁楊永:基于J2ME的手機游戲設(shè)計致謝首先感謝我的指導(dǎo)老師羅奇導(dǎo)師,他在我的畢業(yè)設(shè)計過程中提出了指導(dǎo)性的方案和架構(gòu),特別是指引我閱讀相關(guān)的資料和書籍,使我更能迅速學(xué)習(xí)掌握知識并完成了這個畢業(yè)設(shè)計。感謝答辯組對本畢業(yè)設(shè)計的考核,如

55、果可以得到各位專家的認可將對我的學(xué)習(xí)和工作給予極大的鼓勵。你們客觀的評價和建議我將牢記在心,在今后的發(fā)展中揚長避短,更加努力的嚴格要求自己。感謝學(xué)校對我的培育,讓我從思想上素質(zhì)上知識上得到很大的提高,本科學(xué)習(xí)中的各科老師的悉心教導(dǎo)讓我掌握了基本知識.感謝我的同學(xué)在設(shè)計完成前后對我的得力幫助,沒有同學(xué)的共同學(xué)習(xí)進步也許就沒法完成設(shè)計,沒有同學(xué)對程序的測試,也許就難以發(fā)現(xiàn)一些潛在的錯誤,在此一并表示感謝。在此一并祝愿學(xué)校領(lǐng)導(dǎo)、老師、同學(xué)工作順利,事業(yè)更上一層樓;同時也祝愿學(xué)校更加輝煌。第23頁共42頁武漢科技大學(xué)中南分校畢業(yè)設(shè)計(論文)附錄根據(jù)詳細設(shè)計對各個類進行編碼實現(xiàn):1 .主類escapee

56、MIDlet的實現(xiàn)MIDlet被用作一個狀態(tài)機來管理各種屏幕以及它們之間的轉(zhuǎn)換。例如,當顯示splash屏幕時,該類和類SplashScreen(通過方法splashScreenPainted和splashScreenDone)共同在方法init中完成背景初始化。而使用方法readRecordStore和whteRecordStore在一個名為“BESTTIME的記錄存儲區(qū)中保存最高得分。(1)實現(xiàn)閃屏游戲的最開始將會出現(xiàn)一幅和游戲相關(guān)的圖片,它會停留一小段時間,然后才進入游戲菜單。游戲閃屏使用得當將會增加整個游戲的視覺效果,而且雖然畫面在此期間停留不動,后臺程序卻是忙碌的,一般在此期間完成基本的初始化工作。在startApp方法中,將游戲的顯示權(quán)交給閃屏。如果中斷之前的顯示內(nèi)容為游戲畫布,則重新啟動畫布的線程,顯示權(quán)仍然交給畫布。publicvoidstartApp()Displayablecurrent=Display.getDisplay(this).getCurrent();獲得關(guān)于顯示的設(shè)

溫馨提示

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

最新文檔

評論

0/150

提交評論