基于J2ME的手機(jī)游戲逃亡者的設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
基于J2ME的手機(jī)游戲逃亡者的設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
基于J2ME的手機(jī)游戲逃亡者的設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
基于J2ME的手機(jī)游戲逃亡者的設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
基于J2ME的手機(jī)游戲逃亡者的設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩36頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、基于J2ME的手機(jī)游戲設(shè)計(jì)目錄第一章 引言11.1 國(guó)內(nèi)外手機(jī)游戲的研究現(xiàn)狀11.2 手機(jī)游戲的技術(shù)分類11.3 研究意義2第二章 基于J2ME的手機(jī)游戲開(kāi)發(fā)平臺(tái)概述42.1 什么是J2ME42.2 J2ME 平臺(tái)體系結(jié)構(gòu)42.3 KVM52.4 CLDC62.5移動(dòng)信息設(shè)備描述(MIDP)82.6MIDP 應(yīng)用程序82.7 MIDP UI 組件9第三章手機(jī)游戲開(kāi)發(fā)的相關(guān)知識(shí)及工具123.1 手機(jī)游戲的畫面123.2手機(jī)游戲中的按鍵133.3線程使用143.4 手機(jī)硬件平臺(tái)特點(diǎn)143.5 手機(jī)游戲開(kāi)發(fā)工具軟件15第四章 手機(jī)游戲一“逃亡者”的設(shè)計(jì)與實(shí)現(xiàn)174.1游戲描述174.2可行性研究17

2、4.3游戲設(shè)計(jì)174.4詳細(xì)編碼設(shè)計(jì)194.5程序打包、下載安裝與運(yùn)行194.6 最后效果圖20第五章 結(jié)束語(yǔ)21參考文獻(xiàn)22致 謝23附錄24第一章 引言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)

3、放式的平臺(tái),方便用戶享受不同的手機(jī)游戲業(yè)務(wù)1 J2ME開(kāi)發(fā)網(wǎng)·J2ME中文教程·PDF電子文檔 ,2005-9-5。而國(guó)內(nèi)游戲開(kāi)發(fā)商,如盛大、網(wǎng)易等公司,紛紛躋身手機(jī)游戲開(kāi)發(fā)商行列。新浪、搜狐等著名的門戶網(wǎng)站,也紛紛涉足手機(jī)游戲領(lǐng)域,相繼開(kāi)辟了各自的手機(jī)游戲頻道和欄目,其他一些游戲網(wǎng)站也都全面加快了手機(jī)游戲開(kāi)發(fā)的步伐。目前SUN公司的J2ME CLDC/MIDP環(huán)境和高通公司的BREW(Binary Runtime Environment for Wireless)客戶端程序是國(guó)內(nèi)外游戲開(kāi)發(fā)的兩大主要平臺(tái)。中國(guó)電信業(yè)巨頭中國(guó)移動(dòng)建立了無(wú)線Java增值服務(wù)體系,推出了基于SU

4、N公司的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)門戶的“百寶箱”服務(wù)菜單,就能方便地下載各種由Java語(yǔ)言編寫的應(yīng)用程序。而中國(guó)聯(lián)通與高通公司合作,采用高通公司的BREW平臺(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+應(yīng)用程序和其它編譯語(yǔ)言的游戲等。1. 嵌入式游戲嵌入式游戲在出廠時(shí)就固化在手機(jī)的芯片中,

5、像Nokia的“貪吃蛇”就是一個(gè)經(jīng)典的例子。這些游戲是為手機(jī)量身定做,能夠充分發(fā)揮特定手機(jī)的強(qiáng)大性能,從而達(dá)到其他類型的游戲所無(wú)法達(dá)到的效果,而且嵌入式游戲在運(yùn)行過(guò)程中不會(huì)讓用戶產(chǎn)生費(fèi)用。但是這些游戲是依據(jù)手機(jī)生產(chǎn)廠商的平臺(tái)進(jìn)行開(kāi)發(fā)的,出廠時(shí)設(shè)置了幾款游戲,玩家就只能在這幾款游戲當(dāng)中進(jìn)行選擇,而不能根據(jù)用戶自己的喜好對(duì)游戲進(jìn)行升級(jí)、刪除等操作,所以嵌入式游戲的缺點(diǎn)也是明顯的,無(wú)法給玩家?guī)?lái)新鮮感,玩家容易對(duì)固定的幾款游戲產(chǎn)生厭倦。2. 瀏覽器游戲WAP是一種用手機(jī)上網(wǎng)的網(wǎng)絡(luò)服務(wù)。進(jìn)行WAP游戲時(shí),通過(guò)手機(jī)自帶的WAP瀏覽器來(lái)瀏覽手機(jī)網(wǎng)站上的頁(yè)面,并通過(guò)頁(yè)面中描述的內(nèi)容來(lái)進(jìn)行游戲。形式上類似于網(wǎng)

