J2ME手機(jī)游戲(堡壘)的設(shè)計(jì)與開發(fā)_第1頁(yè)
J2ME手機(jī)游戲(堡壘)的設(shè)計(jì)與開發(fā)_第2頁(yè)
J2ME手機(jī)游戲(堡壘)的設(shè)計(jì)與開發(fā)_第3頁(yè)
J2ME手機(jī)游戲(堡壘)的設(shè)計(jì)與開發(fā)_第4頁(yè)
J2ME手機(jī)游戲(堡壘)的設(shè)計(jì)與開發(fā)_第5頁(yè)
已閱讀5頁(yè),還剩20頁(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、手機(jī)游戲(堡壘)的設(shè)計(jì)與開發(fā)手機(jī)游戲(堡壘)的設(shè)計(jì)與開發(fā) 手機(jī)游戲(堡壘)的設(shè)計(jì)與開發(fā)手機(jī)游戲(堡壘)的設(shè)計(jì)與開發(fā) 摘摘 要要 隨著手機(jī)業(yè)務(wù)的迅速發(fā)展,手機(jī)游戲逐漸成為移動(dòng)增值服務(wù)的興奮點(diǎn)。本 畢業(yè)設(shè)計(jì)就著眼于 j2me 技術(shù)的應(yīng)用,設(shè)計(jì)與開發(fā)一款探險(xiǎn)類手機(jī)游戲(堡壘)。 該堡壘游戲是基于 j2me 開發(fā)的手機(jī) rpg 游戲,采用 midp2.0 技術(shù)實(shí)現(xiàn)了菜 單、地圖、主角動(dòng)作及怪物動(dòng)作和 ai 等,主要通過(guò)精靈間的碰撞檢測(cè)來(lái)觸動(dòng)事 件發(fā)生。游戲的主流程是玩家利用手機(jī)鍵盤操作主角在堡壘中拾取道具破解迷 宮,并且隨著關(guān)數(shù)的增加,游戲的難度也逐漸增加。另外,游戲中還包括了排 行榜,聲音設(shè)置,幫助

2、等各種附加功能。其中充滿了趣味性和刺激性,是適合 各年齡段的益智冒險(xiǎn)類游戲。 本論文介紹了 j2me 的相關(guān)技術(shù)及該堡壘游戲程序的結(jié)構(gòu)分析和具體功能的 實(shí)現(xiàn)。 關(guān)鍵詞:關(guān)鍵詞:j2me; 手機(jī)游戲; 堡壘 the design and development of a handset game (castle) abstract with the rapid development of cell phone business, cell phone games have gradually become the hotspot of mobile value-added services.

3、this graduate design which focuses on j2me technology designs and develops a handset adventure game (castle). this castle game is a handset rpg game based on j2me which mainly examines the demons collision to touch off the event. it uses midp2.0 technology to achieve the menu, the map, the hero move

4、s, monster ai etc. the game has included the order list, the sound establishment, helps of function etc. player operates the lead through the handset to collect the stage prop in the castle to break through the labyrinth. the difficulty of the game will gradually increase along with the increase of

5、stage. otherwise, this intelligence and risk game is filled with enjoyment and the irritating quality witch suits many ages. this paper introduces related technology of the j2me and the structure analysis and the concrete function realization of this castle game procedure. key words: j2me;handset ga

6、me;castle 目目 錄錄 論文總頁(yè)數(shù):23 頁(yè) 1 引 言.1 2 手機(jī)游戲的現(xiàn)狀和 j2me 的概況.1 2.1 軟件現(xiàn)狀.1 2.2 j2me 概況 .2 2.2.1 j2me 的由來(lái).2 2.2.2 j2me 的 3 層體系結(jié)構(gòu)及 midp 簡(jiǎn)介.2 2.2.3 configuration 和 profiles.3 2.3 j2me 現(xiàn)狀和前景.4 2.4 手機(jī)游戲業(yè)務(wù).5 3 開發(fā)環(huán)境介紹.5 3.1 開發(fā)環(huán)境.5 3.2 關(guān)于 sonyericsson wireless tool kit.5 4 手機(jī)游戲(堡壘)的開發(fā).5 4.1 游戲的的思路、構(gòu)想.5 4.1.1 游戲想法的

7、產(chǎn)生.5 4.1.2 對(duì)游戲設(shè)計(jì)的初步認(rèn)識(shí).6 4.1.3 模塊成型階段.6 4.2 程序的類結(jié)構(gòu).7 4.3 游戲的流程圖.7 4.4 游戲的實(shí)現(xiàn).8 4.4.1 主類 gamemidlet 的實(shí)現(xiàn) .8 4.4.2 游戲畫布 mygame 類的實(shí)現(xiàn).13 4.4.3 玩家精靈 gameplayer 類的實(shí)現(xiàn).17 4.4.5 soundeffects 類的實(shí)現(xiàn).19 5 程序設(shè)計(jì)過(guò)程中遇到的一些重要問(wèn)題.19 5.1 關(guān)于碰撞的問(wèn)題.19 5.2 關(guān)于游戲畫面的顯示問(wèn)題.20 結(jié) 論.20 參考文獻(xiàn).20 致 謝.22 聲 明.23 1 1 引引 言言 java 語(yǔ)言是美國(guó) sun mic

8、rosystem 的 james gosling、pratrick naughton 及 mike sheridan 等人于 1991 年精心設(shè)計(jì)出來(lái)的計(jì)算機(jī)編程語(yǔ)言,其構(gòu)想在于 實(shí)現(xiàn)使用同一種編程語(yǔ)言所寫出來(lái)的程序可以在不同的平臺(tái)上運(yùn)作。這種架構(gòu) 對(duì)于消費(fèi)性電子產(chǎn)品而言是具有革命性的,因?yàn)樵谙M(fèi)性電子產(chǎn)品中的處理器 及操作系統(tǒng)各不相同,要在這些平臺(tái)上開發(fā)程序必須要了解各個(gè)平臺(tái)的特性, 以及其提供的 api 使用方式,分別開發(fā)不同的版本才能執(zhí)行,影響應(yīng)用程序的 普及性。 近幾年,由于微處理器性能的大幅提升,加上無(wú)線通訊技術(shù)的突破,手持 式移動(dòng)設(shè)備開始受到大眾的青睞。短短幾年內(nèi),手機(jī)已經(jīng)升級(jí)了幾

