款手機(jī)游戲的開(kāi)發(fā)與測(cè)試_第1頁(yè)
款手機(jī)游戲的開(kāi)發(fā)與測(cè)試_第2頁(yè)
款手機(jī)游戲的開(kāi)發(fā)與測(cè)試_第3頁(yè)
款手機(jī)游戲的開(kāi)發(fā)與測(cè)試_第4頁(yè)
款手機(jī)游戲的開(kāi)發(fā)與測(cè)試_第5頁(yè)
已閱讀5頁(yè),還剩26頁(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)介

29/31HYPERLINK"/"《堡壘》手機(jī)游戲的開(kāi)發(fā)與測(cè)試摘要隨著手機(jī)業(yè)務(wù)的迅速進(jìn)展,手機(jī)游戲逐漸成為移動(dòng)增值服務(wù)的興奮點(diǎn)。本畢業(yè)設(shè)計(jì)就著眼于J2ME技術(shù)的應(yīng)用,設(shè)計(jì)與開(kāi)發(fā)一款探險(xiǎn)類手機(jī)游戲(堡壘)。該堡壘游戲是基于J2ME開(kāi)發(fā)的手機(jī)RPG游戲,采納midp2.0技術(shù)實(shí)現(xiàn)了菜單、地圖、主角動(dòng)作及怪物動(dòng)作和AI等,要緊通過(guò)精靈間的碰撞檢測(cè)來(lái)觸動(dòng)事件發(fā)生。游戲的主流程是玩家利用手機(jī)鍵盤操作主角在堡壘中拾取道具破解迷宮,同時(shí)隨著關(guān)數(shù)的增加,游戲的難度也逐漸增加。另外,游戲中還包括了排行榜,聲音設(shè)置,關(guān)心等各種附加功能。其中充滿了趣味性和刺激性,是適合各年齡段的益智冒險(xiǎn)類游戲。本論文介紹了J2ME的相關(guān)技術(shù)及該堡壘游戲程序的結(jié)構(gòu)分析和具體功能的實(shí)現(xiàn)。關(guān)鍵詞:J2ME;手機(jī)游戲;堡壘TheDesignandDevelopmentofaHandsetGame(Castle)AbstractWiththerapiddevelopmentofcellphonebusiness,cellphonegameshavegraduallybecomethehotspotofmobilevalue-addedservices.ThisgraduatedesignwhichfocusesonJ2MEtechnologydesignsanddevelopsahandsetadventuregame(castle).ThiscastlegameisahandsetRPGgamebasedonJ2MEwhichmainlyexaminesthedemon’scollisiontotouchofftheevent.Itusesmidp2.0technologytoachievethemenu,themap,theheromoves,monsterAIetc.Thegamehasincludedtheorderlist,thesoundestablishment,helpsoffunctionetc.Playeroperatestheleadthroughthehandsettocollectthestagepropinthecastletobreakthroughthelabyrinth.Thedifficultyofthegamewillgraduallyincreasealongwiththeincreaseofstage.Otherwise,thisintelligenceandriskgameisfilledwithenjoymentandtheirritatingqualitywitchsuitsmanyages.ThispaperintroducesrelatedtechnologyoftheJ2MEandthestructureanalysisandtheconcretefunctionrealizationofthiscastlegameprocedure.Keywords:J2ME;handsetgame;castle