6、上常見(jiàn)的一些心理測(cè)驗(yàn)之類的交互手段。WAP游戲沒(méi)有圖片和容量的限制,但這類游戲大多采用文字交互方式,這樣游戲性就不強(qiáng),缺乏直觀感覺(jué)。而且在收費(fèi)上,WAP游戲費(fèi)用比較高,因?yàn)樵谟螒虻倪^(guò)程中,您不僅需要向服務(wù)商交納一定的費(fèi)用,而且同時(shí)要向中國(guó)移動(dòng)或中國(guó)聯(lián)通交納一定的流量費(fèi)用。3. 基于C+應(yīng)用程序和其它編譯語(yǔ)言的游戲使用C+應(yīng)用程序和其它編譯語(yǔ)言開(kāi)發(fā)游戲也是一種較好的開(kāi)發(fā)方式。編譯語(yǔ)言程序能提供更好的控制用戶界面,而且編寫的應(yīng)用程序相比用腳本語(yǔ)言編寫的程序,效率更高、使用的內(nèi)存更少,并且執(zhí)行得更快。但由于這些編譯語(yǔ)言往往不具有跨平臺(tái)性,而且由于編譯語(yǔ)言的特點(diǎn),往往需要較長(zhǎng)的開(kāi)發(fā)周期。4. 基于J2

7、ME和其它解釋語(yǔ)言的游戲 Java 2 Micro Edition (J2ME)是一種針對(duì)移動(dòng)電話和PDA等小型設(shè)備的Java語(yǔ)言。采用J2ME極大的提高了手機(jī)支持游戲的能力。它有比WAP游戲更易控制的界面,J2ME游戲擺脫了純文字交互的方式,它允許使用圖形動(dòng)畫,并且可以通過(guò)無(wú)線網(wǎng)絡(luò)連接到遠(yuǎn)程服務(wù)器。而且Java是面向?qū)ο蟪绦蛟O(shè)計(jì)的語(yǔ)言,它最大的特點(diǎn)是一次編寫、到處運(yùn)行,即平臺(tái)無(wú)關(guān)性?,F(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ǎng)合不時(shí)會(huì)看到拿著手機(jī)玩游戲的人。相比較早開(kāi)發(fā)的

8、“貪吃蛇”、“俄羅斯方塊”等手機(jī)游戲,如今的手機(jī)游戲,無(wú)論是從視覺(jué)效果、聽(tīng)覺(jué)效果還是游戲的可玩性來(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)的急速膨脹,基于JAVA、BREW等技術(shù)平臺(tái)的手機(jī)游戲市場(chǎng)規(guī)模紛紛呈現(xiàn)幾何增長(zhǎng)態(tài)勢(shì)2 林邦杰·Java程序設(shè)計(jì)入門教程·中國(guó)青年出版社,2001-9-15。第二章 基于J2ME的手機(jī)游戲開(kāi)發(fā)平臺(tái)概述2.1 什么是J2MEJ2ME 是SUN 公司針對(duì)嵌

9、入式、消費(fèi)類電子產(chǎn)品推出的開(kāi)發(fā)平臺(tái),與J2SE 和J2EE 共同組成Java 技術(shù)的三個(gè)重要的分支。J2ME 實(shí)際上是一系列規(guī)范的集合,由JCP 組織制定相關(guān)的Java Specification Request(JSR)并發(fā)布,各個(gè)廠商會(huì)按照規(guī)范在自己的產(chǎn)品上進(jìn)行實(shí)現(xiàn),但是必須要通過(guò)TCK 測(cè)試,這樣確保兼容性3。2.2 J2ME 平臺(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è)重要的概念是可選包(Optio

10、nal -Package),它是針對(duì)特定設(shè)備提供的類庫(kù),比如某些設(shè)備是支持藍(lán)牙的,針對(duì)此功能J2ME 中制定了JSR82(Bluetooth API)提供了對(duì)藍(lán)牙的支持。目前,J2ME 中有兩個(gè)最主要的配置,分別是Connected Limited Devices Configuration(CLDC)和Connected Devices Configuration(CDC)。他們是根據(jù)設(shè)備的硬件性能進(jìn)行區(qū)分的4 黃聰明·JAVA移動(dòng)通信程序設(shè)計(jì)J2ME MIDP·清華大學(xué)出版社。CDC 的硬件參數(shù):(1) 2M 以上內(nèi)存。(2) 具有網(wǎng)絡(luò)連接能力,通常為無(wú)線網(wǎng)絡(luò)。(3)

11、需要實(shí)現(xiàn)java 虛擬機(jī)規(guī)范的全部功能。(4) 32 位或者64 位的處理器。CLDC 的硬件參數(shù):(1) 512 KB 以下內(nèi)存(2) 有限能源供應(yīng)(通常使用電池)。(3) 有限或非持續(xù)網(wǎng)絡(luò)連接。(4) 簡(jiǎn)單的用戶界面。(5) 16 位或者32 位的處理器。從上述的標(biāo)準(zhǔn)中我們不難看出CLDC 主要針對(duì)那些資源非常受限的設(shè)備比如手機(jī)、PDA、雙工尋呼機(jī)等。而CDC 主要面對(duì)那些家電產(chǎn)品,比如機(jī)頂盒、汽車導(dǎo)航系統(tǒng)等。簡(jiǎn)表是以配置為基礎(chǔ)的,例如Mobile Information Devices Profile(MIDP)就是CLDC 上層的重要簡(jiǎn)表。與配置的縱向特性不同的是,簡(jiǎn)表是橫向的。下圖2