9、代產(chǎn)品,普 及率逐年攀升,生產(chǎn)效率不斷上升,產(chǎn)品價(jià)格比個(gè)人電腦的摩爾定律有更驚人 的下調(diào),以至手機(jī)是大多是城市居民不可缺少的一件隨身設(shè)備。繼短信、彩信 等服務(wù)之后,中國(guó)移動(dòng)提供基于 java 的百寶箱業(yè)務(wù),應(yīng)用產(chǎn)品遍及商務(wù)應(yīng)用、 信息獲取、英漢互譯、游戲娛樂(lè)等多媒體領(lǐng)域。 為了適應(yīng)移動(dòng)數(shù)據(jù)的發(fā)展,推動(dòng)無(wú)線電子商務(wù)等業(yè)務(wù)的發(fā)展,j2me(java 2 micro edition)既用于嵌入式系統(tǒng)的 java 被引入無(wú)線領(lǐng)域。j2me 的出現(xiàn)實(shí) 際上是 java 技術(shù)的回歸。作為 java2 平臺(tái)的一部分,j2me 與 j2se、j2ee 一起, 為無(wú)線應(yīng)用的客戶端和服務(wù)器端建立了完整的開發(fā)、部署

10、環(huán)境。隨著 j2me 的應(yīng) 用,它為移動(dòng)互聯(lián)引入了一種新的模型,既允許手機(jī)可以從互聯(lián)網(wǎng)上下載各種 應(yīng)用程序,并在手機(jī)創(chuàng)造可執(zhí)行環(huán)境離線運(yùn)行這些程序。由于定義了可執(zhí)行下 載的標(biāo)準(zhǔn),并在手機(jī)上創(chuàng)立了可執(zhí)行環(huán)境和程序開發(fā)語(yǔ)言,由此,在移動(dòng)通信 業(yè)第一次為軟件開發(fā)商創(chuàng)造了巨大的商業(yè)機(jī)會(huì),手機(jī)用戶在得到豐富應(yīng)用體驗(yàn) 的同時(shí),也大大提高了運(yùn)營(yíng)商的網(wǎng)絡(luò)流量。 2 2 手機(jī)游戲的現(xiàn)狀和手機(jī)游戲的現(xiàn)狀和 j2mej2me 的概況的概況 2.12.1 軟件現(xiàn)狀軟件現(xiàn)狀 在信息社會(huì)中,手機(jī)及其他無(wú)線設(shè)備越來(lái)越多的走進(jìn)普通百姓的工作和生 活,隨著信息網(wǎng)絡(luò)化的不斷進(jìn)展,手機(jī)及其他無(wú)線設(shè)備上網(wǎng)絡(luò)勢(shì)在必行。但是 傳統(tǒng)手機(jī)存

11、在以下弊端: 1. 傳統(tǒng)手機(jī)出廠時(shí)均由硬件廠商固化程序,程序不能增加、刪除,有了 錯(cuò)誤也不能更新、修改,若要增加新功能必須另?yè)Q一部手機(jī)。 2. 傳統(tǒng)手機(jī)訪問(wèn)互聯(lián)網(wǎng)是通過(guò) wap(wireless application protocal), 所有網(wǎng)絡(luò)資源必須接通網(wǎng)絡(luò)才能在線訪問(wèn),非常耗時(shí)、費(fèi)用亦很高。 而 java 技術(shù)在無(wú)線應(yīng)用方面的優(yōu)勢(shì)非常明顯: 1. 應(yīng)用程序可按需下載,而不是購(gòu)買由硬件商提供的套件,可升級(jí)空大。 2. java 技術(shù)提供了一個(gè)類庫(kù),它使的應(yīng)用開發(fā)商可以創(chuàng)建更為直覺、豐 富的用戶界面(gui); 3.java 技術(shù)使網(wǎng)絡(luò)帶寬的應(yīng)用更為有效,因?yàn)閼?yīng)用程序可以下載到器件上,

