




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、【精品】:國(guó)內(nèi)外手機(jī)游戲的研究現(xiàn)狀武漢科技大學(xué)中南分校畢業(yè)設(shè)計(jì)(論文)目錄第一章引言1國(guó)內(nèi)外手機(jī)游戲的研究現(xiàn)狀1手機(jī)游戲的技術(shù)分類1研究意義2第二章基于J2ME的手機(jī)游戲開(kāi)發(fā)平臺(tái)概述4什么是J2ME4J2ME平臺(tái)體系結(jié)構(gòu)4KVM5CLDC6移動(dòng)信息設(shè)備描述(MIDP)8MIDP應(yīng)用程序8MIDPUI組件.9第三章手機(jī)游戲開(kāi)發(fā)的相關(guān)知識(shí)及工具12手機(jī)游戲的畫(huà)面.12手機(jī)游戲中的按鍵13線程使用14手機(jī)硬件平臺(tái)特點(diǎn)14手機(jī)游戲開(kāi)發(fā)工具軟件15第四章手機(jī)游戲一“逃亡者”的設(shè)計(jì)與實(shí)現(xiàn)174.1游戲描述17可行性研究17游戲設(shè)計(jì)17詳細(xì)編碼設(shè)計(jì).19程序打包、下載安裝與運(yùn)行19最后效果圖20第五章結(jié)束語(yǔ)
2、21參考文獻(xiàn)22致謝23附錄24第1頁(yè)共42頁(yè)楊永:基于J2ME的手機(jī)游戲設(shè)計(jì)第一章引言1.1 國(guó)內(nèi)外手機(jī)游戲的研究現(xiàn)狀近年來(lái),因特網(wǎng)在國(guó)內(nèi)迅速普及,導(dǎo)致了網(wǎng)絡(luò)游戲的高速發(fā)展。同樣手機(jī)的普及,導(dǎo)致了手機(jī)游戲市場(chǎng)呈現(xiàn)爆炸式的發(fā)展。尤其是國(guó)內(nèi)外巨大的手機(jī)擁有量,更是讓商家看到了商機(jī),手機(jī)游戲市場(chǎng)利潤(rùn)將會(huì)十分豐厚。面對(duì)潛力如此巨大的手機(jī)游戲市場(chǎng),各游戲開(kāi)發(fā)商、運(yùn)營(yíng)商、服務(wù)商以及手機(jī)終端廠商等都紛紛開(kāi)始了各自的應(yīng)戰(zhàn)準(zhǔn)備,以便搶占商機(jī)。諾基亞、索愛(ài)、摩托羅拉等各大手機(jī)廠商開(kāi)始不斷的提升手機(jī)在游戲方面的性能,同時(shí)還在手機(jī)操作系統(tǒng)方面采用開(kāi)放式的平臺(tái),方便用戶享受不同的1手機(jī)游戲業(yè)務(wù)。而國(guó)內(nèi)游戲開(kāi)發(fā)商,如盛
3、大、網(wǎng)易等公司,紛紛躋身手機(jī)游戲開(kāi)發(fā)商行列。新浪、搜狐等著名的門(mén)戶網(wǎng)站,也紛紛涉足手機(jī)游戲領(lǐng)域,相繼開(kāi)辟了各自的手機(jī)游戲頻道和欄目,其他一些游戲網(wǎng)站也都全面加快了手機(jī)游戲開(kāi)發(fā)的步伐。目前SU心司的J2MECLDC/MID即境和高通公司的BREW(BinaryRuntimeEnvironmentforWireless)客戶端程序是國(guó)內(nèi)外游戲開(kāi)發(fā)的兩大主要平臺(tái)。中國(guó)電信業(yè)巨頭中國(guó)移動(dòng)建立了無(wú)線Java增值服務(wù)體系,推出了基于SU心司的J2ME環(huán)境的“百寶箱”業(yè)務(wù),包括游戲類、商務(wù)類、生活類等豐富的數(shù)據(jù)服務(wù)。中國(guó)移動(dòng)用戶只要使用支持Java的手機(jī),通過(guò)GPRS勺無(wú)線上網(wǎng)方式,訪問(wèn)移動(dòng)夢(mèng)網(wǎng)門(mén)戶的“百寶
4、箱”服務(wù)菜單,就能方便地下載各種由Java語(yǔ)言編寫(xiě)的應(yīng)用程序。而中國(guó)聯(lián)通與高通公司合作,采用高通公司的BREM臺(tái)技術(shù),推出了“神奇寶典”業(yè)務(wù),中國(guó)聯(lián)通用戶可以從聯(lián)通公司的應(yīng)用下載服務(wù)器上以無(wú)線方式下載應(yīng)用程序。1.2 手機(jī)游戲的技術(shù)分類手機(jī)游戲按實(shí)現(xiàn)的技術(shù)分,可分為嵌入式游戲、瀏覽器游戲、基于J2ME和其它的解釋語(yǔ)言的游戲、基于C+g用程序和其它編譯語(yǔ)言的游戲等。1.3 入式游戲嵌入式游戲在出廠時(shí)就固化在手機(jī)的芯片中,像Nokia的“貪吃蛇”就是一個(gè)經(jīng)典的例子。這些游戲是為手機(jī)量身定做,能夠充分發(fā)揮特定手機(jī)的強(qiáng)大性能,從而達(dá)到其他類型的游戲所無(wú)法達(dá)到的效果,而且嵌入式游戲在運(yùn)行過(guò)程中不會(huì)讓用戶
5、產(chǎn)生費(fèi)用。但是這些游戲是依據(jù)手機(jī)生產(chǎn)廠商的平臺(tái)進(jìn)行開(kāi)發(fā)1 J2ME開(kāi)發(fā)網(wǎng)?J2ME中文教程?PDF電子文檔,2005-9-5第1頁(yè)共42頁(yè)武漢科技大學(xué)中南分校畢業(yè)設(shè)計(jì)(論文)的,出廠時(shí)設(shè)置了幾款游戲,玩家就只能在這幾款游戲當(dāng)中進(jìn)行選擇,而不能根據(jù)用戶自己的喜好對(duì)游戲進(jìn)行升級(jí)、刪除等操作,所以嵌入式游戲的缺點(diǎn)也是明顯的,無(wú)法給玩家?guī)?lái)新鮮感,玩家容易對(duì)固定的幾款游戲產(chǎn)生厭倦。2 瀏覽器游戲WAP1一種用手機(jī)上網(wǎng)的網(wǎng)絡(luò)服務(wù)。進(jìn)行WAP游戲時(shí),通過(guò)手機(jī)自帶的WA捌覽器來(lái)瀏覽手機(jī)網(wǎng)站上的頁(yè)面,并通過(guò)頁(yè)面中描述的內(nèi)容來(lái)進(jìn)行游戲。形式上類似于網(wǎng)上常見(jiàn)的一些心理測(cè)驗(yàn)之類的交互手段。WAP游戲沒(méi)有圖片和容量的
6、限制,但這類游戲大多采用文字交互方式,這樣游戲性就不強(qiáng),缺乏直觀感覺(jué)。而且在收費(fèi)上,WAP游戲費(fèi)用比較高,因?yàn)樵谟螒虻倪^(guò)程中,您不僅需要向服務(wù)商交納一定的費(fèi)用,而且同時(shí)要向中國(guó)移動(dòng)或中國(guó)聯(lián)通交納一定的流量費(fèi)用。.基于C+g用程序和其它編譯語(yǔ)言的游戲3使用C+g用程序和其它編譯語(yǔ)言開(kāi)發(fā)游戲也是一種較好的開(kāi)發(fā)方式。編譯語(yǔ)言程序能提供更好的控制用戶界面,而且編寫(xiě)的應(yīng)用程序相比用腳本語(yǔ)言編寫(xiě)的程序,效率更高、使用的內(nèi)存更少,并且執(zhí)行得更快。但由于這些編譯語(yǔ)言往往不具有跨平臺(tái)性,而且由于編譯語(yǔ)言的特點(diǎn),往往需要較長(zhǎng)的開(kāi)發(fā)周期。4.基于J2ME和其它解釋語(yǔ)言的游戲Java2MicroEdition(J2M
7、E)是一種針對(duì)移動(dòng)電話和PDA等小型設(shè)備的Java語(yǔ)言。采用J2ME極大的提高了手機(jī)支持游戲的能力。它有比WAP游戲更易控制的界面,J2ME游戲擺脫了純文字交互的方式,它允許使用圖形動(dòng)畫(huà),并且可以通過(guò)無(wú)線網(wǎng)絡(luò)連接到遠(yuǎn)程服務(wù)器。而且Java是面向?qū)ο蟪绦蛟O(shè)計(jì)的語(yǔ)言,它最大的特點(diǎn)是一次編寫(xiě)、到處運(yùn)行,即平臺(tái)無(wú)關(guān)性。現(xiàn)在支持Java的手機(jī)比較普及,它也已經(jīng)成為目前比較好的移動(dòng)游戲開(kāi)發(fā)環(huán)境。1.3研究意義對(duì)手機(jī)功能的擴(kuò)充。手機(jī)游戲成了電信增值業(yè)務(wù)中一項(xiàng)主要的應(yīng)用,在公交車(chē)等公共場(chǎng)合不時(shí)會(huì)看到拿著手機(jī)玩游戲的人。相比較早開(kāi)發(fā)的“貪吃蛇”、“俄羅斯方塊”等手機(jī)游戲,如今的手機(jī)游戲,無(wú)論是從視覺(jué)效果、聽(tīng)覺(jué)效
8、果還是游戲的可玩性來(lái)說(shuō),都要精彩的多。在全球,移動(dòng)電話數(shù)量巨大,除美國(guó)之外,其他各個(gè)發(fā)達(dá)國(guó)家擁有手機(jī)的人數(shù)比擁有計(jì)算機(jī)的人數(shù)還多。在我國(guó),手機(jī)擁有量甚至超過(guò)了美國(guó)的人口數(shù)量,而且每個(gè)月手機(jī)數(shù)量還正以驚人的速度遞增著。手機(jī)市場(chǎng)的高速增加帶動(dòng)了手機(jī)游戲市場(chǎng)的急速膨脹,基于JAVABRE慚技術(shù)平臺(tái)第2頁(yè)共42頁(yè)楊永:基于J2ME的手機(jī)游戲設(shè)計(jì)2的手機(jī)游戲市場(chǎng)規(guī)模紛紛呈現(xiàn)幾何增長(zhǎng)態(tài)勢(shì)。2林邦杰?Java程序設(shè)計(jì)入門(mén)教程?中國(guó)青年出版社,2001-9-15第3頁(yè)共42頁(yè)武漢科技大學(xué)中南分校畢業(yè)設(shè)計(jì)(論文)第二章基于J2ME的手機(jī)游戲開(kāi)發(fā)平臺(tái)概述2.1什么是J2MEJ2ME是SUN公司針對(duì)嵌入式、消費(fèi)類電
9、子產(chǎn)品推出的開(kāi)發(fā)平臺(tái),與J2SE和J2EE共同組成Java技術(shù)的三個(gè)重要的分支。J2ME實(shí)際上是一系列規(guī)范的集合,由JCP組織制定相關(guān)的JavaSpecificationRequest(JSR)并發(fā)布,各個(gè)廠商會(huì)按照規(guī)范在自己的產(chǎn)品上進(jìn)行實(shí)現(xiàn),但是必須要通過(guò)TCK測(cè)試,這樣確保3兼容性。2.2J2ME平臺(tái)體系結(jié)構(gòu)J2ME平臺(tái)是由配置(Configuration)和簡(jiǎn)表(Profile)構(gòu)成的。配置是提供給最大范圍設(shè)備使用的最小類庫(kù)集合,在配置中同時(shí)包含Java虛擬機(jī)。簡(jiǎn)表是針對(duì)一系列設(shè)備提供的開(kāi)發(fā)包集合。在J2ME中還有一個(gè)重要的概念是可選包(Optional-Package),它是針對(duì)特定設(shè)
10、備提供的類庫(kù),比如某些設(shè)備是支持藍(lán)牙的,針對(duì)此功能J2ME中制定了JSR82(BluetoothAPI)提供了對(duì)藍(lán)牙的支持。目前,J2ME中有兩個(gè)最主要的配置,分別是ConnectedLimitedDevicesConfiguration(CLDC)和ConnectedDevicesConfiguration(CDC)。他們是根4據(jù)設(shè)備的硬件性能進(jìn)行區(qū)分的。CDC的硬件參數(shù):(1)2M以上內(nèi)存。(2)具有網(wǎng)絡(luò)連接能力,通常為無(wú)線網(wǎng)絡(luò)。(3)需要實(shí)現(xiàn)java虛擬機(jī)規(guī)范的全部功能。(4) 32位或者64位的處理器。CLDC的硬件參數(shù):(1) 512KB以下內(nèi)存(2)有限能源供應(yīng)(通常使用電池)。(
11、3)有限或非持續(xù)網(wǎng)絡(luò)連接。(4)簡(jiǎn)單的用戶界面。(5) 16位或者32位的處理器。34黃聰明?JAVA動(dòng)通信程序設(shè)計(jì)J2MEMIDP清華大學(xué)出版社第4頁(yè)共42頁(yè)楊永:基于J2ME的手機(jī)游戲設(shè)計(jì)從上述的標(biāo)準(zhǔn)中我們不難看出CLDC主要針對(duì)那些資源非常受限的設(shè)備比如手機(jī)、PDA雙工尋呼機(jī)等。而CDC主要面對(duì)那些家電產(chǎn)品,比如機(jī)頂盒、汽車(chē)導(dǎo)航系統(tǒng)等。簡(jiǎn)表是以配置為基礎(chǔ)的,例如MobileInformationDevicesProfile(MIDP)就是CLDC上層的重要簡(jiǎn)表。與配置的縱向特性不同的是,簡(jiǎn)表是橫向的。-1是J2ME體系結(jié)構(gòu)的框圖:下圖2TheJ2MEEnvironmentJ2MEAppl
12、iacationLayerMIDLetMIDLetClassLayerMIDLetApplicationManager圖2-1J2ME體系結(jié)構(gòu)框圖(1)主機(jī)操作系統(tǒng)層(HostOperatingSystemLayer):這一層為特定硬件設(shè)備的操作系統(tǒng)層。Java虛擬機(jī)層(JavaVirtualMachineLayer):這一層是Java虛擬機(jī)的一個(gè)實(shí)現(xiàn),它是為特定為特定設(shè)備的主機(jī)操作系統(tǒng)定制的,支持一個(gè)特定的J2ME配置。(3)配置層(ConfigurationLayer):配置層定義Java虛擬機(jī)的功能和特定類別設(shè)備上可用的Java類庫(kù)的最小集。從某種程度上說(shuō),一個(gè)配置定義了Java平臺(tái)的功
13、能部件和庫(kù)的共同性,開(kāi)發(fā)者可以假設(shè)這些功能部件和庫(kù)在屬于某一特定類別的所有設(shè)備上都是可用的。這一層對(duì)用戶是透明的,但它對(duì)描述的實(shí)現(xiàn)者非常重要。(4)描述層(ProfileLaver):描述層定義了特定類別設(shè)備上可用的應(yīng)用程序編程設(shè)備的主機(jī)操作系統(tǒng)定制的,支持一個(gè)特定的J2ME配置。在手機(jī)上,KVM,CLDC,MID吩別實(shí)現(xiàn)了J2M*系結(jié)中的Java虛擬機(jī)層、配置層和描述層。2.3 KVMCLDC和MIDP都是運(yùn)行在Sun公司的KVMt。KVM1一個(gè)專門(mén)為小型、資源受限設(shè)備所設(shè)計(jì)的緊湊的、便攜的Java虛擬機(jī)。Java虛擬機(jī)是Java程序語(yǔ)言的核心,只要Java程序在執(zhí)行,Java虛擬機(jī)也必定在
14、執(zhí)行。Java虛擬機(jī)是實(shí)際執(zhí)行Java程序的引擎,也是Java語(yǔ)言具有這么多優(yōu)良特色的關(guān)鍵所在。當(dāng)你執(zhí)行Java程序時(shí),程序內(nèi)的指令其實(shí)并不是由硬件直接執(zhí)行,而是由一個(gè)特別的軟第5頁(yè)共42頁(yè)武漢科技大學(xué)中南分校畢業(yè)設(shè)計(jì)(論文)件一一讀取這些指令來(lái)執(zhí)行的。簡(jiǎn)單地說(shuō),Java程序不是被底層的CPUft接執(zhí)行,而是被“虛擬CPU執(zhí)行的,所謂的虛擬CPIM實(shí)就是計(jì)算機(jī)上執(zhí)行的一個(gè)特別軟件。虛擬機(jī)的優(yōu)點(diǎn)甚多,比如移植方便,只需要移植虛擬機(jī)和相關(guān)的支持程序庫(kù)到新的硬件架構(gòu)上,所有上層的應(yīng)用程序都不需要更動(dòng)就完成移植了。虛擬機(jī)的另一個(gè)好處是它在計(jì)算機(jī)軟硬件間加入一抽象層來(lái)分離和保護(hù),5可以防止惡作劇的程序暗
15、中搞鬼。2.4 CLDC2000年5月,JavaCommunityProcess(JCP)公布了CLDC1.0規(guī)范(即JSR30)。作為第一個(gè)面對(duì)小型設(shè)備的Java應(yīng)用開(kāi)發(fā)規(guī)范,CLD久由包括Nokia,Motorola和Siemens在內(nèi)的18家全球知名公司共同協(xié)商完成的。CLDCMJ2ME核心配置中的一個(gè),可以支持一個(gè)或多個(gè)profileo其目標(biāo)主要面向小型的、網(wǎng)絡(luò)連接速度慢、能源有限(主要是電池供電)且資源有限的設(shè)備,如手機(jī)、機(jī)頂盒、PDA等。CLDC的核心是虛擬機(jī)和核心類庫(kù)。虛擬機(jī)運(yùn)行在目標(biāo)操作系統(tǒng)之上,對(duì)下層的硬件提供必要的兼容和支持;核心類庫(kù)提供操作系統(tǒng)所需的最小的軟件需求。1核心
16、類2庫(kù)虛擬機(jī)可選包Profile配置操作系統(tǒng)圖2-2CLDC標(biāo)準(zhǔn)構(gòu)架2.4.1 CLDC的目標(biāo)(1)為小型的、資源受限的連接設(shè)備定義一個(gè)Java平臺(tái)標(biāo)準(zhǔn)。(2)允許向上述設(shè)備動(dòng)態(tài)的傳遞Java應(yīng)用和內(nèi)容。(3)使Java開(kāi)發(fā)人員能夠輕松的在這些設(shè)備上進(jìn)行應(yīng)用開(kāi)發(fā)。2.4.2CLDC的整體需求(1)能運(yùn)行在絕大多數(shù)的小型的、資源受限的連接設(shè)備上。(2)用CLDC為上述設(shè)備開(kāi)發(fā)的應(yīng)用盡可能的不使用設(shè)備的本地系統(tǒng)軟件。5盧軍?J2MES用程序開(kāi)發(fā)手機(jī)、PDAS序開(kāi)發(fā)捷徑?中國(guó)鐵道出版社第6頁(yè)共42頁(yè)楊永:基于J2ME的手機(jī)游戲設(shè)計(jì)(3)定義能應(yīng)用在絕大多數(shù)上述設(shè)備上的最小子集的規(guī)范。(4)保證在不同
17、類型上述設(shè)備之間代碼級(jí)的可移植性和互操作性。2.4.3CLDC的硬件需求由于CLDC要面向盡可能多的設(shè)備,而這些設(shè)備所使用的硬件又各不相同。因此CLDC規(guī)范中并沒(méi)有指明需要某種硬件支持,只是對(duì)設(shè)備的最小內(nèi)存進(jìn)行了限制。CLDC規(guī)范中要求硬件必須達(dá)到以下要求:(1)至少160KB的固定內(nèi)存以供虛擬機(jī)和CLDC核心類庫(kù)使用。(2)至少32KB的動(dòng)態(tài)內(nèi)存以供虛擬機(jī)運(yùn)行時(shí)使用(堆棧等)。這里所說(shuō)的固定內(nèi)存是指擁有寫(xiě)保護(hù),不會(huì)因關(guān)機(jī)而抹去的ROM對(duì)于具體的設(shè)備的具體實(shí)現(xiàn),這些需求也可能有變化。這里所規(guī)定的160KB是CLDC規(guī)范中的要求,實(shí)際也可以是128KB左右。2.4.4 CLDC的軟件需求和硬件類
18、似,CLDC上運(yùn)行的軟件也是多種多樣的。例如,有些設(shè)備支持多進(jìn)程操作系統(tǒng)或者支持文件系統(tǒng);而有些功能極其有限的設(shè)備并不需要文件系統(tǒng)。對(duì)于這些不確定性,CLDCR定義了軟件所必須的最小集合。CLDC規(guī)范中要求操作系統(tǒng)不需要支持多進(jìn)程或是分址空間。2.4.5 CLDC的功能范圍在CLDC1.0版本中定義了以下功能:(1) Java核心語(yǔ)言與Java虛擬機(jī)的特性(2)核心Java類庫(kù)(3)輸入/輸出(4)對(duì)網(wǎng)絡(luò)的支持(5)對(duì)安全性的支持(6)對(duì)國(guó)際化的支持2.4.6 CLDC特征安全(2)遵守Java語(yǔ)言規(guī)范(3)遵守Java虛擬機(jī)規(guī)范(4)要求類文件驗(yàn)證J2EE和J2SE為桌面計(jì)算機(jī)和服務(wù)器的企業(yè)
19、級(jí)應(yīng)用和開(kāi)發(fā)提供了非常豐富的庫(kù)函數(shù)。不幸的是這些庫(kù)需要幾十兆的內(nèi)存來(lái)運(yùn)行,因此并不適合于資源受限的小型設(shè)備。所以CLDCM對(duì)小型受限設(shè)備重新制定了一個(gè)類庫(kù)。為了保證應(yīng)用程序的兼容性和可移植性,包括進(jìn)CLDC勺大多數(shù)類庫(kù)都是J2SE中規(guī)定的子集,其它一些是由CLDC®定的專用于移動(dòng)設(shè)備的類。包括:從J2SE中繼承的第7頁(yè)共42頁(yè)武漢科技大學(xué)中南分校畢業(yè)設(shè)計(jì)(論文)6類、國(guó)際化支持類、系統(tǒng)屬性類、CLD咬用類四個(gè)方面。2.5移動(dòng)信息設(shè)備描述(MIDP)J2ME®供了描述的概念,使得可以為特定的設(shè)備家族定義相同的Java平臺(tái)。描述可以滿足兩種明顯不同的可移植性需求:(1)描述為在
20、一個(gè)特定的設(shè)備家族實(shí)現(xiàn)應(yīng)用提供了完整的工具,比如傳呼機(jī)、機(jī)頂盒、移動(dòng)電話、洗衣機(jī)或智能玩具。(2)可以創(chuàng)建一種描述來(lái)支持重要的、一致的一組應(yīng)用,這些應(yīng)用可能會(huì)在幾各不同的設(shè)備上運(yùn)行。簡(jiǎn)單地說(shuō),描述就是應(yīng)用和市場(chǎng)的設(shè)備家族之間的協(xié)議。處于同一個(gè)設(shè)備家族中的所有設(shè)備都必須實(shí)現(xiàn)其描述所定義的特征,并且要求應(yīng)用只使用這個(gè)特定描述所提供的功能。在實(shí)現(xiàn)層次上,描述被簡(jiǎn)單地定義為應(yīng)用在特定配置上的JavaAPI和類庫(kù)的集合,同時(shí)為市場(chǎng)中特定的設(shè)備家族提供了附加的面向7特定領(lǐng)域的功能?,F(xiàn)在,己經(jīng)有了五個(gè)規(guī)范化了的描述,如表2-1表2-1五個(gè)規(guī)范化描述描述名稱下層配置Mobileinformationdevic
21、eprofile(MIDP)CLDCPersonaldigitalassistantprofileCLDCFoundationprofileCDCPersonalprofileCDCRMIprofileCDC2.6 MIDP應(yīng)用程序CLDG口MIDPffl合起來(lái)為創(chuàng)建移動(dòng)電話應(yīng)用程序提供了完整的環(huán)境。MIDP應(yīng)用程序或者稱為MIDlet.其模型如圖2-3所示6 JSR-000139ConnectedLimitedDeviceConfiguration1.17第8頁(yè)共42頁(yè)楊永:基于J2ME的手機(jī)游戲設(shè)計(jì)TheJ2MEEnvironmentJ2MEAppliacationLayerMIDLetM
22、IDLetClassLayerMIDLetApplicationManager圖2-3MIDlet應(yīng)用框MIDlet有三個(gè)狀態(tài),分別是pause、active和destroyed。在啟動(dòng)一個(gè)MIDlet的時(shí)候,應(yīng)用管理軟件會(huì)首先創(chuàng)建一個(gè)MIDlet實(shí)例并使得他處于pause狀態(tài),active狀態(tài),也就是所說(shuō)的運(yùn)行狀當(dāng)startApp()方法被調(diào)用的時(shí)候MIDlet進(jìn)入態(tài)。在active狀態(tài)調(diào)用destroyApp(booleanunconditional)或者pauseApp()方法可以使得MIDlet進(jìn)入destroyed或者pause狀態(tài)。值得一提的是destroyApp(booleanu
23、nconditional)方法,事實(shí)上,當(dāng)destroyApp()方法被調(diào)用的時(shí)候,AMS通知MIDlet進(jìn)入destroyed狀態(tài)。在destroyed狀態(tài)的MIDlet必須釋放了所有的資源,并且保存了數(shù)據(jù)。如果unconditional為false的時(shí)候,MIDlet可以在接到通知后拋出MIDletStateChangeException而保持在當(dāng)前狀態(tài),如果設(shè)置為true的話,則必須立即進(jìn)入destroyed狀態(tài)。下圖2-4說(shuō)明了MIDlet狀態(tài)改變情況:StartstartAppActivePausedpauseAppdestroyAppdestroyAppDestroyed圖2-4M
24、IDlet狀態(tài)圖2.7 MIDPUI組件In組件與低級(jí)繪制相比,用在游戲開(kāi)發(fā)上的機(jī)會(huì)較少,但還是會(huì)到。所謂UI組件,是指繼承了javax.microedition.lcdui.Screen類的javax.microedition.ledui.Alert,javax.microedition.lcdui.Form,javax.microedition.lcdui.TextBox,javammicroedition.lcdui.List等。下圖為我們展示了整個(gè)LCDUI包的體系:第9頁(yè)共42頁(yè)武漢科技大學(xué)中南分校畢業(yè)設(shè)計(jì)(論文)DisplayCommandListerTickerDisplayab
25、leCommandCanvasScreenImageGraphicsFont圖2-5LCDUI包的體系Screen類屬于高級(jí)圖形用戶界面組件,Canvas是低級(jí)圖形用戶界面組件,在同一時(shí)刻,只能有唯一一個(gè)Screen或者Canvas類的子類顯示在屏幕上,我們可以調(diào)用Display的setCurrent。的方法來(lái)將前一個(gè)畫(huà)面替換掉,我們必須自行將前一個(gè)畫(huà)面的狀態(tài)保留起來(lái),并自己控制整個(gè)程序畫(huà)面的切換。同時(shí)我們可以運(yùn)用javax.microedition.lcdui.Command類來(lái)給我們的提供菜單項(xiàng)目的功能,分別是:Command.BACKCommanCommand.CANCELCommand
26、.EXITCommand.HELPCommand.ITEMCommand.OKCommand.SCREENCommand.STQ啾們?cè)贒isplayable對(duì)象中定義了addCommand(和removeCommand(兩個(gè)方法,這就意味著我們可以在高級(jí)UI和低級(jí)UI中同時(shí)使用Command,同時(shí)我們通過(guò)注冊(cè)Command事件來(lái)達(dá)到事件處理的目的,即Comman龍、須與CommandListener接口配合使用才能反映用戶的動(dòng)作。與高級(jí)UI相比,低級(jí)UI就自由很多,任何時(shí)候我們可以調(diào)用repaint()產(chǎn)生重繪事件,調(diào)用完了repaint()會(huì)立刻返回,調(diào)用paint()回調(diào)函數(shù)則是由另一個(gè)專
27、門(mén)的線程來(lái)完成。底層事件大致可分為三類:PressEvents(按鍵事件),ActionKeys(動(dòng)作按鍵,PointerEvents(觸控事件)。我們將圍繞這三個(gè)主題來(lái)介紹一下這種事件的用法鍵事件的幾個(gè)核心方法為:keyPressed(),keyReleased(),keyRepeated(),當(dāng)按鍵按下時(shí)會(huì)觸keyPressed(),當(dāng)松開(kāi)按鍵時(shí),會(huì)觸發(fā)keyReleased(),當(dāng)長(zhǎng)時(shí)間按住按鍵時(shí)會(huì)觸keyRepeated(),但是RepeatEvents不是JTWI要求強(qiáng)制支持的,所以使用之前要進(jìn)行測(cè)試,看設(shè)備是否支持。在Canvas里面我們每按下一個(gè)按鍵都會(huì)觸發(fā)keyPressed(
28、)函數(shù),并傳入相應(yīng)位置的整數(shù)值,我們?cè)贛IDP規(guī)范中可以很容易的發(fā)現(xiàn),KEY_NUM0KENUM9+個(gè)常數(shù)分別彳t表鍵盤(pán)上的0-9還有兩個(gè)功能鍵,KEY_STARKEY_POUND果我們傳入的值小于0,代表我們傳入了不合法的keycode,某些機(jī)器上還支持連續(xù)按鍵響應(yīng),但這并不是JTWI規(guī)定要支持的,所以我們?cè)谶M(jìn)行實(shí)際開(kāi)發(fā)之前一定要用我們前面講到的hasRepeatEvents()方法來(lái)進(jìn)行判定。動(dòng)作按鍵主要針對(duì)游戲來(lái)設(shè)計(jì)的,在API第10頁(yè)共42頁(yè)楊永:基于J2ME的手機(jī)游戲設(shè)計(jì)中定義了一系列的動(dòng)作事件:UP,DOWNLEFT,RIGHT;GAME_AGAME_BGAME_CGAME_D當(dāng)按
29、下這些按鍵時(shí)會(huì)映射至ij我們自己為每個(gè)按鍵事件編寫(xiě)的方法,來(lái)完成一些動(dòng)作。不過(guò)我們?cè)贛IDP2.0里我們已經(jīng)有專門(mén)的游戲開(kāi)發(fā)包了,所以我在這里就不重點(diǎn)介紹了。觸控事件主要面向高端設(shè)備,并非JTWI要求強(qiáng)制支持的,其核心方法為:pointerPressed(),pointerReleased(),pointerDragged(),分另U對(duì)應(yīng)我們通常所用的移動(dòng)設(shè)備手寫(xiě)筆的點(diǎn),擊,拖拽幾個(gè)動(dòng)作,我們?cè)谶@三個(gè)方法里可以定義相應(yīng)的事件處理函數(shù)。在索愛(ài)P910C這樣的高端手機(jī)上,支持屏幕的觸控事件,我們?cè)谄聊簧宵c(diǎn)擊,可以引發(fā)pointerPressed()函數(shù),并傳入當(dāng)時(shí)位置的坐標(biāo),放開(kāi)后,會(huì)引發(fā)poin
30、terReleased()函數(shù),同樣也會(huì)傳入坐標(biāo),具體的使用方法和keyPressed()以及keyReleased()大同小異。第11頁(yè)共42頁(yè)武漢科技大學(xué)中南分校畢業(yè)設(shè)計(jì)(論文)第三章手機(jī)游戲開(kāi)發(fā)的相關(guān)知識(shí)及工具3.1手機(jī)游戲的畫(huà)面MIDlet類本身并沒(méi)有提供直接操作畫(huà)面顯示的功能,因此在MIDlet類的子類中也沒(méi)有直接操作畫(huà)面顯示的功能。因此,我們要使用提供了管理畫(huà)面顯示功能的javax.microedition.lcdui.Display類。這個(gè)Display類可以javax.microedition.lcdui.Display類的子類顯示在畫(huà)面上。Displayable類的子類大致說(shuō)
31、來(lái)可以分為兩種,分別為用來(lái)進(jìn)行線與圖形,圖像的低級(jí)描繪類,與用于顯示警告與文本的輸入,選擇列表等UI組件類。前者是javax.micredition.lcdui.Canvas類后者是javax.microedition.lcdui.Screen類與其子類(Alert,FomList,TextBox類等)之旬的關(guān)系。它們之旬的關(guān)系如下圖3-1:ObjectObjectDisplayCanvasScreenTextBoxFormListAlert圖3-1畫(huà)面顯示類圖用來(lái)顯示畫(huà)面用的Display對(duì)象,可以從Display類的Static方法Display#getDisplay(MIDlet)值獲取
32、。通過(guò)在獲取的Display對(duì)象,就可以讓Displayable對(duì)象顯示在畫(huà)面上。MIDP中可以使用的圖像格式為PNG&式。要獲取圖像,必須使用javax.microedition.lcdui.Image類的Static方法。Image類的Static方法,提供了從byte數(shù)據(jù)中提取Image對(duì)象,以及指定與MIDlet相同JAP文件的路徑后獲取對(duì)象的功能。創(chuàng)建Image對(duì)象的Static方法:第12頁(yè)共42頁(yè)楊永:基于J2ME的手機(jī)游戲設(shè)計(jì)(1)Image#createImage(byteimageData,intimageOffset,intimageLengt)(2)Image#
33、createImage(intsouce)(3)Image#createImage(intwidth,intheight)(4)Image#createImage(Stringname)為了減少額外錯(cuò)誤處理,在調(diào)用出來(lái)的時(shí)候要進(jìn)行try-catch或throw。下面的代碼展示了如何創(chuàng)建Image對(duì)象:Imageimg;Tryimg=Image.createImage("/mi.png")catch(java.io.IOExceptione)上一章提到了MIDPUI的組件,這里不在做解釋。Form類是能夠?qū)⒁粋€(gè)以上的圖像文本,Item類的子類(ChoiceGroup,Data
34、Field,GaugeImageItem)混合顯示的組件。List類,與PC的UT組件中的List組件一樣,是用來(lái)顯示項(xiàng)目的列表,以讓用戶來(lái)進(jìn)行選擇為目的的組件。也可以是附有選擇按鈕的列表與附有復(fù)選框的列表。文本框是一個(gè)允許用戶進(jìn)行編輯的文本區(qū)域。一個(gè)文本框有一個(gè)足以容納的最大字符數(shù)量,具體的大小依賴于不同M工DP的實(shí)現(xiàn)或者是移動(dòng)電話的存儲(chǔ)器大小。在文本框中字符顯示的順序和格式由設(shè)備決定。當(dāng)文本框中的字符數(shù)量大于一次被顯示的字符數(shù)量時(shí)用戶可以通過(guò)滾動(dòng)來(lái)編輯一個(gè)文本框中的部分字符。Alert,Form,List,TextBox各類的超類Screen由于與Canvas類一樣,是繼承了Display
35、able類,因此可以用Display#setCurrent(Displayable)方法來(lái)將其顯示在畫(huà)面上。3.2 手機(jī)游戲中的按鍵在MIDP中,每一個(gè)按鍵事件將產(chǎn)生一個(gè)按鍵代碼。在MIDP的Canvas類中定義的按鍵代碼如下所示:KEY_NUM0KEY_NUM1KEY_NUM2KEY_NUM,3KEY_NUM4KEY_NUM5KEY_UM6KEY_UM7KEY_UM8KEY_NUM9KEY_STARKEY_POUND上述按鑲代碼包括數(shù)字0,9、星號(hào)和#號(hào)。在某些特別的移動(dòng)設(shè)備上可能還有其他按鍵,但是在MIDP中規(guī)定的最低限度的按鍵就是上面定義的這些。使用這些按鍵可以確保應(yīng)用程序在任何符合MI
36、DP規(guī)范的移動(dòng)設(shè)備上運(yùn)行。在Canvas類中,定義了一些通用按鍵值,游戲按鍵中的UPDOWNLEFTRIGHTFIRE、GAME_AGAMEB在MIDlet運(yùn)行時(shí),這些按鍵的89按鍵值可以通過(guò)getKeyCode()方法確定。8洪維恩?Java2面向?qū)ο蟪绦蛟O(shè)計(jì)?中國(guó)鐵道出版社第13頁(yè)共42頁(yè)武漢科技大學(xué)中南分校畢業(yè)設(shè)計(jì)(論文)3.3 線程使用我們所創(chuàng)建的動(dòng)畫(huà),是使用線程把所準(zhǔn)備的多張圖像按順序描繪出來(lái)。所謂的線程就是指程序的運(yùn)行單位,使用線程可以同時(shí)進(jìn)行處理。在這里,為了要做出線程,我們會(huì)用到Java.Lang.Runnable接口。同樣的處理雖然也可以用到j(luò)ava.lang.Thread類
37、與Java.util.Timer類來(lái)進(jìn)行,不過(guò)它們都需要?jiǎng)?chuàng)建出繼承各類的另一個(gè)類,所以還不如使用Runnable接口。將Runnable接口作為實(shí)現(xiàn)的類,必須將Runnable接口的run()方法重新定義。在這個(gè)run()方法中,將要編寫(xiě)以線程所處理的內(nèi)容。下面的代碼為在run()方法內(nèi)調(diào)用Canvas#repaint()方法來(lái)進(jìn)行再描繪的范例。Importjavax.microedition.lcdui.*ClassThreadTestextendscanvasimplementsRunnablePublicvoidrun()Repaint();Protectedvoidpaint(Grap
38、hicsg)只在以Runnable接口為實(shí)現(xiàn)的類中再定義run()方法,是不能讓線程運(yùn)行的。要運(yùn)行的時(shí)候必須使用到Thread類。要調(diào)用Thread類的Constructor中指定Runnable接口參數(shù)的constructor,來(lái)產(chǎn)生Thread對(duì)象。接下來(lái),要用產(chǎn)生的Thread接口來(lái)調(diào)用Thread#run()方法來(lái)啟用線程。線程類由于會(huì)在Thread#start()方法被調(diào)用出來(lái)后調(diào)用Runnable#run()方法,因此編寫(xiě)在run()方法中的處理將會(huì)被自動(dòng)運(yùn)行。線程的終止一般可通過(guò)兩種方法實(shí)現(xiàn);自然撤消或是被停止。自然撤消是指從線程的run()方法正常退出。通常,當(dāng)一個(gè)應(yīng)用程序停止
39、運(yùn)行,例如用戶從一個(gè)主頁(yè)切換到另一個(gè)主頁(yè)10時(shí),它就會(huì)調(diào)用stop()方法來(lái)終止原主頁(yè)中正在運(yùn)行的所有線程。3.4手機(jī)硬件平臺(tái)特點(diǎn)手機(jī)作為一種資源有限的設(shè)備,和PC機(jī)相比,有以下一些特點(diǎn):(1)處理器運(yùn)算速度慢,遠(yuǎn)低于PC機(jī)的CPU1行速度。(2)存儲(chǔ)器容量小、存取速度慢。9焦祝軍、張威?J2ME£線通信技術(shù)應(yīng)用開(kāi)發(fā)?北京希望電子出版社10范丹?J2MEftI-mode手機(jī)上的應(yīng)用?現(xiàn)代計(jì)算機(jī),2003年第7期第14頁(yè)共42頁(yè)楊永:基于J2ME的手機(jī)游戲設(shè)計(jì)(3)網(wǎng)絡(luò)能力有限、帶寬窄,并且因?yàn)槭謾C(jī)的移動(dòng),容易導(dǎo)致手機(jī)網(wǎng)絡(luò)地址的變化。(4)輸入/輸出的多樣性:手機(jī)不可能有PC機(jī)標(biāo)準(zhǔn)鍵盤(pán)
40、那么多按鍵,也沒(méi)有鼠標(biāo)。它的顯示能力也非常有限,譬如顯示尺寸小、分辨率低等。(5)手機(jī)由電池提供能源,會(huì)因?yàn)殡姵睾谋M或接觸不良造成經(jīng)常斷電。在編寫(xiě)14手機(jī)應(yīng)用程序時(shí),必須對(duì)以上幾個(gè)方面分別進(jìn)行考慮。3.5手機(jī)游戲開(kāi)發(fā)工具軟件J2MEWirelessToolkit(J2MEWTK)是Sun公司所發(fā)布的官方版MIDP應(yīng)用程序開(kāi)發(fā)工具,它為編寫(xiě)和測(cè)試M工DP應(yīng)用程序提供了一個(gè)完整的開(kāi)發(fā)環(huán)境。J2MEWirelessToolkit()是制作手機(jī)用JAVA所必需的開(kāi)發(fā)配套元件。安裝J2MEWT必前,一定要先安裝Java2SDK1.3以上的版本。如果沒(méi)有安裝Java2SDK的話,J2MEWT即使安裝完成,
41、也無(wú)法進(jìn)行M工Dlet的開(kāi)發(fā)工作。J2MEWT提供菜單或按鈕方式的命令。J2MEWTK有相應(yīng)的編譯(集成了預(yù)驗(yàn)步當(dāng)!)、打包、模擬運(yùn)行的菜單(或按鈕),以及其它輔助工具。J2SESDK()是制作所有JAVA所必需的開(kāi)發(fā)配套元件。11這里介紹一下Java2SDK及J2MEWirelessToolkit的安裝。我們來(lái)安裝制作JAVA所必需的開(kāi)發(fā)配套元件J2SESDK先打開(kāi)。點(diǎn)擊網(wǎng)頁(yè)中的DownloadJ2SESDK鏈接,會(huì)出現(xiàn)了一個(gè)許可協(xié)議。仔細(xì)閱讀完協(xié)議后,選中Accept然后再點(diǎn)擊Continue。這是選擇安裝程序的畫(huà)面。因?yàn)槟愕腜C的OS是WINDOWST以你可以試著點(diǎn)擊WindowsIns
42、tallation,Multi-language,來(lái)下載安裝程序。啟動(dòng)安裝程序后,會(huì)出現(xiàn)一個(gè)許可協(xié)議的畫(huà)面??赐旰筮x同意,然后點(diǎn)擊Next接下來(lái),選擇要安裝的程序和安裝到的地址。這里安裝的程序就用默認(rèn)的程序,安裝地址也用默認(rèn)的c:j2sdk1.4.2_05。設(shè)定數(shù)據(jù)庫(kù)文件夾,這里我們也用默認(rèn)的設(shè)置。點(diǎn)擊Next,便開(kāi)始安裝了。用安裝軟件安裝完畢后,就要開(kāi)始設(shè)定JAVA使用的環(huán)境。用鼠標(biāo)右鍵點(diǎn)擊桌面上“我的電腦”圖標(biāo),在顯示選單中選擇“屬性”。打開(kāi)“系統(tǒng)屬性”,選擇上面選單的“高級(jí)”,點(diǎn)擊“環(huán)境變量”按鈕,出現(xiàn)環(huán)14趙海廷?java語(yǔ)言程序設(shè)計(jì)?2005-8-811佚名?JAVA教程第15頁(yè)共4
43、2頁(yè)武漢科技大學(xué)中南分校畢業(yè)設(shè)計(jì)(論文)境變量設(shè)定窗口。在“用戶變量”和“系統(tǒng)變量”的表里如果沒(méi)有“Path”變量,就點(diǎn)擊“新建”。在“變量名”一欄輸入“Path”,“變量值”欄里輸入剛才安裝的J2SESDK的文件夾里“bin”文件夾的路徑。這里設(shè)定為c:j2sdk1.4.2_05bin。輸完后點(diǎn)擊“確定”鍵。下面就讓我們來(lái)安裝手機(jī)Java開(kāi)發(fā)元件J2MEWirelessToolkit。打開(kāi),點(diǎn)擊網(wǎng)頁(yè)下部的Download按鍵??赐旰筮x擇Accept,然后點(diǎn)擊Continue。于是顯示安裝程序選擇畫(huà)面,點(diǎn)擊WindowsPlatform的安裝程序,并下載。出現(xiàn)WirelessToolkit的安
44、裝畫(huà)面。選擇Next。下面是許可協(xié)議的畫(huà)面,看完后選擇Yes。設(shè)定正在安裝的J2SDK勺路徑。這里點(diǎn)擊剛才安裝J2SESDKBrowse.鍵,設(shè)定c:j2sdk1.4.2_05,設(shè)定完后,點(diǎn)擊Next。接下來(lái)設(shè)定安裝WirelessToolkit的文件夾。這里使用預(yù)設(shè)的c:WTK104,點(diǎn)擊Next。在程序文件夾進(jìn)行注冊(cè),這里使用預(yù)設(shè)的J2MEWirelessToolkit1.0.4_01,然后點(diǎn)擊Next。然后是設(shè)定的確認(rèn)畫(huà)面。若確認(rèn)正確,點(diǎn)擊Next。安裝完畢后點(diǎn)擊Finish鍵,結(jié)束安裝。下面說(shuō)明一下J2ME手機(jī)游戲開(kāi)發(fā)環(huán)境:Java手機(jī)游戲的真實(shí)運(yùn)行環(huán)境是Java手機(jī)。一般來(lái)說(shuō),Jav
45、a游戲的開(kāi)發(fā)是先在PC機(jī)上模擬,模擬成功后再打包下載到手機(jī)上。本文的模擬環(huán)境是:(1)系統(tǒng)環(huán)境Windows2000(2)平臺(tái)支持J2SDK-1.4(3)開(kāi)發(fā)工具:采用MOTO-J2ME-SDK-5.2.僅擬器。第16頁(yè)共42頁(yè)楊永:基于J2ME的手機(jī)游戲設(shè)計(jì)第四章手機(jī)游戲一“逃亡者”的設(shè)計(jì)與實(shí)現(xiàn)4.1游戲描述“逃亡者”是一款選取了一款PC小游戲作為范例移植到手機(jī)上,它的中文名為是男人就撐過(guò)30秒,雖然看似簡(jiǎn)單,但絕對(duì)有挑戰(zhàn)性這是總結(jié)了無(wú)數(shù)日本縱版飛行射擊游戲中的武器而研究出的特殊訓(xùn)練軟件,專門(mén)用來(lái)訓(xùn)練“戰(zhàn)斗機(jī)”飛行員。在漆黑一片的宇宙中,停著一架小飛船,突然四面八方出現(xiàn)很多黃色的小點(diǎn)向小飛船
46、聚集過(guò)來(lái),小飛船憑借速度優(yōu)勢(shì)和飛行技術(shù)從黃點(diǎn)之間的夾縫中飛過(guò),之后又落入新的包圍圈中,直至被黃點(diǎn)擊毀。堅(jiān)持的時(shí)間越長(zhǎng),就說(shuō)明水平越高。持續(xù)不同的時(shí)間會(huì)得到不同的評(píng)價(jià)。如圖4-1所示是它原來(lái)的游戲畫(huà)面。圖4-1特訓(xùn)I:是男人就撐過(guò)30秒游戲畫(huà)面4.2可行性研究.技術(shù)可行性:手機(jī)游戲“逃亡者”是一款較為小型的手機(jī)游戲,根據(jù)已有的手機(jī)游戲設(shè)計(jì)經(jīng)驗(yàn),利用J2ME*可以實(shí)現(xiàn)游戲的功能。根據(jù)己往的設(shè)計(jì)進(jìn)度,一款小型規(guī)模的手機(jī)游戲大概有2000,3000行代碼。1 .操作可行性:該款游戲在所有支持JAVA的手機(jī)上都可運(yùn)行,按鍵簡(jiǎn)單,易12于操作。2 .3游戲設(shè)計(jì)在進(jìn)入游戲之前先顯示閃屏圖片,當(dāng)用戶按下鍵盤(pán)或
47、等待3秒后,進(jìn)入游戲菜單。初始情況下,游戲菜單有三個(gè)選項(xiàng),它們分別是開(kāi)始游戲,游戲說(shuō)明和高分記錄。選擇開(kāi)始新游戲則進(jìn)入游戲,在游戲中如果按下非游戲鍵盤(pán)則中斷游戲返回菜單,此時(shí)菜單中增加了一個(gè)繼續(xù)游戲的選項(xiàng),可以返回游戲也可12JasonLam、DeabowayChoi#?J2ME游戲開(kāi)發(fā)(第一版)?PDF電子文檔第17頁(yè)共42頁(yè)武漢科技大學(xué)中南分校畢業(yè)設(shè)計(jì)(論文)以重新開(kāi)始新的游戲。當(dāng)游戲結(jié)束時(shí)則進(jìn)入游戲結(jié)束屏幕,屏幕上顯示了玩家的成績(jī)和等級(jí),以及游戲的最好成績(jī),如果當(dāng)前成績(jī)是最好成績(jī),則手機(jī)震動(dòng)并播放音樂(lè)慶祝成功。在菜單中選擇游戲說(shuō)明或者高分紀(jì)錄,則進(jìn)入相應(yīng)的屏幕,它們都能用“后退”軟鍵返回
48、菜單。菜單中的退出選13項(xiàng)用于退出程序。游戲的流程如圖4-3所示。閃屏新游戲退出游戲說(shuō)明最高記錄繼續(xù)游戲非游戲操作游戲游戲說(shuō)明最高記錄BackBack游戲結(jié)束游戲成績(jī)等級(jí)最好成績(jī)圖4-3游戲系統(tǒng)流程圖程序中一個(gè)有10個(gè)類,其中MIDlet主類負(fù)責(zé)各個(gè)屏幕的切換,它們是閃屏屏幕、菜單、介紹屏幕、高分屏幕、游戲屏幕,游戲結(jié)束屏幕。游戲中使用到的類為SoundEffects(音效)、Bullets(子彈)、Escapee(逃亡小飛機(jī))。程序的類結(jié)構(gòu)如圖4-4所示。SoundEffectsBulletescapeeCanvass:GameCanvasescapeeMIDletSplashScreeSp
49、riten:MIDlet:CancasEscapee:SpriteGameOverScreeHighScoreSCreeInstructionsScreenMenuListnn:From:List:Canvas:Form圖4-2游戲總體類圖下面介紹游戲線程:13李振鵬、龔劍?J2M盯機(jī)游戲開(kāi)發(fā)技術(shù)詳解第18頁(yè)共42頁(yè)楊永:基于J2ME的手機(jī)游戲設(shè)計(jì)游戲的線程主要由三個(gè)部分組成:檢測(cè)鍵盤(pán)輸入(與玩家交互),更新游戲場(chǎng)景(處理游戲邏輯),繪制游戲畫(huà)布?;旧纤械?D游戲都可以按照這三個(gè)模塊來(lái)設(shè)計(jì),三個(gè)模塊相互聯(lián)系又互相聯(lián)系,按照模塊的思想來(lái)實(shí)現(xiàn)游戲線程將更加面向?qū)ο蠛捅阌诶斫?。如果程序運(yùn)行快于預(yù)
50、期速度會(huì)使玩家感覺(jué)到抖動(dòng),從而影響游戲效果,因此還需要檢測(cè)每幀的運(yùn)行時(shí)間,如果過(guò)快則等待一段時(shí)間,如果過(guò)慢則掛起當(dāng)前線程允許其他線程執(zhí)行。線程的模塊如圖4-3所示:檢測(cè)鍵盤(pán)輸入更新游戲場(chǎng)景繪制游戲畫(huà)布繪制緩沖區(qū)到屏幕否是否快于掛起當(dāng)前線程預(yù)期速度是掛起等待圖4-3游戲線程模塊圖4.4 詳細(xì)編碼設(shè)計(jì)逃亡者游戲一共實(shí)現(xiàn)了幾個(gè)類包括用于關(guān)于游戲外部的閃屏類、菜單類、高分屏幕類、簡(jiǎn)介屏幕類、結(jié)束屏幕類,以及用于游戲本身的游戲畫(huà)布類、子彈類、逃亡飛機(jī)類和聲音效果類。詳情見(jiàn)附錄。4.5 程序打包、下載安裝與運(yùn)行J2MEWirelessToolkit能自動(dòng)對(duì)MIDlet套件進(jìn)行打包。打包產(chǎn)生兩個(gè)文件,即一個(gè)
51、MIDlet描述符manifest.mf和一個(gè)MIDlet套件JAR描述符是一個(gè)小文本文件,包含有關(guān)MIDlet套件的信息。JAR包含組成MIDlet套件的類文件和資源。第19頁(yè)共42頁(yè)武漢科技大學(xué)中南分校畢業(yè)設(shè)計(jì)(論文)4.6最后效果圖圖4-6游戲運(yùn)行畫(huà)面(一)圖4-7游戲運(yùn)行畫(huà)面(二)圖4-8游戲結(jié)束畫(huà)面第20頁(yè)共42頁(yè)楊永:基于J2ME的手機(jī)游戲設(shè)計(jì)第五章結(jié)束語(yǔ)本文以基于J2ME平臺(tái)的手機(jī)游戲的功能開(kāi)發(fā)為線索,進(jìn)行了相關(guān)理論研究,實(shí)驗(yàn)和項(xiàng)目開(kāi)發(fā)。首先介紹了J2ME的用途和基于J2ME平臺(tái)手機(jī)開(kāi)發(fā)的國(guó)內(nèi)外發(fā)展情況,然后研究介紹了J2ME平臺(tái)的特點(diǎn)和手機(jī)游戲開(kāi)發(fā)的關(guān)鍵知識(shí)點(diǎn)。最后以如何在J2
52、ME環(huán)境下實(shí)現(xiàn)一款射擊類手機(jī)游戲的開(kāi)發(fā)過(guò)程做了一個(gè)詳細(xì)的介紹。其主要工作為:1 .研究介紹了J2ME平臺(tái)的用途和基于J2ME平臺(tái)手機(jī)開(kāi)發(fā)的國(guó)內(nèi)外發(fā)展情況。2 .研究介紹了J2ME平臺(tái)的特性和體系結(jié)構(gòu)。重點(diǎn)介紹了MIDP類庫(kù),應(yīng)用程序的體系結(jié)構(gòu),程序開(kāi)發(fā)周期,工具和實(shí)例。3 .研究介紹了J2ME游戲開(kāi)發(fā)的關(guān)鍵技術(shù)知識(shí)。4 .實(shí)現(xiàn)了一款射擊類手機(jī)游戲一“逃亡者”,重點(diǎn)解決了游戲角色的表示,游戲角色及游戲流程的控制,對(duì)游戲按鍵事件的處理,并對(duì)整個(gè)游戲開(kāi)發(fā)過(guò)程做了一個(gè)詳細(xì)的介紹。第21頁(yè)共42頁(yè)武漢科技大學(xué)中南分校畢業(yè)設(shè)計(jì)(論文)參考文獻(xiàn)1J2ME開(kāi)發(fā)網(wǎng)?J2ME中文教程?PDF電子文檔,2005-9
53、-5-9-152林邦杰?Java程序設(shè)計(jì)入門(mén)教程?中國(guó)青年出版社,200134黃聰明?JAVA動(dòng)通信程序設(shè)計(jì)J2MEMIDP?1華大學(xué)出版社5盧軍?J2MEB用程序開(kāi)發(fā)手機(jī)、PDA程序開(kāi)發(fā)捷徑?中國(guó)鐵道出版社6JSR-000139ConnectedLimitedDeviceConfiguration1.178洪維恩?Java2面向?qū)ο蟪绦蛟O(shè)計(jì)?中國(guó)鐵道出版社9焦祝軍、張威?J2ME£線通信技術(shù)應(yīng)用開(kāi)發(fā)?北京希望電子出版社10范丹?J2MEftI-mode手機(jī)上的應(yīng)用?現(xiàn)代計(jì)算機(jī),2003年第7期11佚名?JAVA教程12JasonLam、DeabowayChoi#?J2ME游戲開(kāi)發(fā)(
54、第一版)?PDF電子文檔13李振鵬、龔劍?J2M盯機(jī)游戲開(kāi)發(fā)技術(shù)詳解14趙海廷?java語(yǔ)言程序設(shè)計(jì)?2005-8-815JAVA手機(jī)網(wǎng)16溫尚書(shū)?J2MES線通信實(shí)用案例教程?清華大學(xué)出版社17 JasonLam,DeabowayChou譯?J2MEB戲開(kāi)發(fā)(第一版)?PDF電子文檔H.M.Deitel、P.J.Deitel?程序設(shè)計(jì)教程?清華大學(xué)出版社第22頁(yè)共42頁(yè)楊永:基于J2ME的手機(jī)游戲設(shè)計(jì)致謝首先感謝我的指導(dǎo)老師羅奇導(dǎo)師,他在我的畢業(yè)設(shè)計(jì)過(guò)程中提出了指導(dǎo)性的方案和架構(gòu),特別是指引我閱讀相關(guān)的資料和書(shū)籍,使我更能迅速學(xué)習(xí)掌握知識(shí)并完成了這個(gè)畢業(yè)設(shè)計(jì)。感謝答辯組對(duì)本畢業(yè)設(shè)計(jì)的考核,如
55、果可以得到各位專家的認(rèn)可將對(duì)我的學(xué)習(xí)和工作給予極大的鼓勵(lì)。你們客觀的評(píng)價(jià)和建議我將牢記在心,在今后的發(fā)展中揚(yáng)長(zhǎng)避短,更加努力的嚴(yán)格要求自己。感謝學(xué)校對(duì)我的培育,讓我從思想上素質(zhì)上知識(shí)上得到很大的提高,本科學(xué)習(xí)中的各科老師的悉心教導(dǎo)讓我掌握了基本知識(shí).感謝我的同學(xué)在設(shè)計(jì)完成前后對(duì)我的得力幫助,沒(méi)有同學(xué)的共同學(xué)習(xí)進(jìn)步也許就沒(méi)法完成設(shè)計(jì),沒(méi)有同學(xué)對(duì)程序的測(cè)試,也許就難以發(fā)現(xiàn)一些潛在的錯(cuò)誤,在此一并表示感謝。在此一并祝愿學(xué)校領(lǐng)導(dǎo)、老師、同學(xué)工作順利,事業(yè)更上一層樓;同時(shí)也祝愿學(xué)校更加輝煌。第23頁(yè)共42頁(yè)武漢科技大學(xué)中南分校畢業(yè)設(shè)計(jì)(論文)附錄根據(jù)詳細(xì)設(shè)計(jì)對(duì)各個(gè)類進(jìn)行編碼實(shí)現(xiàn):1 .主類escapee
56、MIDlet的實(shí)現(xiàn)MIDlet被用作一個(gè)狀態(tài)機(jī)來(lái)管理各種屏幕以及它們之間的轉(zhuǎn)換。例如,當(dāng)顯示splash屏幕時(shí),該類和類SplashScreen(通過(guò)方法splashScreenPainted和splashScreenDone)共同在方法init中完成背景初始化。而使用方法readRecordStore和whteRecordStore在一個(gè)名為“BESTTIME的記錄存儲(chǔ)區(qū)中保存最高得分。(1)實(shí)現(xiàn)閃屏游戲的最開(kāi)始將會(huì)出現(xiàn)一幅和游戲相關(guān)的圖片,它會(huì)停留一小段時(shí)間,然后才進(jìn)入游戲菜單。游戲閃屏使用得當(dāng)將會(huì)增加整個(gè)游戲的視覺(jué)效果,而且雖然畫(huà)面在此期間停留不動(dòng),后臺(tái)程序卻是忙碌的,一般在此期間完成基本的初始化工作。在startApp方法中,將游戲的顯示權(quán)交給閃屏。如果中斷之前的顯示內(nèi)容為游戲畫(huà)布,則重新啟動(dòng)畫(huà)布的線程,顯示權(quán)仍然交給畫(huà)布。publicvoidstartApp()Displayablecurrent=Display.getDisplay(this).getCurrent();獲得關(guān)于顯示的設(shè)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 加強(qiáng)行業(yè)分析能力的行動(dòng)計(jì)劃
- 廣東省深圳市羅芳中學(xué)2025年八年級(jí)數(shù)學(xué)第二學(xué)期期末教學(xué)質(zhì)量檢測(cè)試題含解析
- 明確目標(biāo)客戶群的識(shí)別計(jì)劃
- 數(shù)據(jù)可視化技術(shù)的應(yīng)用前景試題及答案
- 賦能團(tuán)隊(duì)領(lǐng)導(dǎo)力提升計(jì)劃
- 豐富校園經(jīng)歷的實(shí)習(xí)社活動(dòng)計(jì)劃
- 如何有效應(yīng)對(duì)審計(jì)挑戰(zhàn)計(jì)劃
- 計(jì)算機(jī)軟件考試難點(diǎn)逐一攻克試題及答案
- (五調(diào))武漢市2025屆高三年級(jí)五月模擬訓(xùn)練生物試卷(含答案)
- 高考作文主題與結(jié)構(gòu)的相輔相成研究試題及答案
- 《民法典》婚姻家庭編解讀
- 2025年農(nóng)村土地出售合同模板
- 工業(yè)機(jī)器人在建筑行業(yè)的應(yīng)用考核試卷
- 人體發(fā)育學(xué) 第十章 嬰幼兒情緒情感的發(fā)育
- 2025年江蘇省職業(yè)院校技能大賽高職組(機(jī)電一體化技術(shù))參考試題庫(kù)資料及答案
- 小學(xué)安全知識(shí)家長(zhǎng)進(jìn)課堂
- GB/T 29912-2024城市物流配送汽車(chē)選型技術(shù)要求
- 2025年1月浙江省高考英語(yǔ)試卷(含答案解析)+聽(tīng)力錄音稿+聽(tīng)力音頻
- 全套電子課件:管理學(xué)
- 高職汽車(chē)專業(yè)群“產(chǎn)教聯(lián)動(dòng)、鏈群對(duì)接、崗課融通、專創(chuàng)結(jié)合”人才培養(yǎng)體系研究
- 漢字的起源適合小學(xué)生課件
評(píng)論
0/150
提交評(píng)論