12、-1是J2ME 體系結(jié)構(gòu)的框圖:The J2ME EnvironmentJ2ME AppliacationLayerMIDLetMIDLet Class LayerMIDLet Application Manager 圖2-1J2ME 體系結(jié)構(gòu)框圖(1) 主機(jī)操作系統(tǒng)層(Host Operating System Layer):這一層為特定硬件設(shè)備的操作系統(tǒng)層。(2) Java虛擬機(jī)層(Java Virtual Machine Layer):這一層是Java虛擬機(jī)的一個(gè)實(shí)現(xiàn),它是為特定為特定設(shè)備的主機(jī)操作系統(tǒng)定制的,支持一個(gè)特定的J2ME配置。(3) 配置層(Configuration Lay

13、er):配置層定義Java虛擬機(jī)的功能和特定類別設(shè)備上可用的Java類庫(kù)的最小集。從某種程度上說(shuō),一個(gè)配置定義了Java平臺(tái)的功能部件和庫(kù)的共同性,開(kāi)發(fā)者可以假設(shè)這些功能部件和庫(kù)在屬于某一特定類別的所有設(shè)備上都是可用的。這一層對(duì)用戶是透明的,但它對(duì)描述的實(shí)現(xiàn)者非常重要。(4) 描述層(Profile Laver):描述層定義了特定類別設(shè)備上可用的應(yīng)用程序編程設(shè)備的主機(jī)操作系統(tǒng)定制的,支持一個(gè)特定的J2ME配置。在手機(jī)上,KVM, CLDC, MIDP分別實(shí)現(xiàn)了J2ME體系結(jié)構(gòu)中的Java虛擬機(jī)層、配置層和描述層。2.3 KVMCLDC 和 MIDP都是運(yùn)行在Sun公司的KVM上。KVM是一個(gè)專

14、門為小型、資源受限設(shè)備所設(shè)計(jì)的緊湊的、便攜的Java虛擬機(jī)。Java虛擬機(jī)是Java程序語(yǔ)言的核心,只要Java程序在執(zhí)行,Java虛擬機(jī)也必定在執(zhí)行。Java虛擬機(jī)是實(shí)際執(zhí)行Java程序的引擎,也是Java語(yǔ)言具有這么多優(yōu)良特色的關(guān)鍵所在。當(dāng)你執(zhí)行Java程序時(shí),程序內(nèi)的指令其實(shí)并不是由硬件直接執(zhí)行,而是由一個(gè)特別的軟件一一讀取這些指令來(lái)執(zhí)行的。簡(jiǎn)單地說(shuō),Java程序不是被底層的CPU直接執(zhí)行,而是被“虛擬CPU”執(zhí)行的,所謂的虛擬CPU其實(shí)就是計(jì)算機(jī)上執(zhí)行的一個(gè)特別軟件。虛擬機(jī)的優(yōu)點(diǎn)甚多,比如移植方便,只需要移植虛擬機(jī)和相關(guān)的支持程序庫(kù)到新的硬件架構(gòu)上,所有上層的應(yīng)用程序都不需要更動(dòng)就完成

15、移植了。虛擬機(jī)的另一個(gè)好處是它在計(jì)算機(jī)軟硬件間加入一抽象層來(lái)分離和保護(hù),可以防止惡作劇的程序暗中搞鬼5 盧軍·J2ME應(yīng)用程序開(kāi)發(fā)手機(jī)、PDA程序開(kāi)發(fā)捷徑·中國(guó)鐵道出版社。2.4 CLDC 2000 年5 月,Java Community Process(JCP)公布了CLDC1.0 規(guī)范(即JSR30)。作為第一個(gè)面對(duì)小型設(shè)備的Java應(yīng)用開(kāi)發(fā)規(guī)范,CLDC是由包括Nokia,Motorola和Siemens在內(nèi)的18 家全球知名公司共同協(xié)商完成的。CLDC是J2ME核心配置中的一個(gè),可以支持一個(gè)或多個(gè)profile。其目標(biāo)主要面向小型的、網(wǎng)絡(luò)連接速度慢、能源有限(主要是

16、電池供電)且資源有限的設(shè)備,如手機(jī)、機(jī)頂盒、PDA 等。CLDC 的核心是虛擬機(jī)和核心類庫(kù)。虛擬機(jī)運(yùn)行在目標(biāo)操作系統(tǒng)之上,對(duì)下層的硬件提供必要的兼容和支持;核心類庫(kù)提供操作系統(tǒng)所需的最小的軟件需求。1核心類庫(kù)2虛擬機(jī)可選包Profile配置操作系統(tǒng)圖2-2 CLDC 標(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.2 CLDC 的整體需求(1) 能運(yùn)行在絕大多數(shù)的小型的、資源受限的連接設(shè)備上。(2) 用CLDC 為上述

17、設(shè)備開(kāi)發(fā)的應(yīng)用盡可能的不使用設(shè)備的本地系統(tǒng)軟件。(3) 定義能應(yīng)用在絕大多數(shù)上述設(shè)備上的最小子集的規(guī)范。(4) 保證在不同類型上述設(shè)備之間代碼級(jí)的可移植性和互操作性。2.4.3 CLDC 的硬件需求由于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)存是指擁有寫保護(hù),不會(huì)因關(guān)機(jī)而抹去的ROM。對(duì)于具體的設(shè)備的

18、具體實(shí)現(xiàn),這些需求也可能有變化。這里所規(guī)定的160KB 是CLDC 規(guī)范中的要求,實(shí)際也可以是128KB 左右。2.4.4 CLDC 的軟件需求和硬件類似,CLDC 上運(yùn)行的軟件也是多種多樣的。例如,有些設(shè)備支持多進(jìn)程操作系統(tǒng)或者支持文件系統(tǒng);而有些功能極其有限的設(shè)備并不需要文件系統(tǒng)。對(duì)于這些不確定性,CLDC只定義了軟件所必須的最小集合。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ì)安全