12、并在本地運(yùn)行,僅僅是在連接到服務(wù)器時(shí)才會(huì)占用網(wǎng)絡(luò)帶寬。 2.22.2 j2mej2me 概況概況 2.2.12.2.1 j2mej2me 的由來(lái)的由來(lái) java 的最大目標(biāo)和特點(diǎn),就是“一次編寫,到處運(yùn)行”的平臺(tái)無(wú)關(guān)性。但 是,一套標(biāo)準(zhǔn)無(wú)法適應(yīng)各種不同的需求。因此,java 技術(shù)目前共有三套,分別 針對(duì)不同的平臺(tái)和應(yīng)用。 standard edition(j2se,標(biāo)準(zhǔn)版):針對(duì)桌面端 pc 和工作站的個(gè)人和低 端商務(wù)應(yīng)用。 enterprise edition(j2ee,企業(yè)版):針對(duì)服務(wù)器端企業(yè)級(jí)應(yīng)用,支持 servlets, jsp 和 xml 等等。 micro edition(j2m

13、e,袖珍版):針對(duì)有限內(nèi)存,顯示和處理能力的設(shè)備, 主要是消費(fèi)電子和嵌入式設(shè)備領(lǐng)域(這實(shí)際正是 java 語(yǔ)言設(shè)計(jì)最初的目標(biāo)領(lǐng)域) 。 圖 1java 結(jié)構(gòu) 在消費(fèi)電子和嵌入式設(shè)備領(lǐng)域,內(nèi)存從幾百 k 到幾十 m,從沒有屏幕 web- tv,cpu 從低功耗的嵌入式處理器到 206mhz 的 risc 處理器,硬件條件的差異 是相當(dāng)大的。這就使得 j2me 的標(biāo)準(zhǔn)需要有不同的層次和類別來(lái)適應(yīng)這個(gè)復(fù)雜的 領(lǐng)域,因此相比之下 j2me 就比 j2se 和 j2ee 的標(biāo)準(zhǔn)要復(fù)雜得多。因此,清楚的 理解 j2me 的體系結(jié)構(gòu)的劃分才能更好的理解和掌握 j2me。 2.2.22.2.2 j2mej2m

14、e 的的 3 3 層體系結(jié)構(gòu)及層體系結(jié)構(gòu)及 midpmidp 簡(jiǎn)介簡(jiǎn)介 j2me 的 3 層體系結(jié)構(gòu)依照各種設(shè)備的資源特性,將 j2me 技術(shù)構(gòu)架分為簡(jiǎn) 表(profile) 、配置(configuration)和 java virtual machine(jvm)3 層, 然后再進(jìn)一步細(xì)分,這使 j2me 能夠在每一類設(shè)備的限制下工作,而同時(shí)提供最 低限度的 java 語(yǔ)言功能性。 關(guān)于 j2me 的體系結(jié)構(gòu),可以這樣來(lái)進(jìn)行總結(jié):configuration 的分類是根 據(jù)計(jì)算能力的不同來(lái)劃分的,同類設(shè)備的計(jì)算能力相近。configuration 是一 個(gè)規(guī)范,定義了這類設(shè)備的共同 java

15、平臺(tái),定義與設(shè)備無(wú)關(guān)的 java 虛擬機(jī)和 核心庫(kù),是平臺(tái)相容性的基礎(chǔ)。profile 的分類是根據(jù)設(shè)備功能劃分的,同類 功能的設(shè)備其他各種硬件條件和需求也相近。profile 是一組 api,在某 configuration 的基礎(chǔ)上擴(kuò)展了針對(duì)設(shè)備特定功能的 api,使得標(biāo)準(zhǔn)能夠完全適 應(yīng)特殊的設(shè)備,徹底發(fā)揮設(shè)備的功能。 j2me 體系的一般結(jié)構(gòu)是:由 configuration 定義的 java 虛擬機(jī)運(yùn)行于設(shè) 備的宿主操作系統(tǒng)之上,構(gòu)成整個(gè)平臺(tái)的基礎(chǔ)。configuration 提供了基本的 語(yǔ)言特性,profile 提供針對(duì)設(shè)備的特殊功能 api 和擴(kuò)展類庫(kù)。應(yīng)用程序的運(yùn) 行環(huán)境需要一

16、個(gè) configuration 和至少一個(gè) profile,多個(gè) profile 可以共存, 也可以疊加。 midp(mobile information device profile)定義了針對(duì)移動(dòng)信息處理設(shè) 備(主要指智能手機(jī)和一部分具有無(wú)線通信功能的 pda)的圖形界面,輸入和 時(shí)間處理,持久性存儲(chǔ),無(wú)線電話網(wǎng)絡(luò)連接之上的一些消息處理(例如短消息) , 安全等等 api,并且考慮到了移動(dòng)信息設(shè)備的屏幕和內(nèi)存限制。類似于 j2se 中 的 applet 框架,midp 提供了基于 javax.microedition.midlet 包的 midlet 應(yīng) 用程序框架。 因?yàn)?midp 提出

17、的比較早,目前重要的智能手機(jī)和 pda 操作系統(tǒng)上都已有了 相應(yīng)的實(shí)現(xiàn),而且應(yīng)用的也比較廣泛。 2.2.32.2.3 configurationconfiguration 和和 profilesprofiles 針對(duì)消費(fèi)電子和嵌入式設(shè)備領(lǐng)域豐富多樣的設(shè)備和彼此相差極大的計(jì)算能 力及各種硬件條件,j2me 首先根據(jù)最基本的一些特征把它們劃分為兩類。 具備間斷網(wǎng)絡(luò)通訊能力的個(gè)人移動(dòng)信息設(shè)備:如手機(jī),雙向呼機(jī), pda(personal digital assistant,個(gè)人數(shù)字助理,也稱掌上電腦)等等。 有固定的不間斷網(wǎng)絡(luò)連接的共享連接信息設(shè)備:如置頂盒(set-top boxes) , web