目錄論文總頁(yè)數(shù):23頁(yè)TOC\o"1-3"\h\z\u1引言 12手機(jī)游戲的現(xiàn)狀和J2ME的概況 12.1軟件現(xiàn)狀 12.2J2ME概況 22.2.1J2ME的由來(lái) 22.2.2J2ME的3層體系結(jié)構(gòu)及MIDP簡(jiǎn)介 22.2.3Configuration和Profiles 32.3J2ME現(xiàn)狀和前景 42.4手機(jī)游戲業(yè)務(wù) 53開(kāi)發(fā)環(huán)境介紹 53.1開(kāi)發(fā)環(huán)境 53.2關(guān)于SonyEricssonWirelessToolKit 54手機(jī)游戲(堡壘)的開(kāi)發(fā) 54.1游戲的的思路、構(gòu)想 54.1.1游戲方法的產(chǎn)生 54.1.2對(duì)游戲設(shè)計(jì)的初步認(rèn)識(shí) 64.1.3模塊成型時(shí)期 64.2程序的類結(jié)構(gòu) 74.3游戲的流程圖 74.4游戲的實(shí)現(xiàn) 84.4.1主類GameMIDlet的實(shí)現(xiàn) 84.4.2游戲畫布MyGame類的實(shí)現(xiàn) 134.4.3玩家精靈GamePlayer類的實(shí)現(xiàn) 174.4.5SoundEffects類的實(shí)現(xiàn) 195程序設(shè)計(jì)過(guò)程中遇到的一些重要問(wèn)題 195.1關(guān)于碰撞的問(wèn)題 195.2關(guān)于游戲畫面的顯示問(wèn)題 20結(jié)論 20參考文獻(xiàn) 201引言Java語(yǔ)言是美國(guó)SunMicrosystem的JamesGosling、PratrickNaughton及MikeSheridan等人于1991年精心設(shè)計(jì)出來(lái)的計(jì)算機(jī)編程語(yǔ)言,其構(gòu)想在于實(shí)現(xiàn)使用同一種編程語(yǔ)言所寫出來(lái)的程序能夠在不同的平臺(tái)上運(yùn)作。這種架構(gòu)關(guān)于消費(fèi)性電子產(chǎn)品而言是具有革命性的,因?yàn)樵谙M(fèi)性電子產(chǎn)品中的處理器及操作系統(tǒng)各不相同,要在這些平臺(tái)上開(kāi)發(fā)程序必須要了解各個(gè)平臺(tái)的特性,以及其提供的API使用方式,分不開(kāi)發(fā)不同的版本才能執(zhí)行,阻礙應(yīng)用程序的普及性。近幾年,由于微處理器性能的大幅提升,加上無(wú)線通訊技術(shù)的突破,手持式移動(dòng)設(shè)備開(kāi)始受到大眾的青睞。短短幾年內(nèi),手機(jī)差不多升級(jí)了幾代產(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ù)的進(jìn)展,推動(dòng)無(wú)線電子商務(wù)等業(yè)務(wù)的進(jìn)展,J2ME(Java2MicroEdition)既用于嵌入式系統(tǒng)的Java被引入無(wú)線領(lǐng)域。J2ME的出現(xiàn)實(shí)際上是Java技術(shù)的回歸。作為Java2平臺(tái)的一部分,J2ME與J2SE、J2EE一起,為無(wú)線應(yīng)用的客戶端和服務(wù)器端建立了完整的開(kāi)發(fā)、部署環(huán)境。隨著J2ME的應(yīng)用,它為移動(dòng)互聯(lián)引入了一種新的模型,既同意手機(jī)能夠從互聯(lián)網(wǎng)上下載各種應(yīng)用程序,并在手機(jī)制造可執(zhí)行環(huán)境離線運(yùn)行這些程序。由于定義了可執(zhí)行下載的標(biāo)準(zhǔn),并在手機(jī)上創(chuàng)立了可執(zhí)行環(huán)境和程序開(kāi)發(fā)語(yǔ)言,由此,在移動(dòng)通信業(yè)第一次為軟件開(kāi)發(fā)商制造了巨大的商業(yè)機(jī)會(huì),手機(jī)用戶在得到豐富應(yīng)用體驗(yàn)的同時(shí),也大大提高了運(yùn)營(yíng)商的網(wǎng)絡(luò)流量。2手機(jī)游戲的現(xiàn)狀和J2ME的概況2.1軟件現(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ī)存在以下弊端:1.傳統(tǒng)手機(jī)出廠時(shí)均由硬件廠商固化程序,程序不能增加、刪除,有了錯(cuò)誤也不能更新、修改,若要增加新功能必須另?yè)Q一部手機(jī)。2.傳統(tǒng)手機(jī)訪問(wèn)互聯(lián)網(wǎng)是通過(guò)WAP(WirelessApplicationProtocal),所有網(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)用開(kāi)發(fā)商能夠創(chuàng)建更為直覺(jué)、豐富的用戶界面(GUI);3.Java技術(shù)使網(wǎng)絡(luò)帶寬的應(yīng)用更為有效,因?yàn)閼?yīng)用程序能夠下載到器件上,并在本地運(yùn)行,僅僅是在連接到服務(wù)器時(shí)才會(huì)占用網(wǎng)絡(luò)帶寬。2.2J2ME概況2.2.1J2ME的由來(lái)Java的最大目標(biāo)和特點(diǎn),確實(shí)是“一次編寫,到處運(yùn)行”的平臺(tái)無(wú)關(guān)性。然而,一套標(biāo)準(zhǔn)無(wú)法適應(yīng)各種不同的需求。因此,Java技術(shù)目前共有三套,分不針對(duì)不同的平臺(tái)和應(yīng)用。StandardEdition(J2SE,標(biāo)準(zhǔn)版):針對(duì)桌面端PC和工作站的個(gè)人和低端商務(wù)應(yīng)用。EnterpriseEdition(J2EE,企業(yè)版):針對(duì)服務(wù)器端企業(yè)級(jí)應(yīng)用,支持Servlets,JSP和XML等等。MicroEdition(J2ME,袖珍版):針對(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,從沒(méi)有屏幕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)的劃分才能更好的理解和掌握J(rèn)2ME。2.2.2J2ME的3層體系結(jié)構(gòu)及MIDP簡(jiǎn)介J2ME的3層體系結(jié)構(gòu)依照各種設(shè)備的資源特性,將J2ME技術(shù)構(gòu)架分為簡(jiǎn)表(Profile)、配置(Configuration)和JavaVirtualMachine(JVM)3層,然后再進(jìn)一步細(xì)分,這使J2ME能夠在每一類設(shè)備的限制下工作,而同時(shí)提供最低限度的Java語(yǔ)言功能性。關(guān)于J2ME的體系結(jié)構(gòu),能夠如此來(lái)進(jìn)行總結(jié):Configuration的分類是依照計(jì)算能力的不同來(lái)劃分的,同類設(shè)備的計(jì)算能力相近。Configuration是一個(gè)規(guī)范,定義了這類設(shè)備的共同Java平臺(tái),定義與設(shè)備無(wú)關(guān)的Java虛擬機(jī)和核心庫(kù),是平臺(tái)相容性的基礎(chǔ)。Profile的分類是依照設(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)境需要一個(gè)Configuration和至少一個(gè)Profile,多個(gè)Profile能夠共存,也能夠疊加。MIDP(MobileInformationDeviceProfile)定義了針對(duì)移動(dòng)信息處理設(shè)備(要緊指智能手機(jī)和一部分具有無(wú)線通信功能的PDA)的圖形界面,輸入和時(shí)刻處理,持久性存儲(chǔ),無(wú)線電話網(wǎng)絡(luò)連接之上的一些消息處理(例如短消息),安全等等API,同時(shí)考慮到了移動(dòng)信息設(shè)備的屏幕和內(nèi)存限制。類似于J2SE中的Applet框架,MIDP提供了基于javax.microedition.midlet包的MIDlet應(yīng)用程序框架。因?yàn)镸IDP提出的比較早,目前重要的智能手機(jī)和PDA操作系統(tǒng)上都已有了相應(yīng)的實(shí)現(xiàn),而且應(yīng)用的也比較廣泛。2.2.3Configuration和Profiles針對(duì)消費(fèi)電子和嵌入式設(shè)備領(lǐng)域豐富多樣的設(shè)備和彼此相差極大的計(jì)算能力及各種硬件條件,J2ME首先依照最差不多的一些特征把它們劃分為兩類。具備間斷網(wǎng)絡(luò)通訊能力的個(gè)人移動(dòng)信息設(shè)備:如手機(jī),雙向呼機(jī),PDA(PersonalDigitalAssistant,個(gè)人數(shù)字助理,也稱掌上電腦)等等。有固定的不間斷網(wǎng)絡(luò)連接的共享連接信息設(shè)備:如置頂盒(set-topboxes),Web-TV,支持Internet的有屏幕電話,汽車娛樂(lè)/導(dǎo)航系統(tǒng)等等。Sun對(duì)J2ME有一個(gè)專門好的概括:J2ME技術(shù)有兩個(gè)設(shè)計(jì)中心——手持的設(shè)備,和能夠插到墻上插座的設(shè)備。第一類設(shè)備往往是個(gè)人化的,移動(dòng)的,使用電池,體積和功耗都有限制,因此功能和計(jì)算能力有限。第二類設(shè)備一般是固定的,因此體積沒(méi)有太大限制。由于固定,能夠有持續(xù)電源供應(yīng),因此功耗沒(méi)有太大問(wèn)題,計(jì)算能力相對(duì)充裕。計(jì)算能力是這兩類設(shè)備的要緊區(qū)不,對(duì)其上可能的應(yīng)用和環(huán)境顯然有著本質(zhì)阻礙,不同類不的設(shè)備不可能采納同樣的Java平臺(tái),必須分不定義。針對(duì)這兩大類設(shè)備的平臺(tái)規(guī)范確實(shí)是Configuration。第一類設(shè)備的Configuration稱為CLDC(Connected,LimitedDeviceConfiguration),第二類稱為CDC(ConnectedDeviceConfiguration)。屬于同一類的設(shè)備計(jì)算能力是相似的,然而其他功能和條件還有特不大的區(qū)不。作為Java平臺(tái)必須保證相容性,這就必須舍棄所有的設(shè)備專門性。因此,Configuration確實(shí)是支持一組通用設(shè)備的最小Java平臺(tái),作為這些設(shè)備的最小公分母來(lái)保證不同設(shè)備間的平臺(tái)相容性。那個(gè)地點(diǎn)的Java平臺(tái)要緊是指Java虛擬機(jī)(JVM)和核心庫(kù)。在Configuration中舍棄了設(shè)備的專門性來(lái)保證Java平臺(tái)的相容性,然而僅僅有Configuration顯然是不夠的,專門的具體設(shè)備其獨(dú)有的功能和硬件條件都沒(méi)有得到支持。為此,在Configuration的基礎(chǔ)上,依照設(shè)備具體功能再進(jìn)行一次劃分,比如智能手機(jī),PDA等等。功能的劃分也確實(shí)是其他硬件條件的劃分,比如屏幕大小,內(nèi)存,計(jì)算能力,電力供應(yīng)等等差不多上從屬于功能的,因此同功能的設(shè)備的硬件條件差不多上特不相似的。Profile(譯為簡(jiǎn)表或者簡(jiǎn)檔)確實(shí)是針對(duì)每一類功能設(shè)備的專門性定義的與設(shè)備特性相關(guān)的API,建筑于Configuration之上,作為Configuration的擴(kuò)展和補(bǔ)充。例如MIDP(MobileInformationDeviceProfile,移動(dòng)信息設(shè)備Profile)就定義了關(guān)于移動(dòng)信息設(shè)備(要緊指智能手機(jī)和一部分具有無(wú)線通信功能的PDA)的圖形界面,輸入和時(shí)刻處理,持久性存儲(chǔ),短消息等等的API,同時(shí)考慮到了移動(dòng)信息設(shè)備的屏幕和內(nèi)存限制。而正在制定中的PDAProfile則定義了針對(duì)PDA的API,其屏幕,內(nèi)存條件都要大于MIDP,然而網(wǎng)絡(luò)方面的要求則顯然和手機(jī)有所不同。如下圖所示,同屬于Configuration的設(shè)備依照功能不同由不同的Profile來(lái)支持,Profile體現(xiàn)設(shè)備的專門性,然而都建筑在一個(gè)共同的基礎(chǔ)Configuration平臺(tái)之上。2.3J2ME現(xiàn)狀和前景J2ME差不多廣泛的應(yīng)用在了專門多的移動(dòng)設(shè)備上,專門多的移動(dòng)設(shè)備都實(shí)現(xiàn)MIDP的參考實(shí)現(xiàn),但不同的移動(dòng)設(shè)備依舊有一些不同的地點(diǎn),比如應(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上差不多實(shí)現(xiàn)了CDC,IBM的WebSphereMicroEnvironment在PocketPC上實(shí)現(xiàn)了CLDC,CDC和MIDP??梢?jiàn),在硬件條件較好的PDA上都能夠?qū)崿F(xiàn)CDC的標(biāo)準(zhǔn)。由于這些要緊操作系統(tǒng)平臺(tái)差不多上開(kā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)。因此講J2ME的依舊在快速的進(jìn)展的。2.4手機(jī)游戲業(yè)務(wù)手機(jī)游戲是移動(dòng)多媒體時(shí)代最有價(jià)值的應(yīng)用。這是因?yàn)?,游戲是多媒體應(yīng)用中集大成的業(yè)務(wù),圖像、音樂(lè)、互動(dòng)都能在游戲中實(shí)現(xiàn),能充分滿足用戶各方面的需求。盡管目前手機(jī)游戲還無(wú)法與PC游戲相比,其顯示功能和鍵盤輸入、聲音處理能力也形成一定制約。然而隨時(shí)隨地可操作可聯(lián)網(wǎng)的特性大大拓展了人們娛樂(lè)休閑的時(shí)刻和空間,以游戲功能為主的手機(jī)終端在市場(chǎng)上漸被認(rèn)可,多媒體功能正向手機(jī)的標(biāo)配功能演進(jìn),制約手機(jī)游戲進(jìn)展的技術(shù)瓶頸將被打破。當(dāng)前的手機(jī)游戲產(chǎn)業(yè)盡管仍然存在專門多制約其進(jìn)展的瓶頸,但手機(jī)游戲已顯示出非比平常的進(jìn)展速度,其市場(chǎng)潛力十分巨大,將成為移動(dòng)增值服務(wù)市場(chǎng)新的增長(zhǎng)點(diǎn)。3開(kāi)發(fā)環(huán)境介紹3.1開(kāi)發(fā)環(huán)境操作系統(tǒng):MicrosoftWindowsXP程序語(yǔ)言:Java2開(kāi)發(fā)平臺(tái):Java2MicroEdition開(kāi)發(fā)工具:WirelessToolKit2.1+UltraEdit-32_12.00a+1_SC3.2關(guān)于SonyEricssonWirelessToolKitSonyEricssonWTK(WirelessToolKit)是SonyEricsson公司針對(duì)J2ME推出的用于手機(jī)和Palm等移動(dòng)設(shè)備的開(kāi)發(fā)包,是手機(jī)廠商的專用開(kāi)發(fā)包。它通用性高,開(kāi)發(fā)出的應(yīng)用程序可保證能運(yùn)行在大部分設(shè)備上,而不像專用廠商具有一定的不兼容性。盡管它沒(méi)有強(qiáng)大的功能和完善的調(diào)試手段,但它提供運(yùn)行模擬器的最差不多組件,是其他IDE需集成采納的必備元素。當(dāng)前的最新Release的版本為J2MEWTK2.2。4手機(jī)游戲(堡壘)的開(kāi)發(fā)4.1游戲的的思路、構(gòu)想4.1.1游戲方法的產(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)相關(guān)于其他RPG或者網(wǎng)絡(luò)版手機(jī)游戲稍簡(jiǎn)單一些,適合初學(xué)者作為練習(xí),因此我決定編寫一款類似的手機(jī)游戲。由于之前對(duì)手機(jī)游戲的編程知識(shí)以及游戲的設(shè)計(jì)只有初步的了解,因此,我們?cè)谟螒虻臉?gòu)架和思路上經(jīng)歷了幾個(gè)時(shí)期。4.1.2對(duì)游戲設(shè)計(jì)的初步認(rèn)識(shí)剛開(kāi)始我們只對(duì)J2ME有初步的了解。這時(shí)我們只是模仿之前在PC上看到的游戲,用語(yǔ)言把游戲的實(shí)現(xiàn)感性的描述為幾大部分:游戲界面系統(tǒng):包括游戲開(kāi)始界面;游戲開(kāi)局界面;游戲運(yùn)行界面;游戲結(jié)束界面。游戲元素:菜單類;畫布類;人物類;排行榜類。4.1.3模塊成型時(shí)期在進(jìn)一步熟悉了J2ME知識(shí)后,對(duì)框架做出了一些修改,逐步把游戲的差不多功能確定。游戲依次進(jìn)入加載界面;主菜單;游戲運(yùn)行界面;游戲結(jié)束界面。具體實(shí)現(xiàn)的功能為:1.主菜單,有如下選項(xiàng):(1)開(kāi)始游戲——進(jìn)入游戲界面。(2)聲音——設(shè)置聲音的有無(wú)選項(xiàng)。(3)關(guān)心——介紹游戲的玩法。(4)排行榜——玩家所得分?jǐn)?shù)的排行榜。(5)關(guān)于——用來(lái)顯示講明信息以及背景圖片。2.游戲運(yùn)行界面,包括:游戲界面;目前游戲得分;游戲關(guān)數(shù);生命次數(shù);3.游戲結(jié)束界面:游戲結(jié)束后,顯示一行講明信息,然后退回到菜單。游戲的要緊模塊為:1.游戲主MIDlet(GameMIDlet)——對(duì)游戲生命周期的推斷;對(duì)畫布類的調(diào)用;治理游戲程序中各個(gè)屏幕之間的轉(zhuǎn)換。2.游戲畫布(MyGame)——對(duì)游戲所用變量,常量的設(shè)定;游戲的初始化;游戲中精靈運(yùn)動(dòng)軌跡的操縱;精靈與磚塊的碰撞檢測(cè)以及磚塊狀態(tài)的操縱;游戲中各關(guān)卡的差不多設(shè)定;游戲中對(duì)按鍵狀態(tài)的處理。3.菜單類——游戲中菜單事件的處理。4.GameOgre類——游戲中怪物的類。5.GamePlayer類——玩家操縱的精靈類。6.GameRMS類——用于實(shí)現(xiàn)分?jǐn)?shù)排行榜。7.PlayMusic類——用于實(shí)現(xiàn)音樂(lè)的播放。8.MySet類——聲音大小的設(shè)置。4.2程序的類結(jié)構(gòu)程序一共有8個(gè)要緊類,其中菜單類負(fù)責(zé)各個(gè)屏幕的切換。程序的類結(jié)構(gòu)如圖3所示:PlayMusicPlayMusicGameMIDlet:MIDletGameMIDlet:MIDletGameOgreMymenuMymenuMyhelpMySetGameRMSMyGameMyhelpMySetGameRMSMyGame圖3類結(jié)構(gòu)4.3游戲的流程圖進(jìn)入游戲菜單。初始情況下,游戲菜單有5個(gè)選項(xiàng),它們分不是開(kāi)始游戲、游戲講明和排行榜、設(shè)置、關(guān)于。選擇開(kāi)始新游戲則進(jìn)入游戲,在游戲中假如按下非游戲鍵則中斷游戲返回菜單,現(xiàn)在菜單中增加了一個(gè)接著游戲的選項(xiàng),能夠返回游戲也能夠重新開(kāi)始新的游戲。在菜單中選擇游戲講明或者高分記錄,則進(jìn)入相應(yīng)的屏幕,他們都能用“后退”軟鍵返回菜單。菜單中的退出選項(xiàng)用于退出程序。游戲的流程如圖4所示:菜單菜單新游戲新游戲講明排行榜設(shè)置關(guān)于退出退出關(guān)于Back設(shè)置Back排行榜Back講明Back游戲 關(guān)于Back設(shè)置Back排行榜Back講明Back游戲 游戲分?jǐn)?shù)游戲分?jǐn)?shù) 圖4游戲的流程圖4.4游戲的實(shí)現(xiàn)游戲一共實(shí)現(xiàn)了幾個(gè)類,包括用于游戲外部的、菜單類、排行榜屏幕類、聲音設(shè)置屏幕類、結(jié)束屏幕類,以及用于游戲本身的游戲畫布類、聲音效果類。4.4.1主類GameMIDlet的實(shí)現(xiàn)4.4.2游戲畫布MyGame類的實(shí)現(xiàn)在J2ME游戲編程中,Canvas類是最常用的類之一,該類提供了獲得手機(jī)屏幕屬性、繪制界面以及事件處理等專門多有用的功能。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)到游戲運(yùn)行界面時(shí),則用到了游戲畫布MyGame類。下面是游戲截圖:圖7游戲截圖下面來(lái)看類的聲明:publicclassMyGameextendsGameCanvasimplementsRunnable{}我們所用的畫布程序,正是繼承了GameCanvas那個(gè)類,同時(shí)派生了Runnable接口,來(lái)實(shí)現(xiàn)生成一個(gè)新的線程的功能。程序的run方法:publicvoidrun() { longst=0;longet=0;Graphicsg=getGraphics();for(stage=2;stage<=4;stage++){ flag=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_LARGE));g.drawString(“第”+(stage-1)+“關(guān)”,getWidth()/2-30,getHeight()/2-10,Graphics.TOP|Graphics.LEFT); flushGraphics(); try{Thread.sleep(1000);}catch(InterruptedExceptione1){} CREAT_STAGE();// 調(diào)用創(chuàng)建關(guān)卡的方法 try{Thread.sleep(500);} catch(InterruptedExceptione1){} mpaint(g); isKey=true; while(flag)//游戲正式開(kāi)始 { while(ispause)//推斷是否按下暫停 { try{Thread.sleep(100);} catch(Exceptione){} } st=System.currentTimeMillis(); StartGameTime=System.currentTimeMillis(); INPUT_KEY();//調(diào)用按鍵方法 PENG_ZHUANG();//調(diào)用各種推斷和行動(dòng)的方法 movMing();//調(diào)用刷新畫面的方法 mpaint(g); et=System.currentTimeMillis(); if((et-st)<rest) {try{Thread.sleep(rest-(et-st));}catch(Exceptione){} }} if(isEndGame)//推斷是否輸?shù)粲螒?{ if(islose) { EedGameTime=System.currentTimeMillis(); 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_PLAIN,Font.SIZE_LARGE)); g.drawString(“你失敗了!”,getWidth()/2-40,getHeight()/2-20,Graphics.TOP|Graphics.LEFT); flushGraphics(); try{Thread.sleep(3000);}catch(Exceptione){}// init_Game(); break; }}}if(isEndGame)//推斷是否贏得游戲{ if(!islose) { EedGameTime=System.currentTimeMillis(); 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_PLAIN,Font.SIZE_LARGE)); g.drawString(“你勝利了!”,getWidth()/2-40,getHeight()/2-20,Graphics.TOP|Graphics.LEFT); flushGraphics(); try{Thread.sleep(3000);}catch(Exceptione){}// init_Game(); }// GetScore(); if(score>0) { GameNamein=newGameName(); GameMenu.display.setCurrent(in); in.start(); } else { GameMenu.current=GameMenu.MY_MENU; GameMenu.show(); }}}}在線程中,通過(guò) 1、調(diào)用創(chuàng)建關(guān)卡的方法CREAT_STAGE();2、推斷是否按下暫停while(ispause)3、調(diào)用按鍵方法INPUT_KEY();4、調(diào)用各種推斷和行動(dòng)的方法PENG_ZHUANG();5、調(diào)用刷新畫面的方法movMing();6、推斷是否輸?shù)粲螒騣f(isEndGame)7、推斷是否贏得游戲if(isEndGame)來(lái)對(duì)游戲進(jìn)行不斷監(jiān)控。4.4.3玩家精靈GamePlayer類的實(shí)現(xiàn)Sprite類是繼承自Layer的用于存儲(chǔ)多幀的差不多可視元素。不同的frame可交相顯示,構(gòu)成動(dòng)態(tài)的效果。圖片可翻轉(zhuǎn)、顛倒、由一個(gè)主角圖片就能夠方便的得到所有方向的顯示狀態(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)由defineReferencePixel函數(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ò)充了更多的功能。publicclassGamePlayerextendsSprite{}在游戲中和背景的碰撞檢測(cè)始終是個(gè)難點(diǎn),在本程序中是如此實(shí)現(xiàn)的:publicvoidisPeng(intx,inty,intArray[][],intN){for(inti=0;i<20;i++){ for(intj=0;j<18;j++) { if(Array[i][j]==N) { if(!MyGame.isU) { if(Length*j<=x+this.getWidth()/2&&Length*(j+1)>=x+this.getWidth()/2&&10+Length*i<=y&&10+Length*(i+1)>=y) { this.setPosition(this.getX(),20+Length*(i+1)); System.out.println(“UP:”+getY()); }//左 if(Length*j<=x+1&&Length*(j+1)>=x+1&&10+Length*i<=y+this.getHeight()/2&&10+Length*(i+1)>=y+this.getHeight()/2) { this.setPosition(Length*(j+1),this.getY()); } if(Length*j<=x+this.getWidth()-1&&Length*(j+1)>=x+this.getWidth()–1&&10+Length*i<=y+this.getHeight()/2&&10+Length*(i+1)>=y+this.getHeight()/2) { this.setPosition(Length*j-this.getWidth(),this.getY());} } //左下 if(Length*j<=x+3&&Length*(j+1)>=x+3&&10+Length*i<=y+this.getHeight()&&10+Length*(i+1)>=y+this.getHeight()) { this.setPosition(this.getX(),Length*(i-1));} //右下 if(Length*j<=x+this.getWidth()-3&&Length*(j+1)>=x+this.getWidth()-3&&10+Length*i<=y+this.getHeight()&&10+Length*(i+1)>=y+this.getHeight()) {this.setPosition(this.getX(),Length*(i-1));Length*i:+Length*(i-1)); } } } 通過(guò)查看背景數(shù)組和玩家坐標(biāo),來(lái)實(shí)現(xiàn)和背景的碰撞檢測(cè)。4.4.5SoundEffects類的實(shí)現(xiàn)聲音效果是一個(gè)游戲中必不可少的部分,沒(méi)有了生動(dòng)的音樂(lè)效果,游戲的體驗(yàn)就會(huì)大打折扣。在我們的游戲中因此也不能沒(méi)有聲音。在我們的游戲程序中的PlayMusic類確實(shí)是游戲中的音效類。該類的要緊功能為使用MIDP2.0MediaAPI播放游戲中的聲音效果:背景音樂(lè)和游戲結(jié)束的提示音。我們用privatePlayerc

溫馨提示

  • 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)論