19、性的支持(6) 對(duì)國(guó)際化的支持2.4.6 CLDC特征(1) 安全(2) 遵守Java語(yǔ)言規(guī)范(3) 遵守Java虛擬機(jī)規(guī)范(4) 要求類文件驗(yàn)證J2EE和J2SE為桌面計(jì)算機(jī)和服務(wù)器的企業(yè)級(jí)應(yīng)用和開(kāi)發(fā)提供了非常豐富的庫(kù)函數(shù)。不幸的是這些庫(kù)需要幾十兆的內(nèi)存來(lái)運(yùn)行,因此并不適合于資源受限的小型設(shè)備。所以CLDC針對(duì)小型受限設(shè)備重新制定了一個(gè)類庫(kù)。為了保證應(yīng)用程序的兼容性和可移植性,包括進(jìn)CLDC的大多數(shù)類庫(kù)都是J2SE中規(guī)定的子集,其它一些是由CLDC規(guī)定的專用于移動(dòng)設(shè)備的類。包括:從J2SE中繼承的類、國(guó)際化支持類、系統(tǒng)屬性類、CLDC專用類四個(gè)方面6 JSR-000139 Connected

20、 Limited Device Configuration 1.1。2.5移動(dòng)信息設(shè)備描述(MIDP)J2ME提供了描述的概念,使得可以為特定的設(shè)備家族定義相同的Java平臺(tái)。描述可以滿足兩種明顯不同的可移植性需求:(1)描述為在一個(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)

21、用在特定配置上的Java API和類庫(kù)的集合,同時(shí)為市場(chǎng)中特定的設(shè)備家族提供了附加的面向特定領(lǐng)域的功能7 ?,F(xiàn)在,己經(jīng)有了五個(gè)規(guī)范化了的描述,如表2-1表2-1 五個(gè)規(guī)范化描述描述名稱下層配置Mobile information device profile(MIDP)CLDCPersonal digital assistant profileCLDCFoundation profileCDCPersonal profileCDCRMI profileCDC2.6MIDP 應(yīng)用程序CLDC和MIDP組合起來(lái)為創(chuàng)建移動(dòng)電話應(yīng)用程序提供了完整的環(huán)境。MIDP應(yīng)用程序或者稱為MIDlet. 其模型如

22、圖2-3所示The J2ME EnvironmentJ2ME AppliacationLayerMIDLetMIDLet Class LayerMIDLet Application Manager圖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),當(dāng)startApp()方法被調(diào)用的時(shí)候MIDlet 進(jìn)入active 狀態(tài),也就是所說(shuō)的運(yùn)行狀態(tài)。在active 狀態(tài)調(diào)用destroyApp(booleanunconditional)或者pa

23、useApp()方法可以使得MIDlet 進(jìn)入destroyed 或者pause 狀態(tài)。值得一提的是destroyApp(boolean unconditional)方法,事實(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ō)明了

24、MIDlet 狀態(tài)改變情況:StartPausedDestroyedstartApppauseAppdestroyAppActivedestroyApp圖2-4 MIDlet 狀態(tài)圖2.7 MIDP UI 組件In 組件與低級(jí)繪制相比,用在游戲開(kāi)發(fā)上的機(jī)會(huì)較少,但還是會(huì)到。所謂組件,是指繼承了javax.microedition.lcdui.Screen類的javax.micr oedition.ledui.Alert,javax.microedition.lcdui.Form,javax.microedition.lcdui.TextBox,javam microedition.lcdui.

25、List等。下圖為我們展示了整個(gè)LCDUI 包的體系:DisplayCommandListerTickerDisplayableCommandCanvasScreenGraphicsImageFont 圖2-5 LCDUI包的體系Screen 類屬于高級(jí)圖形用戶界面組件, Canvas 是低級(jí)圖形用戶界面組件,在同一時(shí)刻,只能有唯一一個(gè)Screen 或者Canvas 類的子類顯示在屏幕上,我們可以調(diào)用Display 的set Current()的方法來(lái)將前一個(gè)畫面替換掉,我們必須自行將前一個(gè)畫面的狀態(tài)保留起來(lái),并自己控制整個(gè)程序畫面的切換。同時(shí)我們可以運(yùn)用javax.microedition.

26、lcdui.Command 類來(lái)給我們的提供菜單項(xiàng)目的功能,分別是:Command.BACKCommand、Command. CANCEL、Command.EXIT、Command.HELP、Command.ITEM、Comm and.OK、Command.SCREEN 和Command.STOP,我們?cè)贒isplay able對(duì)象中定義了add Command()和remove Command()兩個(gè)方法,這就意味著我們可以在高級(jí)UI 和低級(jí)UI 中同時(shí)使用Command 類,同時(shí)我們通過(guò)注冊(cè)Command 事件來(lái)達(dá)到事件處理的目的,即Command 必須與Command Listener