18、-tv,支持 internet 的有屏幕電話,汽車娛樂(lè)導(dǎo)航系統(tǒng)等等。 sun 對(duì) j2me 有一個(gè)很好的概括:j2me 技術(shù)有兩個(gè)設(shè)計(jì)中心手持的設(shè) 備,和可以插到墻上插座的設(shè)備。第一類設(shè)備往往是個(gè)人化的,移動(dòng)的,使用 電池,體積和功耗都有限制,因此功能和計(jì)算能力有限。第二類設(shè)備一般是固 定的,因此體積沒有太大限制。由于固定,可以有持續(xù)電源供應(yīng),因此功耗沒 有太大問(wèn)題,計(jì)算能力相對(duì)充裕。 計(jì)算能力是這兩類設(shè)備的主要區(qū)別,對(duì)其上可能的應(yīng)用和環(huán)境顯然有著本 質(zhì)影響,不同類別的設(shè)備不可能采用同樣的 java 平臺(tái),必須分別定義。針對(duì)這 兩大類設(shè)備的平臺(tái)規(guī)范就是 configuration。第一類設(shè)備的

19、 configuration 稱 為 cldc(connected, limited device configuration) ,第二類稱為 cdc(connected device configuration) 。 屬于同一類的設(shè)備計(jì)算能力是相似的,但是其他功能和條件還有非常大的 區(qū)別。作為 java 平臺(tái)必須保證相容性,這就必須舍棄所有的設(shè)備特殊性。因此, configuration 就是支持一組通用設(shè)備的最小 java 平臺(tái),作為這些設(shè)備的最小 公分母來(lái)保證不同設(shè)備間的平臺(tái)相容性。這里的 java 平臺(tái)主要是指 java 虛擬 機(jī)(jvm)和核心庫(kù)。 在 configuration 中

20、舍棄了設(shè)備的特殊性來(lái)保證 java 平臺(tái)的相容性,但是 僅僅有 configuration 顯然是不夠的,特殊的具體設(shè)備其獨(dú)有的功能和硬件條 件都沒有得到支持。為此,在 configuration 的基礎(chǔ)上,根據(jù)設(shè)備具體功能再 進(jìn)行一次劃分,比如智能手機(jī),pda 等等。功能的劃分也就是其他硬件條件的 劃分,比如屏幕大小,內(nèi)存,計(jì)算能力,電力供應(yīng)等等都是從屬于功能的,因 此同功能的設(shè)備的硬件條件都是非常相似的。profile(譯為簡(jiǎn)表或者簡(jiǎn)檔)就 是針對(duì)每一類功能設(shè)備的特殊性定義的與設(shè)備特性相關(guān)的 api,建筑于 configuration 之上,作為 configuration 的擴(kuò)展和補(bǔ)充。

21、例如 midp(mobile information device profile,移動(dòng)信息設(shè)備 profile)就定義了關(guān)于移動(dòng)信 息設(shè)備(主要指智能手機(jī)和一部分具有無(wú)線通信功能的 pda)的圖形界面,輸 入和時(shí)間處理,持久性存儲(chǔ),短消息等等的 api,并且考慮到了移動(dòng)信息設(shè)備 的屏幕和內(nèi)存限制。而正在制定中的 pda profile 則定義了針對(duì) pda 的 api, 其屏幕,內(nèi)存條件都要大于 midp,但是網(wǎng)絡(luò)方面的要求則顯然和手機(jī)有所不同。 如下圖所示,同屬于 configuration 的設(shè)備根據(jù)功能不同由不同的 profile 來(lái) 支持,profile 體現(xiàn)設(shè)備的特殊性,但是都建筑

22、在一個(gè)共同的基礎(chǔ) configuration 平臺(tái)之上。 2.32.3 j2mej2me 現(xiàn)狀和前景現(xiàn)狀和前景 j2me 已經(jīng)廣泛的應(yīng)用在了很多的移動(dòng)設(shè)備上,很多的移動(dòng)設(shè)備都實(shí)現(xiàn) midp 的參考實(shí)現(xiàn),但不同的移動(dòng)設(shè)備還是有一些不同的地方,比如應(yīng)用與手機(jī)上的 profile 就不適合在 pda 的 profile。有一些系統(tǒng),比如 symbian 實(shí)現(xiàn)了 cldc 和 midp,作為智能手機(jī)的操作系統(tǒng),是理想的 midp 應(yīng)用平臺(tái)。其他的系統(tǒng), 如在 compaq 的 ipaq 上已經(jīng)實(shí)現(xiàn)了 cdc,ibm 的 websphere micro environment 在 pocket pc 上

23、實(shí)現(xiàn)了 cldc,cdc 和 midp??梢?,在硬件條件較好的 pda 上都 可以實(shí)現(xiàn) cdc 的標(biāo)準(zhǔn)。由于這些主要操作系統(tǒng)平臺(tái)都是開放的,基本可以相信, 主要的移動(dòng)信息設(shè)備操作系統(tǒng)都將一直提供 j2me 的支持,但是具體支持哪個(gè)標(biāo) 準(zhǔn)則并不一定死板地按照 cldc 和 cdc 的最初定義,和設(shè)備的硬件條件和廠商的 選擇有關(guān),或者可能同時(shí)實(shí)現(xiàn)多個(gè)標(biāo)準(zhǔn)。所以說(shuō) j2me 的還是在快速的發(fā)展的。 2.42.4 手機(jī)游戲業(yè)務(wù)手機(jī)游戲業(yè)務(wù) 手機(jī)游戲是移動(dòng)多媒體時(shí)代最有價(jià)值的應(yīng)用。這是因?yàn)?,游戲是多媒體應(yīng) 用中集大成的業(yè)務(wù),圖像、音樂(lè)、互動(dòng)都能在游戲中實(shí)現(xiàn),能充分滿足用戶各 方面的需求。 雖然目前手機(jī)游

24、戲還無(wú)法與 pc 游戲相比,其顯示功能和鍵盤輸入、聲音處 理能力也形成一定制約。但是隨時(shí)隨地可操作可聯(lián)網(wǎng)的特性大大拓展了人們娛 樂(lè)休閑的時(shí)間和空間,以游戲功能為主的手機(jī)終端在市場(chǎng)上漸被認(rèn)可,多媒體 功能正向手機(jī)的標(biāo)配功能演進(jìn),制約手機(jī)游戲發(fā)展的技術(shù)瓶頸將被打破。當(dāng)前 的手機(jī)游戲產(chǎn)業(yè)盡管仍然存在很多制約其發(fā)展的瓶頸,但手機(jī)游戲已顯示出非 比尋常的發(fā)展速度,其市場(chǎng)潛力十分巨大,將成為移動(dòng)增值服務(wù)市場(chǎng)新的增長(zhǎng) 點(diǎn)。 3 3 開發(fā)環(huán)境介紹開發(fā)環(huán)境介紹 3.13.1 開發(fā)環(huán)境開發(fā)環(huán)境 操作系統(tǒng):microsoft windows xp 程序語(yǔ)言:java 2 開發(fā)平臺(tái):java 2 micro edit

25、ion 開發(fā)工具: wireless tool kit 2.1+ ultraedit-32_12.00a+1_sc 3.23.2 關(guān)于關(guān)于 sonyericssonsonyericsson wirelesswireless tooltool kitkit sonyericsson wtk(wireless tool kit)是 sonyericsson 公司針對(duì) j2me 推 出的用于手機(jī)和 palm 等移動(dòng)設(shè)備的開發(fā)包,是手機(jī)廠商的專用開發(fā)包。它通用 性高,開發(fā)出的應(yīng)用程序可保證能運(yùn)行在大部分設(shè)備上,而不像專用廠商具有 一定的不兼容性。雖然它沒有強(qiáng)大的功能和完善的調(diào)試手段,但它提供運(yùn)行模 擬

26、器的最基本組件,是其他 ide 需集成采用的必備元素。 當(dāng)前的最新 release 的版本為 j2me wtk2.2。 4 4 手機(jī)游戲(堡壘)的開發(fā)手機(jī)游戲(堡壘)的開發(fā) 4.14.1 游戲的的思路、構(gòu)想游戲的的思路、構(gòu)想 4.1.14.1.1 游戲想法的產(chǎn)生游戲想法的產(chǎn)生 相信大家一定都在 8 位機(jī)機(jī)上玩過(guò)冒險(xiǎn)島這款游戲,非常有趣味性。 游戲中玩家通過(guò)不斷的闖關(guān),來(lái)解救公主。在每個(gè)關(guān)都很很多的怪物阻擋 著你,所以需要運(yùn)用各種機(jī)關(guān)或者秘籍來(lái)殺死它們。殺死他們的同時(shí)還可以獲 得各種獎(jiǎng)勵(lì),加生命,加血等,增加了游戲的趣味性。 如圖 2 所示: 圖 2游戲截圖 這款冒險(xiǎn)島游戲的實(shí)現(xiàn)相對(duì)于其他 rp

27、g 或者網(wǎng)絡(luò)版手機(jī)游戲稍簡(jiǎn)單一 些,適合初學(xué)者作為練習(xí),所以我決定編寫一款類似的手機(jī)游戲。 由于之前對(duì)手機(jī)游戲的編程知識(shí)以及游戲的設(shè)計(jì)只有初步的了解,因此, 我們?cè)谟螒虻臉?gòu)架和思路上經(jīng)歷了幾個(gè)階段。 4.1.24.1.2 對(duì)游戲設(shè)計(jì)的初步認(rèn)識(shí)對(duì)游戲設(shè)計(jì)的初步認(rèn)識(shí) 剛開始我們只對(duì) j2me 有初步的了解。這時(shí)我們只是模仿之前在 pc 上看到 的游戲,用語(yǔ)言把游戲的實(shí)現(xiàn)感性的描述為幾大部分: 游戲界面系統(tǒng):包括游戲開始界面;游戲開局界面;游戲運(yùn)行界面;游戲 結(jié)束界面。 游戲元素:菜單類;畫布類;人物類;排行榜類。 4.1.34.1.3 模塊成型階段模塊成型階段 在進(jìn)一步熟悉了 j2me 知識(shí)后,對(duì)

28、框架做出了一些修改,逐步把游戲的基本 功能確定。游戲依次進(jìn)入加載界面;主菜單;游戲運(yùn)行界面;游戲結(jié)束界面。 具體實(shí)現(xiàn)的功能為: 1主菜單,有如下選項(xiàng): (1)開始游戲進(jìn)入游戲界面。 (2)聲音設(shè)置聲音的有無(wú)選項(xiàng)。 (3)幫助介紹游戲的玩法。 (4)排行榜玩家所得分?jǐn)?shù)的排行榜。 (5)關(guān)于用來(lái)顯示說(shuō)明信息以及背景圖片。 2游戲運(yùn)行界面,包括: 游戲界面;目前游戲得分;游戲關(guān)數(shù);生命次數(shù); 3游戲結(jié)束界面:游戲結(jié)束后,顯示一行說(shuō)明信息,然后退回到菜單。 游戲的主要模塊為: 1游戲主 midlet(gamemidlet)對(duì)游戲生命周期的判斷;對(duì)畫布類 的調(diào)用;管理游戲程序中各個(gè)屏幕之間的轉(zhuǎn)換。 2游