27、接口配合使用才能反映用戶的動(dòng)作。與高級(jí)UI 相比,低級(jí)UI 就自由很多,任何時(shí)候我們可以調(diào)用repaint()產(chǎn)生重繪事件,調(diào)用完了repaint()會(huì)立刻返回,調(diào)用paint()回調(diào)函數(shù)則是由另一個(gè)專門的線程來(lái)完成。底層事件大致可分為三類:Press Events(按鍵事件),Action Keys(動(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)

28、時(shí)間按住按鍵時(shí)會(huì)觸keyRepeated(),但是RepeatEvents 不是JTWI 要求強(qiáng)制支持的,所以使用之前要進(jìn)行測(cè)試,看設(shè)備是否支持。在Canvas 里面我們每按下一個(gè)按鍵都會(huì)觸發(fā)keyPressed()函數(shù),并傳入相應(yīng)位置的整數(shù)值,我們?cè)贛IDP 規(guī)范中可以很容易的發(fā)現(xiàn),KEY_NUM0KEYNUM9 十個(gè)常數(shù)分別代表鍵盤上的0-9還有兩個(gè)功能鍵,KEY_STAR,KEY_POUND,如果我們傳入的值小于0,代表我們傳入了不合法的keycode,某些機(jī)器上還支持連續(xù)按鍵響應(yīng),但這并不是JTWI 規(guī)定要支持的,所以我們?cè)谶M(jìn)行實(shí)際開(kāi)發(fā)之前一定要用我們前面講到的hasRepeatEve

29、nts()方法來(lái)進(jìn)行判定。動(dòng)作按鍵主要針對(duì)游戲來(lái)設(shè)計(jì)的, 在API 中定義了一系列的動(dòng)作事件:UP,DOWN,LEFT,RIGHT,GAME_A,GAME_B,GAME_C,GAME_D,當(dāng)按下這些按鍵時(shí)會(huì)映射到我們自己為每個(gè)按鍵事件編寫的方法,來(lái)完成一些動(dòng)作。不過(guò)我們?cè)贛IDP2.0 里我們已經(jīng)有專門的游戲開(kāi)發(fā)包了,所以我在這里就不重點(diǎn)介紹了。觸控事件主要面向高端設(shè)備, 并非JTWI 要求強(qiáng)制支持的,其核心方法為:pointerPressed(),pointerReleased(),pointerDragged(),分別對(duì)應(yīng)我們通常所用的移動(dòng)設(shè)備手寫筆的點(diǎn),擊,拖拽幾個(gè)動(dòng)作,我們?cè)谶@三個(gè)方法

30、里可以定義相應(yīng)的事件處理函數(shù)。在索愛(ài)P910C 這樣的高端手機(jī)上,支持屏幕的觸控事件,我們?cè)谄聊簧宵c(diǎn)擊,可以引發(fā)pointerPressed()函數(shù),并傳入當(dāng)時(shí)位置的坐標(biāo),放開(kāi)后,會(huì)引發(fā)pointerReleased()函數(shù),同樣也會(huì)傳入坐標(biāo),具體的使用方法和keyPressed()以及keyReleased()大同小異。第三章手機(jī)游戲開(kāi)發(fā)的相關(guān)知識(shí)及工具3.1 手機(jī)游戲的畫面MIDlet 類本身并沒(méi)有提供直接操作畫面顯示的功能,因此在MIDlet類的子類中也沒(méi)有直接操作畫面顯示的功能。因此,我們要使用提供了管理畫面顯示功能的javax.microedition.lcdui.Display類。

31、這個(gè)Display類可以javax.microedition.lcdui.Display類的子類顯示在畫面上。Displayable類的子類大致說(shuō)來(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:ObjectDisplayCanvasScreenAlertFormListTextBoxObject圖3

32、-1 畫面顯示類圖用來(lái)顯示畫面用的Display對(duì)象,可以從Display類的Static方法Display#getDisplay(MIDlet) 值獲取。通過(guò)在獲取的Display對(duì)象,就可以讓Displayable對(duì)象顯示在畫面上。 MIDP中可以使用的圖像格式為PNG格式。要獲取圖像,必須使用javax.microedition.lcdui.Image類的Static方法。Image類的Static方法,提供了從byte數(shù)據(jù)中提取Image對(duì)象,以及指定與MIDlet相同JAP文件的路徑后獲取對(duì)象的功能。創(chuàng)建Image對(duì)象的Static方法:(1)Image#createImage(by

33、teimageData,int imageOffset,int imageLengt)(2)Image#createImage(int souce)(3)Image#createImage(int width,int height)(4)Image#createImage(String name)為了減少額外錯(cuò)誤處理,在調(diào)用出來(lái)的時(shí)候要進(jìn)行try-catch或throw。下面的代碼展示了如何創(chuàng)建Image對(duì)象:Image img;Tryimg=Image.createImage(“/mi.png”)catch(java.io.IOException e)上一章提到了MIDP UI 的組件,這里

34、不在做解釋。Form類 是能夠?qū)⒁粋€(gè)以上的圖像文本,Item類的子類(ChoiceGroup,DataField,Gauge,ImageItem)混合顯示的組件。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è)文本框中的部分字符。Ale

35、rt ,F(xiàn)orm,List,TextBox各類的超類Screen由于與Canvas類一樣,是繼承了Displayable類,因此可以用Display # setCurrent (Displayable)方法來(lái)將其顯示在畫面上。3.2手機(jī)游戲中的按鍵在MIDP中,每一個(gè)按鍵事件將產(chǎn)生一個(gè)按鍵代碼。在MIDP的Canvas類中定義的按鍵代碼如下所示:KEY_NUM0,KEY_NUM1,KEY_NUM2, KEY_NUM3,KEY_NUM4,KEY_NUM5,KEY_UM6, KEY_UM7,KEY_UM8,KEY_NUM9,KEY_STAR和KEY_POUND。上述按鑲代碼包括數(shù)字09、星號(hào)和#號(hào)