29、戲畫布(mygame)對(duì)游戲所用變量,常量的設(shè)定;游戲的初始化; 游戲中精靈運(yùn)動(dòng)軌跡的控制;精靈與磚塊的碰撞檢測(cè)以及磚塊狀態(tài)的控制;游 戲中各關(guān)卡的基本設(shè)定;游戲中對(duì)按鍵狀態(tài)的處理。 3菜單類游戲中菜單事件的處理。 4gameogre 類游戲中怪物的類。 5gameplayer 類玩家控制的精靈類。 6gamerms 類用于實(shí)現(xiàn)分?jǐn)?shù)排行榜。 7playmusic 類用于實(shí)現(xiàn)音樂(lè)的播放。 8myset 類聲音大小的設(shè)置。 4.24.2 程序的類結(jié)構(gòu)程序的類結(jié)構(gòu) 程序一共有 8 個(gè)主要類,其中菜單類負(fù)責(zé)各個(gè)屏幕的切換。程序的類結(jié)構(gòu) 如圖 3 所示: 圖 3 類結(jié)構(gòu) 4.34.3 游戲的流程圖游戲的

30、流程圖 進(jìn)入游戲菜單。初始情況下,游戲菜單有 5 個(gè)選項(xiàng),它們分別是開始游戲、 游戲說(shuō)明和排行榜、設(shè)置、關(guān)于。選擇開始新游戲則進(jìn)入游戲,在游戲中如果 按下非游戲鍵則中斷游戲返回菜單,此時(shí)菜單中增加了一個(gè)繼續(xù)游戲的選項(xiàng), playmusic gameogre gamemidlet :midlet mymenu mygamegamermsmyset myhelp 可以返回游戲也可以重新開始新的游戲。在菜單中選擇游戲說(shuō)明或者高分記錄, 則進(jìn)入相應(yīng)的屏幕,他們都能用“后退”軟鍵返回菜單。菜單中的退出選項(xiàng)用 于退出程序。游戲的流程如圖 4 所示: 圖 4 游戲的流程圖 4.44.4 游戲的實(shí)現(xiàn)游戲的實(shí)現(xiàn)

31、 游戲一共實(shí)現(xiàn)了幾個(gè)類,包括用于游戲外部的、菜單類、排行榜屏幕類、 聲音設(shè)置屏幕類、結(jié)束屏幕類,以及用于游戲本身的游戲畫布類、聲音效果類。 4.4.14.4.1 主類主類 gamemidletgamemidlet 的實(shí)現(xiàn)的實(shí)現(xiàn) midlet 是最核心的類。midlet 程序有三種狀態(tài): 1暫停狀態(tài) 2運(yùn)行狀態(tài) 3銷毀狀態(tài) j2me 程序都是從 midlet 類開始執(zhí)行,系統(tǒng)在執(zhí)行 midlet 程序時(shí),首先構(gòu) 造一個(gè) midlet 類型的對(duì)象,然后使程序進(jìn)入到暫停狀態(tài),按照生命周期的規(guī) 定,系統(tǒng)會(huì)自動(dòng)調(diào)用 midlet 對(duì)象的 startapp 方法使程序進(jìn)入到運(yùn)行狀態(tài),開 始程序的執(zhí)行。 菜

32、單 新游戲 說(shuō)明 排行榜 設(shè)置 關(guān)于 退出 游戲 說(shuō)明 back 排行榜 back 游戲分?jǐn)?shù) 設(shè)置 back 關(guān)于 back 下圖是運(yùn)行時(shí)顯示的畫布對(duì)象: 圖 5屏幕之間的切換 首先,先要?jiǎng)?chuàng)建 midlet 類型的對(duì)象,下面我們來(lái)看對(duì)象的構(gòu)造方法: /主程序構(gòu)造方法 public gamemidlet() rs = null; recordname = “gamerms”; gamemenu.display = display.getdisplay(this) ; gamemenu.midlet = this; 在這個(gè)構(gòu)造器中,創(chuàng)建了一個(gè) display 對(duì)象用于顯示,然后,把當(dāng)前程序 的引用

33、傳給菜單類中的靜態(tài)變量。 display 類有兩個(gè)最主要的作用: 1、 獲得屏幕的屬性。例如屏幕是否是彩色的,以及支持的顏色數(shù)量等信 息。 2、 控制屏幕的顯示。例如使屏幕顯示某個(gè)指定界面或者獲得當(dāng)前的顯示 界面等。 其中,特別是第二個(gè)作用使用的更加頻繁。 當(dāng)程序啟動(dòng)的時(shí)候,則調(diào)用了程序的 startapp 方法,用來(lái)顯示畫面: public void startapp() /程序開始,打開數(shù)據(jù)庫(kù),如果數(shù)據(jù)庫(kù)沒有數(shù)據(jù)就添加 10 筆空白數(shù)據(jù), 最后關(guān)閉數(shù)據(jù)庫(kù) try rs = recordstore.openrecordstore(recordname,true); catch (except

34、ion e) system.out.println(“創(chuàng)建數(shù)據(jù)庫(kù)失敗”); gamerms rd = new gamerms(“player”,0); byte tem = rd.encode(); try if(rs.getnumrecords()=0) for(int i=1;i=11;i+) try rs.addrecord(tem,0,tem.length); catch(exception e) system.out.println(“添加數(shù)據(jù)失敗”); catch (exception e1) system.out.println(“得到數(shù)據(jù)庫(kù)大小失敗”); try rs.clos

35、erecordstore(); catch(exception e) system.out.println(“關(guān)閉數(shù)據(jù)庫(kù)失敗”); /將畫面設(shè)為主畫面 main screen new thread(this).start(); 程序開始,打開數(shù)據(jù)庫(kù),如果數(shù)據(jù)庫(kù)沒有數(shù)據(jù)就添加 10 筆空白數(shù)據(jù),最后 關(guān)閉數(shù)據(jù)庫(kù),然后開始一個(gè)新的線程,啟動(dòng)菜單。 midp 中的存儲(chǔ)系統(tǒng)是實(shí)際為一個(gè)類似于數(shù)據(jù)庫(kù)的系統(tǒng),而并不是簡(jiǎn)單的文 件系統(tǒng),這個(gè)系統(tǒng)稱為記錄管理系統(tǒng)(record management system,rms) 。rms 實(shí)現(xiàn)數(shù)據(jù)的持久性管理,提供了數(shù)據(jù)存儲(chǔ)的功能,可以在程序下次啟動(dòng)是再次 使用。

36、記錄存儲(chǔ)是面向記錄的數(shù)據(jù)庫(kù),可把一個(gè)記錄存儲(chǔ)看作一個(gè)數(shù)據(jù)庫(kù)文件, 由許多記錄組合而成,這些記錄將持久保存并支持跨多個(gè) midlet 的請(qǐng)求。在系 統(tǒng)平臺(tái)的整個(gè)常規(guī)應(yīng)用期間,包括重啟,更換電池等,midlet 的記錄存儲(chǔ)都由 系統(tǒng)平臺(tái)負(fù)責(zé)維護(hù),系統(tǒng)會(huì)盡可能維持記錄的完整性。 當(dāng)調(diào)用 destroyapp 這個(gè)方法的時(shí)候,則退出程序。 public void destroyapp(boolean unconditional) exit(); public void exit() system.gc(); notifydestroyed(); 退出程序的時(shí)候,要實(shí)行垃圾回收,釋放掉不再使用的內(nèi)存。

37、2屏幕切換,如圖 6: 圖 6屏幕切換 菜單的圖形切換采用的是流程控制器,非常方便,簡(jiǎn)潔的實(shí)現(xiàn)了屏幕畫面 的切換,下面是關(guān)鍵實(shí)現(xiàn)代碼: /導(dǎo)航器 /設(shè)置 4 個(gè)常量分別代表主畫面,游戲畫面,幫助畫面和排行榜畫面 final public static int my_menu = 1; final public static int my_game = 2; final public static int my_help = 3; final public static int my_rms = 4; final public static int my_about = 5; final pub