36、。在某些特別的移動(dòng)設(shè)備上可能還有其他按鍵,但是在MIDP中規(guī)定的最低限度的按鍵就是上面定義的這些。使用這些按鍵可以確保應(yīng)用程序在任何符合MIDP規(guī)范的移動(dòng)設(shè)備上運(yùn)行。在Canvas類中,定義了一些通用按鍵值,游戲按鍵中的UP、DOWN、LEFT、RIGHT、FIRE、GAME_A、GAME_B,在MIDlet運(yùn)行時(shí),這些按鍵的按鍵值可以通過(guò)getKeyCode()方法確定8 洪維恩·Java 2面向?qū)ο蟪绦蛟O(shè)計(jì)·中國(guó)鐵道出版社9 焦祝軍、張威·J2ME無(wú)線通信技術(shù)應(yīng)用開(kāi)發(fā)·北京希望電子出版社。3.3線程使用我們所創(chuàng)建的動(dòng)畫,是使用線程把所準(zhǔn)備的多張圖像按

37、順序描繪出來(lái)。所謂的線程就是指程序的運(yùn)行單位,使用線程可以同時(shí)進(jìn)行處理。在這里,為了要做出線程,我們會(huì)用到Java.Lang.Runnable接口。同樣的處理雖然也可以用到j(luò)ava.lang.Thread類與Java.util.Timer類來(lái)進(jìn)行,不過(guò)它們都需要?jiǎng)?chuàng)建出繼承各類的另一個(gè)類,所以還不如使用Runnable接口。將Runnable接口作為實(shí)現(xiàn)的類,必須將Runnable接口的run()方法重新定義。在這個(gè)run()方法中,將要編寫以線程所處理的內(nèi)容。下面的代碼為在run()方法內(nèi)調(diào)用Canvas#repaint()方法來(lái)進(jìn)行再描繪的范例。Import javax.microediti

38、on.lcdui.*Class ThreadTest extends canvas implements RunnablePublic void run( )Repaint( );Protected void paint(Graphics g)只在以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

39、#start()方法被調(diào)用出來(lái)后調(diào)用Runnable#run( )方法,因此編寫在run()方法中的處理將會(huì)被自動(dòng)運(yùn)行。線程的終止一般可通過(guò)兩種方法實(shí)現(xiàn);自然撤消或是被停止。自然撤消是指從線程的run()方法正常退出。通 常,當(dāng)一個(gè)應(yīng)用程序停止運(yùn)行,例如用戶從一個(gè)主頁(yè)切換到另一個(gè)主頁(yè)時(shí),它就會(huì)調(diào)用stop()方法來(lái)終止原主頁(yè)中正在運(yùn)行的所有線程10 范丹·J2ME在I-mode手機(jī)上的應(yīng)用·現(xiàn)代計(jì)算機(jī),2003年第7期。3.4 手機(jī)硬件平臺(tái)特點(diǎn)手機(jī)作為一種資源有限的設(shè)備,和PC機(jī)相比,有以下一些特點(diǎn):(1)處理器運(yùn)算速度慢,遠(yuǎn)低于PC機(jī)的CPU運(yùn)行速度。(2)存儲(chǔ)器容量小、

40、存取速度慢。(3)網(wǎng)絡(luò)能力有限、帶寬窄,并且因?yàn)槭謾C(jī)的移動(dòng),容易導(dǎo)致手機(jī)網(wǎng)絡(luò)地址的變化。(4)輸入/輸出的多樣性:手機(jī)不可能有PC機(jī)標(biāo)準(zhǔn)鍵盤那么多按鍵,也沒(méi)有鼠標(biāo)。它的顯示能力也非常有限,譬如顯示尺寸小、分辨率低等。(5)手機(jī)由電池提供能源,會(huì)因?yàn)殡姵睾谋M或接觸不良造成經(jīng)常斷電。在編寫手機(jī)應(yīng)用程序時(shí),必須對(duì)以上幾個(gè)方面分別進(jìn)行考慮14 趙海廷·java語(yǔ)言程序設(shè)計(jì)·2005-8-8。3.5 手機(jī)游戲開(kāi)發(fā)工具軟件J2ME Wireless Toolkit(J2MEWTK)是Sun公司所發(fā)布的官方版MIDP應(yīng)用程序開(kāi)發(fā)工具,它為編寫和測(cè)試M工DP應(yīng)用程序提供了一個(gè)完整的開(kāi)發(fā)環(huán)境

41、。J2ME Wireless Toolkit(安裝 J2MEWTK之前,一定要先安裝Java2 SDK 1.3以上的版本。如果沒(méi)有安裝Java 2 SDK的話,J2MEWTK即使安裝完成,也無(wú)法進(jìn)行M工Dlet的開(kāi)發(fā)工作。J2MEWTK提供菜單或按鈕方式的命令。J2MEWTK中有相應(yīng)的編譯(集成了預(yù)驗(yàn)步驟)、打包、模擬運(yùn)行的菜單(或按鈕),以及其它輔助工具。J2SE SDK(這里介紹一下Java2 SDK及J2ME Wireless Toolkit的安裝11 佚名·JAVA教程。我們來(lái)安裝制作JAVA所必需的開(kāi)發(fā)配套元件J2SE SDK。先打開(kāi)點(diǎn)擊網(wǎng)頁(yè)中的Download J2SE

42、SDK鏈接,會(huì)出現(xiàn)了一個(gè)許可協(xié)議。仔細(xì)閱讀完協(xié)議后,選中Accept然后再點(diǎn)擊Continue。這是選擇安裝程序的畫面。因?yàn)槟愕腜C的OS是WINDOWS,所以你可以試著點(diǎn)擊Windows Installation, Multi-language,來(lái)下載安裝程序。啟動(dòng)安裝程序后,會(huì)出現(xiàn)一個(gè)許可協(xié)議的畫面??赐旰筮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)擊桌面