38、lic static int my_set = 6; 采用靜態(tài)變量來(lái)對(duì)畫面進(jìn)行標(biāo)識(shí)。 /流程執(zhí)行,獲得需要畫面的對(duì)象,并顯示在屏幕上 public static void show() switch(current) case my_menu: display.setcurrent(mymenu.getinstance(); break; case my_game: display.setcurrent(mygame.getinstance(); break; case my_set: display.setcurrent(myset.getinstance(); break; case my

39、_help: display.setcurrent(myhelp.getinstance(); break; case my_rms: display.setcurrent(myrms.getinstance(); break; case my_about: display.setcurrent(myabout.getinstance(); break; 這樣,采用上面這個(gè)函數(shù),非常方便的實(shí)現(xiàn)了流程的轉(zhuǎn)換。實(shí)現(xiàn)屏幕的切 換。 4.4.24.4.2 游戲畫布游戲畫布 mygamemygame 類的實(shí)現(xiàn)類的實(shí)現(xiàn) 在 j2me 游戲編程中,canvas 類是最常用的類之一,該類提供了獲得手機(jī) 屏幕屬

40、性、繪制界面以及事件處理等很多實(shí)用的功能。 canvas 類是 displayable 的子類,主要用來(lái)需要處理低級(jí)事件,例如鍵盤 按鍵事件等,以及需要繪制屏幕的程序。在實(shí)際的使用過(guò)程,一般都通過(guò)繼承 canvas 來(lái)利用該類提供的功能。canvas 類是一個(gè)抽象類,繼承該類的時(shí)候必須 覆蓋 paint 方法。 gamecanvas 類提供了基本的游戲用戶接口。除了從 canvas 繼承下來(lái)的特 性(命令,輸入事件等)以外,它還提供了專門針對(duì)游戲的功能,比如后備屏幕緩沖 和鍵盤狀態(tài)查詢的能力。這也是 gamecanvas 與 canvas 相比所具有的兩個(gè)優(yōu)點(diǎn). 來(lái)看游戲畫面: 當(dāng)流程控制器轉(zhuǎn)

41、到游戲運(yùn)行界面時(shí),則用到了游戲畫布 mygame 類。 下面是游戲截圖: 圖 7游戲截圖 下面來(lái)看類的聲明: public class mygame extends gamecanvas implements runnable 我們所用的畫布程序,正是繼承了 gamecanvas 這個(gè)類,同時(shí)派生了 runnable 接口,來(lái)實(shí)現(xiàn)生成一個(gè)新的線程的功能。 程序的 run 方法: public void run() long st = 0; long et = 0; graphics g = getgraphics(); for(stage = 2;stage = 4;stage+) flag

42、= true; g.setcolor(0,0,0); g.fillrect(0,0,getwidth(),getheight(); g.setcolor(255,255,0); g.setfont(font.getfont(font.face_proportional,font.style_bold,font.size_la rge); g.drawstring(“第 ” + (stage -1)+ “ 關(guān)”,getwidth()/2-30,getheight()/2- 10,graphics.top|graphics.left); flushgraphics(); try thread.sl

43、eep(1000); catch (interruptedexception e1) creat_stage(); /調(diào)用創(chuàng)建關(guān)卡的方法 try thread.sleep(500); catch (interruptedexception e1) mpaint(g); iskey = true; while(flag) /游戲正式開始 while(ispause) /判斷是否按下暫停 try thread.sleep(100); catch(exception e) st = system.currenttimemillis(); startgametime = system.currentt

44、imemillis(); input_key(); /調(diào)用按鍵方法 peng_zhuang(); /調(diào)用各種判斷和行動(dòng)的方法 movming(); /調(diào)用刷新畫面的方法 mpaint(g); et = system.currenttimemillis(); if(et-st) 0) gamename in = new gamename(); gamemenu.display.setcurrent(in); in.start(); else gamemenu.current = gamemenu.my_menu; gamemenu.show(); 在線程中,通過(guò) 1、調(diào)用創(chuàng)建關(guān)卡的方法 crea

45、t_stage(); 2、判斷是否按下暫停 while(ispause) 3、調(diào)用按鍵方法 input_key(); 4、調(diào)用各種判斷和行動(dòng)的方法 peng_zhuang(); 5、調(diào)用刷新畫面的方法 movming(); 6、判斷是否輸?shù)粲螒?if(isendgame) 7、判斷是否贏得游戲 if(isendgame) 來(lái)對(duì)游戲進(jìn)行不斷監(jiān)控。 4.4.34.4.3 玩家精靈玩家精靈 gameplayergameplayer 類的實(shí)現(xiàn)類的實(shí)現(xiàn) sprite 類是繼承自 layer 的用于存儲(chǔ)多幀的基本可視元素。不同的 frame 可交相顯示,構(gòu)成動(dòng)態(tài)的效果。圖片可翻轉(zhuǎn)、顛倒、由一個(gè)主角圖片就可

46、以方 便的得到所有方向的顯示狀態(tài),相比原先只能使用 canvas 繪圖,需要將所有方 向的主角圖像都繪制在 png 圖像中簡(jiǎn)化了許多。sprite 也可以從整合的圖像中 讀圖,讀圖時(shí)將把大圖分解為若干等寬等高的小圖。每個(gè)小圖按照其排列順序 有相應(yīng)的序號(hào),在程序中調(diào)用其序號(hào),就可以繪制出相應(yīng)的圖片。本程序中的 玩家、怪物都由 sprite 繼承得到。在有些情況下,控制主角的翻轉(zhuǎn),尤其是多 幅圖片配合顯示的過(guò)程,如果將多圖的共享定位點(diǎn)設(shè)置在通常的左上角,將很 不容易控制,因?yàn)樵S多翻轉(zhuǎn)都是以其他點(diǎn)為參考電的(比如,中心點(diǎn)) 。由此, 引入?yún)⒖键c(diǎn)的概念。參考點(diǎn)由 definereferencepixe

47、l 函數(shù)確定未翻轉(zhuǎn)圖片狀態(tài) 時(shí)的坐標(biāo)。默認(rèn)是(0,0)點(diǎn),如果需要,可將參考點(diǎn)設(shè)置在畫面邊界之外。 在本程序中,由于 j2me 中提供的 sprite 類功能有限,所以我自己寫了一 個(gè) gameplayer 類來(lái)繼承 sprite 類,擴(kuò)充了更多的功能。 public class gameplayer extends sprite 在游戲中和背景的碰撞檢測(cè)始終是個(gè)難點(diǎn),在本程序中是這樣實(shí)現(xiàn)的: public void ispeng(int x,int y,int array,int n) for(int i = 0; i 20; i+) for(int j = 0; j 18; j+) if(

48、arrayij = n) if (!mygame.isu) if( length * j = x + this.getwidth() /2 system.out.println(“up: ”+gety(); /左 if( length * j = x + 1 if( length * j = x + this.getwidth() 1 /左下 if( length * j = x + 3 /右下 if( length * j = x + this.getwidth() -3 length * i:+length * (i-1); 通過(guò)查看背景數(shù)組和玩家坐標(biāo),來(lái)實(shí)現(xiàn)和背景的碰撞檢測(cè)。 4.4.54.4.5 soundeffectssoundeffects 類的實(shí)現(xiàn)類的實(shí)現(xiàn) 聲音效果是一個(gè)游戲中必不可少的部分,沒有了生動(dòng)的音樂(lè)效果,游戲的 體驗(yàn)就會(huì)大打折扣。在我們的游戲中當(dāng)然也不能沒有聲音。 在我們的游戲程序中的 playmusic 類就是游戲中的音效類。該類的主要功 能為使用 midp2.0 media api 播放游戲中的聲音效果:背景音樂(lè)和游戲結(jié)束的 提示音。 我們用 private player createplayer(string filename, strin

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論