43、上“我的電腦”圖標(biāo),在顯示選單中選擇“屬性”。打開(kāi)“系統(tǒng)屬性”,選擇上面選單的“高級(jí)”,點(diǎn)擊“環(huán)境變量”按鈕,出現(xiàn)環(huán)境變量設(shè)定窗口。在“用戶變量”和“系統(tǒng)變量”的表里如果沒(méi)有“Path”變量,就點(diǎn)擊“新建”。在“變量名”一欄輸入“Path”,“變量值”欄里輸入剛才安裝的 J2SE SDK的文件夾里“bin”文件夾的路徑。這里設(shè)定為c:j2sdk1.4.2_05bin。輸完后點(diǎn)擊“確定”鍵。下面就讓我們來(lái)安裝手機(jī)Java開(kāi)發(fā)元件J2ME Wireless Toolkit。打開(kāi)看完后選擇Accept,然后點(diǎn)擊Continue。于是顯示安裝程序選擇畫面,點(diǎn)擊Windows Platform的安裝程序

44、,并下載。出現(xiàn)Wireless Toolkit的安裝畫面。選擇Next。下面是許可協(xié)議的畫面,看完后選擇Yes。設(shè)定正在安裝的J2SDK的路徑。這里點(diǎn)擊剛才安裝J2SE SDK的Browse.鍵,設(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è)的J2ME Wireless Toolkit1.0.4_01,然后點(diǎn)擊Next。然后是設(shè)定的確認(rèn)畫面。若確認(rèn)正確,點(diǎn)擊Next。安裝完畢后點(diǎn)擊Finish鍵,結(jié)束安裝。下面說(shuō)明一下J2ME手機(jī)游戲開(kāi)發(fā)環(huán)境:Ja

45、va手機(jī)游戲的真實(shí)運(yùn)行環(huán)境是Java手機(jī)。一般來(lái)說(shuō),Java游戲的開(kāi)發(fā)是先在PC機(jī)上模擬,模擬成功后再打包下載到手機(jī)上。本文的模擬環(huán)境是:(1)系統(tǒng)環(huán)境Windows 2000(2)平臺(tái)支持J2SDK-1.4(3)開(kāi)發(fā)工具:采用MOTO-J2ME-SDK-5.2.1模擬器。第四章 手機(jī)游戲一“逃亡者”的設(shè)計(jì)與實(shí)現(xiàn)4.1游戲描述“逃亡者”是一款選取了一款PC 小游戲作為范例移植到手機(jī)上,它的中文名為是男人就撐過(guò)30 秒,雖然看似簡(jiǎn)單,但絕對(duì)有挑戰(zhàn)性!這是總結(jié)了無(wú)數(shù)日本縱版飛行射擊游戲中的武器而研究出的特殊訓(xùn)練軟件,專門用來(lái)訓(xùn)練“戰(zhàn)斗機(jī)”飛行員。在漆黑一片的宇宙中,停著一架小飛船,突然四面八方出現(xiàn)

46、很多黃色的小點(diǎn)向小飛船聚集過(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)的游戲畫面。圖4-1 特訓(xùn):是男人就撐過(guò)30 秒游戲畫面4.2可行性研究1.技術(shù)可行性:手機(jī) 游 戲 “逃亡者”是一款較為小型的手機(jī)游戲,根據(jù)已有的手機(jī)游戲設(shè)計(jì)經(jīng)驗(yàn),利用J2ME來(lái)可以實(shí)現(xiàn)游戲的功能。根據(jù)己往的設(shè)計(jì)進(jìn)度,一款小型規(guī)模的手機(jī)游戲大概有20003000行代碼。2.操作可行性:該款游戲在所有支持JAVA的手機(jī)上都可運(yùn)行,按鍵簡(jiǎn)單,易于操作12 Jason Lam、Deabow

47、ay Chou譯·J2ME游戲開(kāi)發(fā)(第一版)·PDF電子文檔。4.3游戲設(shè)計(jì)在進(jìn)入游戲之前先顯示閃屏圖片,當(dāng)用戶按下鍵盤或等待3 秒后,進(jìn)入游戲菜單。初始情況下,游戲菜單有三個(gè)選項(xiàng),它們分別是開(kāi)始游戲,游戲說(shuō)明和高分記錄。選擇開(kāi)始新游戲則進(jìn)入游戲,在游戲中如果按下非游戲鍵盤則中斷游戲返回菜單,此時(shí)菜單中增加了一個(gè)繼續(xù)游戲的選項(xiàng),可以返回游戲也可以重新開(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、菜單。菜單中的退出選項(xiàng)用于退出程序13 李振鵬 、龔劍·J2ME手機(jī)游戲開(kāi)發(fā)技術(shù)詳解。游戲的流程如圖4-3所示。閃屏新游戲游戲說(shuō)明最高記錄繼續(xù)游戲退出游戲游戲說(shuō)明Back最高記錄Back游戲成績(jī)等級(jí)最好成績(jī)非游戲操作游戲結(jié)束圖4-3 游戲系統(tǒng)流程圖 程序中一個(gè)有10 個(gè)類,其中MIDlet 主類負(fù)責(zé)各個(gè)屏幕的切換,它們是閃屏屏幕、菜單、介紹屏幕、高分屏幕、游戲屏幕,游戲結(jié)束屏幕。游戲中使用到的類為SoundEffects(音效)、Bullets(子彈)、Escapee(逃亡小飛機(jī))。程序的類結(jié)構(gòu)如圖4-4 所示。SoundEffectsBulletsSpriteEscapee:Spr

49、iteescapeeCanvas:GameCanvasescapeeMIDlet:MIDletSplashScreen:CancasGameOverScreen:CanvasHighScoreSCreen:FormInstructionsScreen:FromMenuList:List圖4-2 游戲總體類圖下面介紹游戲線程:游戲的線程主要由三個(gè)部分組成:檢測(cè)鍵盤輸入(與玩家交互),更新游戲場(chǎng)景(處理游戲邏輯),繪制游戲畫布。基本上所有的2D 游戲都可以按照這三個(gè)模塊來(lái)設(shè)計(jì),三個(gè)模塊相互聯(lián)系又互相聯(lián)系,按照模塊的思想來(lái)實(shí)現(xiàn)游戲線程將更加面向?qū)ο蠛捅阌诶斫?。如果程序運(yùn)行快于預(yù)期速度會(huì)使玩家感覺(jué)到抖

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

51、 描述符manifest.mf和一個(gè)MIDlet套件JAR。描述符是一個(gè)小文本文件,包含有關(guān) MIDlet 套件的信息。JAR 包含組成 MIDlet 套件的類文件和資源。4.6 最后效果圖 圖4-6游戲運(yùn)行畫面(一) 圖4-7 游戲運(yùn)行畫面(二) 圖4-8 游戲結(jié)束畫面第五章 結(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)。最后以如何在J2ME環(huán)境下實(shí)現(xiàn)一款射擊類手機(jī)游戲的開(kāi)發(fā)過(guò)程做了一個(gè)詳細(xì)的介紹。其主要工作為:1.研究

52、介紹了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ì)的介紹。參考文獻(xiàn)1 J2ME開(kāi)發(fā)網(wǎng)·J2ME中文教程·PDF電子文檔 ,2005-9-52 林邦杰·Java程序設(shè)計(jì)入門教程·中國(guó)青年出版社,2001-9-153 4 黃聰明·

53、;JAVA移動(dòng)通信程序設(shè)計(jì)J2ME MIDP·清華大學(xué)出版社5 盧軍·J2ME應(yīng)用程序開(kāi)發(fā)手機(jī)、PDA程序開(kāi)發(fā)捷徑·中國(guó)鐵道出版社6 JSR-000139 Connected Limited Device Configuration 1.17 8 洪維恩·Java 2面向?qū)ο蟪绦蛟O(shè)計(jì)·中國(guó)鐵道出版社9 焦祝軍、張威·J2ME無(wú)線通信技術(shù)應(yīng)用開(kāi)發(fā)·北京希望電子出版社10 范丹·J2ME在I-mode手機(jī)上的應(yīng)用·現(xiàn)代計(jì)算機(jī),2003年第7期11 佚名·JAVA教程12 Jason Lam、Deab

54、oway Chou譯·J2ME游戲開(kāi)發(fā)(第一版)·PDF電子文檔13 李振鵬 、龔劍·J2ME手機(jī)游戲開(kāi)發(fā)技術(shù)詳解14 趙海廷·java語(yǔ)言程序設(shè)計(jì)·2005-8-815 JAVA手機(jī)網(wǎng)16 溫尚書·J2ME無(wú)線通信實(shí)用案例教程·清華大學(xué)出版社17 Jason Lam, Deaboway Chou譯·J2ME游戲開(kāi)發(fā)(第一版)·PDF電子文檔18 H.M.Deitel、P.J.Deitel·程序設(shè)計(jì)教程·清華大學(xué)出版社致 謝首先感謝我的指導(dǎo)老師羅奇導(dǎo)師,他在我的畢業(yè)設(shè)計(jì)過(guò)程中提出了指導(dǎo)

55、性的方案和架構(gòu),特別是指引我閱讀相關(guān)的資料和書籍,使我更能迅速學(xué)習(xí)掌握知識(shí)并完成了這個(gè)畢業(yè)設(shè)計(jì)。感謝答辯組對(duì)本畢業(yè)設(shè)計(jì)的考核,如果可以得到各位專家的認(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é)校更加輝煌。附錄根據(jù)詳細(xì)設(shè)計(jì)對(duì)各個(gè)類進(jìn)行編碼實(shí)現(xiàn):1.主類escapeeMIDlet 的實(shí)現(xiàn)MIDlet 被用作一個(gè)狀態(tài)機(jī)來(lái)管理各種屏幕以及它們之間的轉(zhuǎn)換。例如,當(dāng)顯示splash 屏幕時(shí),該類和類SplashScreen(通過(guò)方法splashScreenPainted 和 splashScreenDone)共同在方法init 中完成背景初

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論