基于JAVA ME無(wú)線網(wǎng)絡(luò)移動(dòng)端的俄羅斯方塊游戲的實(shí)現(xiàn)—計(jì)算機(jī)畢業(yè)設(shè)計(jì)(論文)_第1頁(yè)
基于JAVA ME無(wú)線網(wǎng)絡(luò)移動(dòng)端的俄羅斯方塊游戲的實(shí)現(xiàn)—計(jì)算機(jī)畢業(yè)設(shè)計(jì)(論文)_第2頁(yè)
基于JAVA ME無(wú)線網(wǎng)絡(luò)移動(dòng)端的俄羅斯方塊游戲的實(shí)現(xiàn)—計(jì)算機(jī)畢業(yè)設(shè)計(jì)(論文)_第3頁(yè)
基于JAVA ME無(wú)線網(wǎng)絡(luò)移動(dòng)端的俄羅斯方塊游戲的實(shí)現(xiàn)—計(jì)算機(jī)畢業(yè)設(shè)計(jì)(論文)_第4頁(yè)
基于JAVA ME無(wú)線網(wǎng)絡(luò)移動(dòng)端的俄羅斯方塊游戲的實(shí)現(xiàn)—計(jì)算機(jī)畢業(yè)設(shè)計(jì)(論文)_第5頁(yè)
已閱讀5頁(yè),還剩32頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

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

文檔簡(jiǎn)介

1、畢業(yè)設(shè)計(jì)(論文)基于Java ME無(wú)線網(wǎng)絡(luò)移動(dòng)端的俄羅斯方塊游戲的實(shí)現(xiàn)論文作者姓名:申請(qǐng)學(xué)位專業(yè):申請(qǐng)學(xué)位類別:指導(dǎo)教師姓名(職稱):論文提交日期:第 II 頁(yè) 共 26 頁(yè)基于Java ME無(wú)線網(wǎng)絡(luò)移動(dòng)端的俄羅斯方塊游戲的實(shí)現(xiàn)摘 要本系統(tǒng)是一個(gè)基于Java ME平臺(tái)的無(wú)線網(wǎng)絡(luò)移動(dòng)端的俄羅斯方塊游戲,利用Java ME Wireless Toolkit(WTK)開(kāi)發(fā)包工具在無(wú)線網(wǎng)絡(luò)移動(dòng)端上實(shí)現(xiàn)經(jīng)典的俄羅斯方塊游戲。論文開(kāi)始部分對(duì)無(wú)線網(wǎng)絡(luò)移動(dòng)系統(tǒng)開(kāi)發(fā)中常使用幾種開(kāi)發(fā)語(yǔ)言和環(huán)境作了比較,說(shuō)明了選擇Java ME Wireless Toolkit作為開(kāi)發(fā)環(huán)境的的原因并對(duì)它作了相關(guān)的介紹。并展示了在W

2、TK中打開(kāi)一個(gè)項(xiàng)目、把源文件打包成JAR包、產(chǎn)生混淆包的方法和過(guò)程。在系統(tǒng)設(shè)計(jì)時(shí),遵循了無(wú)線網(wǎng)絡(luò)移動(dòng)端程序的startApp、pauseApp、destroyApp的開(kāi)發(fā)生命周期。在設(shè)計(jì)與實(shí)現(xiàn)方面,分成難度選擇、游戲規(guī)則、方塊處理這幾個(gè)模塊進(jìn)行實(shí)現(xiàn)。在開(kāi)發(fā)與實(shí)現(xiàn)的同時(shí)也講解了俄羅斯方塊這款古老而經(jīng)典游戲的游戲背景、規(guī)則以及相關(guān)特性。最終展示了無(wú)線網(wǎng)絡(luò)移動(dòng)端的游戲開(kāi)發(fā)的基本開(kāi)發(fā)過(guò)程和設(shè)計(jì)思路。關(guān)鍵詞:無(wú)線網(wǎng)絡(luò)移動(dòng)端;Java ME;俄羅斯方塊;游戲開(kāi)發(fā)Realization of the TETRIS Game Based On Mobile Platform of Java ME Wirele

3、ss NetworkAbstractPuzzle games are a pretty interesting type of game to create for Java ME. TETRIS is a great example of a mix of puzzle and action. TETRIS is one of the few games that achieve ultimate popularity. It is remarkably simple, yet remarkably difficult. The system is a TETRIS which is bas

4、ed on the platform of Java ME mobile wireless, applying Java ME Wireless Toolkit (WTK) to achieve using TETRIS in simulator. This article offers a brief introduction about the development of Java ME Wireless Toolkit. The design and the development are including three parts: TETRISs rules, the select

5、ing of difficulty and the disposing of pieces. In the process of development and implementation, the article also interprets the TETRIS's rules and TETRISs characters to show all the process of the development and design.Key words: wireless network UE; Java ME; TETRIS; game development 目 錄論文總頁(yè)數(shù):

6、25頁(yè)1.引言11.1系統(tǒng)綜述11.2Java ME游戲開(kāi)發(fā)背景11.3無(wú)線網(wǎng)絡(luò)移動(dòng)端游戲發(fā)展現(xiàn)狀12開(kāi)發(fā)環(huán)境介紹22.1編程環(huán)境的選擇22.2Java ME Wireless Toolkit(WTK)簡(jiǎn)介42.3Java ME Wireless Toolkit(WTK)開(kāi)發(fā)環(huán)境的簡(jiǎn)介53游戲設(shè)計(jì)73.1俄羅斯方塊游戲的背景73.2俄羅斯方塊游戲的規(guī)則73.3俄羅斯方塊游戲的特性74游戲系統(tǒng)分析設(shè)計(jì)84.1系統(tǒng)解決方案84.2系統(tǒng)總體結(jié)構(gòu)84.2.1難度選擇模塊94.2.2方塊處理模塊94.2.3游戲規(guī)則模塊94.3游戲中斷處理流程105系統(tǒng)實(shí)現(xiàn)與測(cè)試105.1系統(tǒng)源文件結(jié)構(gòu)105.2難度選擇

7、模塊115.2.1難度選擇模塊結(jié)構(gòu)115.2.2難度選擇模塊功能125.3游戲規(guī)則模塊功能145.3.1游戲規(guī)則模塊結(jié)構(gòu)145.3.2游戲規(guī)則模塊功能155.4方塊處理模塊175.4.1方塊處理模塊結(jié)構(gòu)175.4.2方塊處理模塊功能20結(jié) 論23參考文獻(xiàn)23致 謝23聲 明251. 引言1.1 系統(tǒng)綜述綜合運(yùn)用以前所學(xué)專業(yè)知識(shí),在Java ME開(kāi)發(fā)平臺(tái)上實(shí)現(xiàn)無(wú)線網(wǎng)絡(luò)移動(dòng)端的俄羅斯方塊游戲。其研究主要包括以下內(nèi)容:第一,克服有限的可視屏幕尺寸,使游戲正常顯示;第二,解決有限的可用內(nèi)存調(diào)用問(wèn)題,實(shí)現(xiàn)游戲流暢運(yùn)行;第三,俄羅斯方塊游戲規(guī)則算法在Java ME平臺(tái)的實(shí)現(xiàn),保證游戲可玩性;第四,游戲開(kāi)始

8、、結(jié)束等邏輯在游戲進(jìn)行中的判斷。本系統(tǒng)在Windows XP的操作系統(tǒng)下,Java Micro Edition Wireless Toolkit 2.1為開(kāi)發(fā)工具,用中文版UltraEdit做為代碼編輯器而實(shí)現(xiàn)的。1.2 Java ME游戲開(kāi)發(fā)背景游戲開(kāi)發(fā)是藝術(shù)與編程技術(shù)相結(jié)合的完美表現(xiàn)。利用Java的“Write once,run anywhere”特性,可以真正達(dá)到程序只寫(xiě)一次,在任何平臺(tái)都可以執(zhí)行。同時(shí)Java語(yǔ)言對(duì)面向?qū)ο蟮牧己弥С?,使開(kāi)發(fā)具有高效性。所以Java ME(Java Micro Edition)是廣大無(wú)線網(wǎng)絡(luò)移動(dòng)端游戲開(kāi)發(fā)廠商和游戲開(kāi)發(fā)愛(ài)好者的首選平臺(tái)。1.3 無(wú)線網(wǎng)絡(luò)移

9、動(dòng)端游戲發(fā)展現(xiàn)狀縱觀IT產(chǎn)業(yè)的歷史,計(jì)算機(jī)游戲已經(jīng)成為技術(shù)創(chuàng)新背后的動(dòng)力之一。計(jì)算機(jī)游戲者渴望更加強(qiáng)大的硬件計(jì)算能力,渴望不受不同的軟件的限制無(wú)論是將圖形強(qiáng)制在人工智能(AI)上還是網(wǎng)絡(luò)安全性。而無(wú)線網(wǎng)絡(luò)移動(dòng)端游戲已成為IT產(chǎn)業(yè)中增長(zhǎng)最快的部分之一。無(wú)線網(wǎng)絡(luò)移動(dòng)端是一個(gè)嶄新的游戲開(kāi)發(fā)平臺(tái)。在眾多種類的游戲當(dāng)中,只有幾種游戲類型是適合開(kāi)發(fā)成無(wú)線網(wǎng)絡(luò)移動(dòng)端游戲的。低激烈程度的游戲;簡(jiǎn)單街機(jī)游戲;運(yùn)動(dòng)類“情景”游戲;簡(jiǎn)單的運(yùn)動(dòng)類游戲;解謎或簡(jiǎn)單的匹配游戲;主題測(cè)試游戲。在上面的游戲種類中,我選擇了經(jīng)典的方塊匹配游戲:俄羅斯方塊。俄羅斯方塊有著舉世聞名的游戲性且非常直觀。某些與墜落的玩具碎片和它們的形

10、狀有關(guān)的東西,使得哪怕新手也會(huì)很自然地企圖把它們排列起來(lái),并加以適當(dāng)組合,就好似俄羅斯方塊觸動(dòng)了玩家某些內(nèi)在的感官,使得哪怕是我們當(dāng)中最雜亂無(wú)章的人也要把事情整理妥當(dāng)。在操控性方面,只需方向鍵就可完成對(duì)游戲的全盤(pán)控制,這也適合無(wú)線網(wǎng)絡(luò)移動(dòng)端游戲的基本特性。俄羅斯方塊要比過(guò)去二十年間出現(xiàn)的任何東西都要浪費(fèi)人們的時(shí)間。它被GameSpot評(píng)選為歷史上最偉大游戲之一。它的起源實(shí)際上要追溯到八十年代中期,盡管它的人氣一直到幾年后才開(kāi)始顯露出來(lái)。游戲的概念十分簡(jiǎn)單,如今已經(jīng)成為一種公認(rèn)的規(guī)則:屏幕頂部以隨機(jī)順序落下形狀各異的碎塊,玩家要試圖用它們拼成沒(méi)有空隙的行列。玩家是沒(méi)法打贏它的,因?yàn)閳?jiān)持得時(shí)間越長(zhǎng)

11、,游戲速度也就變得越來(lái)越快,而游戲的吸引力就在于使玩家頂住碎塊的進(jìn)攻,支撐的時(shí)間比上一次更長(zhǎng)。俄羅斯方塊舉世聞名的游戲性,在該游戲新鮮出爐時(shí)就顯得非常直觀。某些與墜落的玩具碎片和它們的形狀有關(guān)的東西,使得哪怕新手也會(huì)很自然地企圖把它們排列起來(lái),并加以適當(dāng)組合,就好似俄羅斯方塊觸動(dòng)了玩家某些內(nèi)在的感官,使得哪怕是最雜亂無(wú)章的玩家也要把事情整理妥當(dāng)。2 開(kāi)發(fā)環(huán)境介紹2.1 編程環(huán)境的選擇目前,移動(dòng)開(kāi)發(fā)有以下四種主流平臺(tái)。Java Micro Edition(Java ME),Binary Runtime Environment for Wireless(BREW),Symbian和Window M

12、obile Smartphone。其中:Binary Runtime Environment for Wireless(BREW)BREW是基于高通公司的Code Division Multiple Acces(CDMA)技術(shù)的手機(jī)為開(kāi)發(fā)平臺(tái)。它使用C或C+結(jié)合BREW API來(lái)開(kāi)發(fā)BREW設(shè)備上面的程序。和Java ME一樣BREW能夠作為游戲和地磁手機(jī)操作系統(tǒng)之間的一個(gè)中介。和Java ME不同,BERW也支持本地代碼,能夠?qū)iT(mén)針對(duì)某一手機(jī)的處理器而編譯。本地代碼通常比對(duì)應(yīng)的解釋版本要快很多,但在設(shè)備之間移植會(huì)花費(fèi)很多技巧。在北美和亞洲有部分無(wú)限通信服務(wù)提供商。SymbianSymbian

13、是一種開(kāi)放的操作系統(tǒng),任何設(shè)備制造商都能獲得使用許可。Symbian支持C+、Java和Visual Basic等編程語(yǔ)言。但大多數(shù)商業(yè)Symbian游戲都是用C+開(kāi)發(fā)并作為本地Symbian應(yīng)用程序,這使得它們和Java開(kāi)發(fā)的游戲相比更快一些。Window Mobile Smartphone在Window Mobile Smartphone平臺(tái)上,可以使用在編寫(xiě)Pocket PC游戲時(shí)所用的一樣的工具和API。這意味著要使用C、C+或C#編程語(yǔ)言并結(jié)合使用Window Mobile API。這里我選用Java Micro Edition(Java ME)作為開(kāi)發(fā)平臺(tái)。Sun Microsys

14、tem公司在1999年6月推出Java ME。Java ME用于為信息家電市場(chǎng)提供應(yīng)用服務(wù),這些信息家電包括傳呼機(jī)、移動(dòng)電話、個(gè)人商務(wù)助理(PDA)、電視機(jī)頂盒、POS終端以及其他消費(fèi)電子設(shè)備。Java ME體系結(jié)構(gòu)采用模塊化、可擴(kuò)展的設(shè)計(jì)。這種設(shè)計(jì)通過(guò)一個(gè)3層軟件模型來(lái)實(shí)現(xiàn)。由于無(wú)線移動(dòng)設(shè)備比桌面計(jì)算機(jī)具有更弱的計(jì)算能力和更小的屏幕,Java ME代表著Java SE的一個(gè)簡(jiǎn)化功能集,Java ME是Java SE的一個(gè)子集,它支持一個(gè)較小的功能集,這些功能適用于無(wú)線和有線的移動(dòng)設(shè)備。Java ME包括一組可以靈活調(diào)用的開(kāi)發(fā)工具和豐富的應(yīng)用程序接口(API)。依靠通用的字節(jié)碼而不是本地應(yīng)用程

15、序代碼,其程序不需要費(fèi)多大力氣就可以移植到不同的手機(jī)。同時(shí)全球手機(jī)制造商中,Java ME有著最廣泛的工業(yè)支持。 Java ME也是目前最占據(jù)優(yōu)勢(shì)的移動(dòng)軟件開(kāi)發(fā)技術(shù)。并且所有的跡象表明它將保持并可能繼續(xù)擴(kuò)展它的市場(chǎng)份額。2007年約有4.5億支持Java的手機(jī)銷售出去,占據(jù)整個(gè)手機(jī)市場(chǎng)的75%。按照MIDP規(guī)范開(kāi)發(fā)的Java ME應(yīng)用程序叫做MIDlet。因此,用Java ME MIDP創(chuàng)建的任何游戲?qū)嶋H上都是MIDlet。MIDlet類存儲(chǔ)在Java字節(jié)碼文件中,擴(kuò)展文件名.class。而MIDlet類必須在發(fā)布之前進(jìn)行驗(yàn)證,以確保它們不會(huì)執(zhí)行任何非法操作。進(jìn)行這個(gè)預(yù)驗(yàn)證步驟的原因和移動(dòng)設(shè)備

16、所使用的虛擬機(jī)的限制有關(guān)。為了保證虛擬機(jī)盡可能地小且高效,在一個(gè)運(yùn)行時(shí)MIDlet類上所執(zhí)行的驗(yàn)證被最小化。預(yù)驗(yàn)證在編譯之后發(fā)生,并生成一個(gè)新的class文件,這個(gè)文件是通過(guò)驗(yàn)證后等待測(cè)試或發(fā)布的。最后MIDlet打包成JAR文件以便發(fā)布。應(yīng)用程序描述符(JAD文件)提供了和一個(gè)JAR文件中包含的多個(gè)MIDlet相關(guān)的描述信息。一個(gè)MIDlet套件中的JAR文件,能夠提供安裝和訪問(wèn)單個(gè)MIDlet的相應(yīng)的信息。Java SDK是用Java進(jìn)行開(kāi)發(fā)的一個(gè)標(biāo)準(zhǔn)開(kāi)發(fā)工具包。Java ME Wireless Toolkit(JWT)的作用相當(dāng)于一個(gè)用來(lái)和Java SDK協(xié)同工作的插件,它包括用來(lái)驗(yàn)證和

17、測(cè)試MIDlet的一個(gè)字節(jié)碼驗(yàn)證器和幾個(gè)Java ME模擬器。Java ME技術(shù)架構(gòu)分為:簡(jiǎn)表(Profile)、配置(Configuration)和Java虛擬機(jī)(Java Virtual Machine)3層,它們都構(gòu)建在本地操作系統(tǒng)之上。其中,簡(jiǎn)表層定義了特定系列設(shè)備上可用的應(yīng)用程序編程接口(API)的最小子集;配置層面對(duì)的是大量各種不同的小型嵌入式設(shè)備,通過(guò)定義其配置可以描述硬件的功能;Java虛擬機(jī)層是針對(duì)在本地操作系統(tǒng)定制的虛擬運(yùn)行平臺(tái)。其架構(gòu)圖如下:簡(jiǎn)表層(Profile)配置層(Configuration)Java虛擬機(jī)(JVM)圖1 Java ME架構(gòu)圖按照MIDP規(guī)范開(kāi)發(fā)的

18、Java ME應(yīng)用程序叫做MIDlet。用Java ME MIDP創(chuàng)建的任何游戲?qū)嶋H上都是MIDlet。MIDlet類存儲(chǔ)在Java字節(jié)碼文件中,擴(kuò)展文件名.class。而MIDlet類必須在發(fā)布之前進(jìn)行驗(yàn)證,以確保它們不會(huì)執(zhí)行任何非法操作。進(jìn)行這個(gè)預(yù)驗(yàn)證步驟的原因和移動(dòng)設(shè)備所使用的虛擬機(jī)的限制有關(guān)。為了保證虛擬機(jī)盡可能地小且高效,在一個(gè)運(yùn)行時(shí)MIDlet類上所執(zhí)行的驗(yàn)證被最小化。預(yù)驗(yàn)證在編譯之后發(fā)生,并生成一個(gè)新的class文件,這個(gè)文件是通過(guò)驗(yàn)證后等待測(cè)試或發(fā)布的。最后MIDlet打包成JAR文件以便發(fā)布。應(yīng)用程序描述符(JAD文件)提供了和一個(gè)JAR文件中包含的多個(gè)MIDlet相關(guān)的描述

19、信息。一個(gè)MIDlet套件中的JAR文件,能夠提供安裝和訪問(wèn)單個(gè)MIDlet的相應(yīng)的信息。本系統(tǒng)的編譯環(huán)境選用Java ME Wireless Toolkit(JWT)version 2.1,這樣對(duì)于游戲中包含的類,字節(jié)碼驗(yàn)證器在打包前對(duì)它們進(jìn)行驗(yàn)證。Java ME模擬器可以用來(lái)在PC上測(cè)試,而不必下載到移動(dòng)設(shè)備上。2.2 Java ME Wireless Toolkit(WTK)簡(jiǎn)介Java ME Wireless Toolkit(WTK) 的全稱是:Java ME無(wú)線開(kāi)發(fā)工具包。這一工具包的設(shè)計(jì)目的是為了幫助開(kāi)發(fā)人員簡(jiǎn)化Java ME的開(kāi)發(fā)過(guò)程。它的功能包括了編譯、打包、模擬執(zhí)行MIDP應(yīng)

20、用程序。其中包括了字節(jié)碼驗(yàn)證器、Java ME模擬器、KToolBar、預(yù)配置服務(wù)器(provisioning server)等很有用的工具。該工具箱包含的生成工具、實(shí)用程序以及設(shè)備仿真器?,F(xiàn)在共推出有四個(gè)版本,分別是1.0.4, 2.0, 2.1和2.2。每個(gè)版本都包括英語(yǔ),日語(yǔ),簡(jiǎn)體中文,繁體中文4個(gè)語(yǔ)種包。它的功能包括了編譯、打包、模擬執(zhí)行MIDP應(yīng)用程序。1.0.4版只能夠開(kāi)發(fā)MIDP1.0 應(yīng)用程序,2.0版只能夠開(kāi)發(fā)MIDP2.0應(yīng)用程序,2.1版則可以同時(shí)開(kāi)發(fā)MIDP1.0、JTWI(CLDC1.0,MIDP2.0,WMA1.1)可改用CLDC1.1或加入MMAPI1.1)、自定

21、義(隨機(jī)組合Configuration、Profile以及Optional Package)三種環(huán)境下的應(yīng)用程序。2.2版中,WTK全面的支持JTWI規(guī)范。即MIDP 2.0、CLDC 1.1、 WMA 2.0、 MMAPI 1.1、Web Services(JSR 172)、File and PIM APIs(JSR 75)、Bluetooth and OBEX APIs(JSR 182)和3DGraphics(JSR 184),同時(shí)也可以使用該版本開(kāi)發(fā)面向CLDC1.0 和MIDP1.0的應(yīng)用程序。WTK工具包中的KToolBar是一個(gè)可視化的開(kāi)發(fā)環(huán)境,可以通過(guò)一個(gè)圖形用戶界面來(lái)創(chuàng)建、編譯

22、、打包和測(cè)試Java ME應(yīng)用程序。它也提供了直接的方法來(lái)管理MIDlet項(xiàng)目并生成設(shè)置。這里我選用WTK 2.1作為開(kāi)發(fā)環(huán)境。安裝WTK 2.1后,將得到一個(gè)包括多種實(shí)用工具的開(kāi)發(fā)包。以下是安裝顯示的菜單項(xiàng),見(jiàn)下圖:圖2 WTK文件結(jié)構(gòu)無(wú)論哪個(gè)版本的WTK 都會(huì)包括以下幾個(gè)目錄:appdb 目錄: RMS 數(shù)據(jù)庫(kù)信息apps 目錄: WTK 自帶的demo 程序bin 目錄: Java ME 開(kāi)發(fā)工具執(zhí)行文件docs 目錄: 各種幫助與說(shuō)明文件lib 目錄: Java ME 程序庫(kù),Jar 包與控制文件session 目錄:性能監(jiān)控保存信息wtklib 目錄: JWTK 主程序與模擬器外觀2

23、.3 Java ME Wireless Toolkit(WTK)開(kāi)發(fā)環(huán)境的簡(jiǎn)介打開(kāi)WTK下的KTookBar。選擇打開(kāi)項(xiàng)目,WTK 會(huì)把自身apps目錄下的應(yīng)用項(xiàng)目全部顯示出來(lái),選擇“打開(kāi)項(xiàng)目”后,能夠?qū)pps目錄下的MIDlet項(xiàng)目進(jìn)行開(kāi)發(fā)更改, 見(jiàn)下圖:圖3 打開(kāi)一個(gè)項(xiàng)目直接運(yùn)行MIDP應(yīng)用程序可以在程序組中直接選擇Run MIDP Application。在彈出的對(duì)話框中選擇其它路徑中的JAD程序運(yùn)行。JAD描述文件與其指定的JAR文件需在同一個(gè)目錄下。同時(shí)運(yùn)行目錄路徑中不能包含中文。KToolBar的生成功能只能幫將源代碼編譯并預(yù)先審核并不會(huì)幫產(chǎn)生JAR 文件,如果要發(fā)布MIDP程序

24、,除了JAD描述文件,還必須打包成JAR文件。在KToolbar選中Project->Package->Create Package,可以把整個(gè)程序,包括資源文件打包成JAR文件。形成的JAR保存在項(xiàng)目對(duì)應(yīng)的bin目錄下,如下圖:圖4 創(chuàng)建一個(gè)包KToolBar除了“產(chǎn)生包”,另外還有“產(chǎn)生混淆包”功能。為了防止別人反編譯后讀取源代碼,將程序(.class 文件)進(jìn)行混淆,經(jīng)過(guò)混淆的Java Byte Code可以增加反編譯源代碼的時(shí)間。在KToolBar的Edit->Preferences里面提供很多實(shí)用的功能,如下圖:圖5 選擇Preferences菜單KToolBar除

25、了“產(chǎn)生包”,另外還有“產(chǎn)生混淆包”功能。為了防止別人反編譯后讀取源代碼,將程序(.class 文件)進(jìn)行混淆,經(jīng)過(guò)混淆的Java Byte Code可以增加反編譯源代碼的時(shí)間。在需要監(jiān)視程序性能的時(shí)候,可以在Edit->Preferences里選中“Enable Memory Monitor”,在下一次模擬器執(zhí)行的時(shí)候,就可讀出程序運(yùn)行時(shí)的內(nèi)存消耗均值,消耗峰值以及具體產(chǎn)生對(duì)象的個(gè)數(shù)使用情況。除了內(nèi)存監(jiān)視,還可以執(zhí)行網(wǎng)絡(luò)監(jiān)視,設(shè)定存儲(chǔ)區(qū)大小和堆棧大小,設(shè)定安全簽名和藍(lán)牙操作屬性,以盡可能模擬手機(jī)實(shí)際運(yùn)行環(huán)境。3 游戲設(shè)計(jì)3.1 俄羅斯方塊游戲的背景俄羅斯方塊是俄羅斯人阿列克謝·

26、;帕基特諾夫(Alexey Pazhitnov)發(fā)明。人們一開(kāi)始并沒(méi)預(yù)料到它將會(huì)有如此廣泛的吸引力。實(shí)際上,在游戲發(fā)明后的數(shù)年間,俄羅斯方塊成了無(wú)數(shù)場(chǎng)專利官司和法律糾紛的目標(biāo),而許多公司也不遺余力地上陣廝殺,想要將游戲的創(chuàng)意據(jù)為己有。一個(gè)最初的版本是Spectrum Holobyte為IBM兼容機(jī)開(kāi)發(fā)的游戲。1988年,俄羅斯方塊在街機(jī)上也變得非常流行,這歸功于Atari,因?yàn)樗麄儼l(fā)布了一個(gè)能讓兩名玩家同時(shí)游戲的版本。俄羅斯方塊經(jīng)常被稱為拼圖游戲。玩家需要找出如何能把各塊積木最好的拼在一起的方法。俄羅斯方塊相當(dāng)于直角的智力拼圖游戲,或者其它一種“在這有限空間內(nèi)組織幾何體”的拼圖。俄羅

27、斯方塊為了創(chuàng)造真正引人入勝的游戲,它巧妙的平衡了拼圖游戲與動(dòng)作游戲的機(jī)制。因而每個(gè)人玩這個(gè)游戲都會(huì)有一次不同的體驗(yàn)。俄羅斯方塊所用到的一種動(dòng)作游戲機(jī)制是越來(lái)越逼近的威脅感,留給玩家的時(shí)間總是非常有限。俄羅斯方塊中積木是從上面落下來(lái)。如果玩家不在積木落到屏幕底下或翻轉(zhuǎn)它,不能給它找一個(gè)最有利的位置,這塊積木就可能會(huì)堵住某處,而它下面的幾行也就沒(méi)有辦法拼接完整,玩家也就離游戲結(jié)束又靠近了一行或幾行。在游戲進(jìn)程中,積木落下來(lái)的速度越來(lái)越快,這樣對(duì)玩家的挑戰(zhàn)也就越來(lái)越大,游戲的難度也逐步增加。3.2 俄羅斯方塊游戲的規(guī)則俄羅斯方塊游戲的玩法非常簡(jiǎn)單易學(xué),游戲界面是一個(gè)很高的長(zhǎng)方形2D盒子,方塊出現(xiàn)在盒

28、子的上方,這些方塊都由四個(gè)小方塊組成,并按照各種方式排列,其中每一個(gè)方塊都至少和另一個(gè)方塊相連。然后,這些積木慢慢地落向盒子底部,玩家可以把這些方塊左右移動(dòng)或旋轉(zhuǎn)。一旦這個(gè)方塊碰到阻礙,比如盒底或者另一個(gè)方塊,它就會(huì)停止,而玩家可以對(duì)之加以操作。當(dāng)屏幕底端的方塊拼滿一橫行時(shí),這個(gè)層的方塊就會(huì)消失,而這一行以上的所有方塊都會(huì)下降一層。而當(dāng)那些沒(méi)有拼完的橫行填滿整個(gè)長(zhǎng)方形盒子,新的方塊無(wú)法再出現(xiàn)時(shí),游戲就結(jié)束了。3.3 俄羅斯方塊游戲的特性(1)單屏游戲:俄羅斯方塊全部反映在一個(gè)屏幕上。玩家可以在同一時(shí)間看到整個(gè)游戲環(huán)境,在此基礎(chǔ)上決定怎么處理手上的這塊積木。這個(gè)游戲當(dāng)中沒(méi)有任何探險(xiǎn)成分在內(nèi),它不

29、會(huì)讓玩家真正大吃一驚,玩家能夠看到讓游戲順利進(jìn)行下去的所有信息,所以玩家輸了的話只能怪他自己。(2)無(wú)限游戲:只要積木還沒(méi)有堆到盒頂,俄羅斯方塊就允許玩家一直玩下去,不管他做出了多少錯(cuò)誤的決定。每次游戲都以失敗而告終,沒(méi)有人真正能打敗這個(gè)游戲。玩家們總是能找到提高玩俄羅斯方塊技藝的方法,這就是俄羅斯方塊和傳統(tǒng)拼圖游戲的根本不同。一旦玩家拼好了一幅拼圖,只要他還記得他是怎么拼的,那么這個(gè)拼圖就對(duì)他再也無(wú)挑戰(zhàn)了。所以人們通常不會(huì)多次玩一個(gè)拼圖,但一個(gè)設(shè)計(jì)精巧的游戲卻總能讓人玩上一遍又一遍。俄羅斯方塊正是這樣一個(gè)游戲。(3)多條生命:和大多數(shù)的街機(jī)游戲不同,最早的俄羅斯方塊只給玩家一條生命。積木一堆

30、到盒子頂部,玩家就輸了。但是游戲的設(shè)計(jì)允許玩家出現(xiàn)錯(cuò)誤,同時(shí)還不會(huì)立即敗下陣來(lái)。當(dāng)積木疊在長(zhǎng)方盒子的底部時(shí),玩家可以看到自己所犯的錯(cuò)誤,在游戲結(jié)束前,他還是有時(shí)間想一想如何把后面的積木拼放得更合理些。這樣,俄羅斯方塊雖然沒(méi)有給玩家多條生命,但卻在玩家重新開(kāi)始前,給玩家一個(gè)改善游戲技巧、獲得一些小小成就的機(jī)會(huì)。(4)最高分機(jī)制:俄羅斯方塊引入一個(gè)計(jì)分模式,它給玩家計(jì)分并把分?jǐn)?shù)記錄在高分排行榜上。實(shí)際上,因?yàn)橥婕也豢赡軗魯∵@個(gè)游戲,所以,取得一個(gè)更高分?jǐn)?shù)的可能性就成為玩家反復(fù)玩這個(gè)游戲真正的動(dòng)力所在。(5)簡(jiǎn)單易學(xué),容易操作:俄羅斯方塊的真正杰出之處在于它的游戲機(jī)制簡(jiǎn)單平樸,淺顯易懂。玩好這個(gè)游戲

31、只需極少的鍵位,所有操作都在屏幕上一覽無(wú)余。這意味著,不論是否熟悉計(jì)算機(jī)游戲,任何人都可以走過(guò)來(lái)并立即開(kāi)始玩它。然而,玩家永遠(yuǎn)不可能完全掌握這個(gè)游戲,因?yàn)檫@個(gè)游戲的難度與是遞增并且它在理論上可以玩無(wú)限長(zhǎng)的時(shí)間。4 游戲系統(tǒng)分析設(shè)計(jì)4.1 系統(tǒng)解決方案本系統(tǒng)在Windows XP的操作系統(tǒng)下,以Java Micro Edition Wireless Toolkit 2.1為開(kāi)發(fā)工具,用中文版UltraEdit做為代碼編輯器而實(shí)現(xiàn)的。在KToolBar開(kāi)發(fā)包的DefaultColorPhone模擬器下進(jìn)行調(diào)試。4.2 系統(tǒng)總體結(jié)構(gòu)系統(tǒng)開(kāi)發(fā)的主要任務(wù)是俄羅斯方塊游戲在無(wú)線移動(dòng)端的實(shí)現(xiàn)。本系統(tǒng)的主要實(shí)

32、現(xiàn)功能模塊分為:難度選擇模塊、方塊處理模塊、游戲規(guī)則模塊。4.2.1 難度選擇模塊用戶在title屏按鍵數(shù)字鍵選擇09種游戲難度,進(jìn)入相對(duì)應(yīng)游戲關(guān)卡。進(jìn)入游戲按鍵輸入(09)選擇關(guān)卡難度處理輸入選擇關(guān)卡難度進(jìn)入關(guān)卡0進(jìn)入關(guān)卡1進(jìn)入關(guān)卡2進(jìn)入關(guān)卡3。判斷游戲是否結(jié)束圖6 Title屏選擇關(guān)卡模塊圖4.2.2 方塊處理模塊方塊處理模塊定義方塊的7種狀態(tài),每種狀態(tài)都是由四個(gè)小方塊組合而成,如下: 圖7 方塊形狀模塊圖4.2.3 游戲規(guī)則模塊游戲規(guī)則模塊主要實(shí)現(xiàn)俄羅斯方塊游戲基本規(guī)則。比如,積滿一行后消減;能夠快速直接的下落;記錄游戲最高分;方塊翻轉(zhuǎn);分?jǐn)?shù)計(jì)算;隨機(jī)生成方塊,見(jiàn)下圖:游戲規(guī)則消減積滿行

33、快速下落方塊翻轉(zhuǎn)分?jǐn)?shù)計(jì)算隨機(jī)生成方塊圖8 游戲規(guī)則模塊圖4.3 游戲中斷處理流程中斷處理是移動(dòng)設(shè)備程序生命周期的重要組成特性,包括下圖三種階段:運(yùn)行階段(startApp)掛起階段(pauseApp)結(jié)束階段(destroyApp)喚醒掛起結(jié)束結(jié)束圖9 系統(tǒng)生命周期圖5 系統(tǒng)實(shí)現(xiàn)與測(cè)試5.1 系統(tǒng)源文件結(jié)構(gòu)本系統(tǒng)由10個(gè)類組成并實(shí)現(xiàn)全部功能。項(xiàng)目名字為T(mén)etrisMidlet,其項(xiàng)目文件結(jié)構(gòu)如下圖:圖10 項(xiàng)目結(jié)構(gòu)圖在項(xiàng)目源文件中,src文件夾下為實(shí)現(xiàn)系統(tǒng)的源文件。建了兩個(gè)包作為功能劃分,分別為:ui包和model包。5.2 難度選擇模塊5.2.1 難度選擇模塊結(jié)構(gòu)ui包里包含以下類: Inf

34、oBox.java 用于顯示數(shù)字的信息框TitleBox.java 顯示title屏,包含當(dāng)前高分提示選擇一個(gè)難度NextPieceBox.java顯示下一個(gè)激活方塊TetrisCanvas.java處理程序的所有UIDisplayBox.java 在屏幕上顯示Box其結(jié)構(gòu)圖如下:ui包InfoBoxTitleBoxNextPieceBoxTetrisCanvasDisplayBox圖11 ui包結(jié)構(gòu)圖其中核心類DisplayBox.java的方法圖如下:圖12 類DisplayBox的方法圖在DisplayBox.java中方法paint()實(shí)現(xiàn)了title屏的顯示,其代碼如下:public

35、 final void paint(Graphics g) g.setColor(this.bgColor);g.fillRect(x, y, width, height);/ box的背景g.setColor(this.fgColor);g.drawRect(x, y, width, height);/ 邊框this.paintBoxContents(g);下面是TerisCanvas.java中繪制方塊paintBlock()方法的實(shí)現(xiàn)代碼:private void paintBlock(int x, int y, int blockType, Graphics g) int blockX

36、 = this.boardX + (this.blockSize * x);int blockY=this.boardY+(this.blockSize* (y - TetrisConstants.TOP_VISIBLE_ROW);if(TetrisConstants.BLOCK_EMPTY != blockType) / 繪制下落時(shí)的陰影g.setColor(TetrisConstants.COLOR_BLACK);g.fillRect(blockX + 1, blockY + 1, this.blockSize - 1, this.blockSize - 1);/ 繪制一個(gè)實(shí)際的方塊覆蓋在

37、陰影上this.setColor(blockType, g);g.fillRect(blockX, blockY, this.blockSize - 1, this.blockSize - 1); else /繪制顏色g.setColor(TetrisConstants.COLOR_WHITE);g.fillRect(blockX, blockY, this.blockSize, this.blockSize);其中,TOP_VISIBLE_ROW為T(mén)etrisConstants下定義,Y坐標(biāo)的從行0開(kāi)始索引的位置,初始值為2。BLOCK_EMPTY為T(mén)etrisConstants下定義的空方

38、塊,初始值為-1。COLOR_BLACK為T(mén)etrisConstants下定義的預(yù)設(shè)RGB顏色,初始值為0x00000000。COLOR_WHITE為T(mén)etrisConstants下定義的預(yù)設(shè)RGB顏色,初始值為0x00ffffff。5.2.2 難度選擇模塊功能模擬器程序運(yùn)行,在應(yīng)用程序列表里顯示可以載入運(yùn)行的模擬程序,如下圖:圖13 載入程序點(diǎn)擊運(yùn)行程序后,在title屏顯示游戲名稱、作者、最高分記錄和按鍵提示,點(diǎn)擊數(shù)字鍵輸入0-9中的一個(gè)數(shù)字,以選擇不同難度的關(guān)卡,如下圖:圖14 運(yùn)行游戲在title屏,也可以點(diǎn)擊左軟鍵退出程序。5.3 游戲規(guī)則模塊功能5.3.1 游戲規(guī)則模塊結(jié)構(gòu)游戲規(guī)則

39、模塊包含3個(gè)類:DropThread.java 處理方塊下落問(wèn)題TetrisConstants.java 常數(shù)定義TetrisMidlet.java 游戲規(guī)則和對(duì)鍵盤(pán)輸入的捕捉,以及中斷的處理其結(jié)構(gòu)圖如下:TetrisMidletUi包Model包DropThreadTetrisConstantsTetrisMidlet圖15 游戲規(guī)則模塊結(jié)構(gòu)圖其中核心類DropThread.java實(shí)現(xiàn)了方塊的下落,它的方法圖如下:圖16 類DropThread方法圖其中run()方法實(shí)現(xiàn)循環(huán)下落,代碼如下:public void run() /運(yùn)行方法 while(this.running) / 當(dāng)前下落

40、的方塊if(this.skipNextTick) this.skipNextTick = false; else this.game.tick();try Thread.sleep(this.game.getTickSpeed();/ 線程睡眠 catch(InterruptedException ie) 5.3.2 游戲規(guī)則模塊功能游戲規(guī)則模塊實(shí)現(xiàn)俄羅斯方塊游戲的主要功能包括,消減積滿的行、快速下落、方塊翻轉(zhuǎn)、分?jǐn)?shù)計(jì)算、下落碰撞檢測(cè)、隨機(jī)生成方塊。下面是消減積滿行功能代碼,如下:private int clearCompletedRows(TetrisPiece piece) TetrisB

41、oard board = this.getBoard();/ 檢查方塊的每一行,看是否以完成for(int i = 0; i < TetrisConstants.FOUR_BLOCKS; i+) int rowY = piece.getBlockY(i);/ 如果一行被填充滿,則標(biāo)記為完成if(board.checkRowCompleted(rowY) this.markRowCompleted(rowY, true);int numClearedRows = 0;for(int y = TetrisConstants.HEIGHT - 1; y >= 0; y-) /從下到上重復(fù)

42、if(numClearedRows > 0) board.dropRow(y, numClearedRows);if(this.isRowCompleted(y) numClearedRows+;this.markRowCompleted(y, false);/ 為下一次重置/ 清除最上面的完成行數(shù)for(int i = 0; i < numClearedRows; i+) board.clearRow(i);return numClearedRows;為了增加玩家在游戲過(guò)程中的游戲性,下落的方塊設(shè)置成隨機(jī)生成,這里利用rand.nextInt方法得到隨機(jī)數(shù),下面是隨機(jī)生成方塊功能

43、的部分代碼,如下:private int getRandomPieceType() return Math.abs(rand.nextInt() % TetrisConstants.NUM_PIECE_TYPES) + 1;首先用rand.nextInt()方法得到隨機(jī)數(shù)后,用隨機(jī)數(shù)除以TetrisCanstants中定義的表示方塊類型數(shù)的常量NUM_PIECE_TYPE,其值初始值為7,取余后加1取其絕對(duì)值。實(shí)現(xiàn)效果如下圖:圖17 游戲進(jìn)行狀態(tài)圖在前面4.3部分通過(guò)圖9的系統(tǒng)生命周期流程圖,已經(jīng)了解了游戲中斷處理的過(guò)程。在游戲運(yùn)行時(shí)可以按右軟鍵調(diào)用程序生命周期中pauseApp()方法暫停游

44、戲,方塊會(huì)停在暫停位置,直到玩家再次點(diǎn)擊右軟鍵恢復(fù)游戲,pauseApp()方法代碼如下:protected void pauseApp() / 掛起程序使游戲進(jìn)入暫停狀態(tài)if(TetrisConstants.RUNNING_STATE = this.gameState) this.pauseGame(); 在pauseApp方法中調(diào)用了pauseGame()方法,其實(shí)現(xiàn)代碼如下:private void pauseGame() / 把暫停命令替換成恢復(fù)命令this.gameCanvas.removeCommand(this.pauseCommand);this.gameCanvas.addC

45、ommand(this.resumeCommand);/ 進(jìn)入暫停狀態(tài)并停止下落this.setGameState(TetrisConstants.PAUSED_STATE);this.dropThread.stopThread();游戲暫停階段畫(huà)面如下:圖18 游戲暫停狀態(tài)圖當(dāng)點(diǎn)擊右軟件恢復(fù)游戲后,方塊從暫停位置繼續(xù)下落,這里用了resumeGame()來(lái)實(shí)現(xiàn)此功能,代碼如下:private void resumeGame() / 把恢復(fù)命令替換成暫停命令this.gameCanvas.removeCommand(this.resumeCommand);this.gameCanvas.add

46、Command(this.pauseCommand);/ 進(jìn)入運(yùn)行狀態(tài)并下落this.setGameState(TetrisConstants.RUNNING_STATE);this.runDropThread();游戲恢復(fù)階段狀態(tài),如下圖:圖19 游戲恢復(fù)狀態(tài)圖5.4 方塊處理模塊5.4.1 方塊處理模塊結(jié)構(gòu)俄羅斯方塊游戲中出現(xiàn)的七種方塊是由4個(gè)小塊組合而成。方塊處理模塊包含在model包中:TetrisPiece.java當(dāng)前下落方塊的處理TetrisBoard.java定義方塊格子的狀態(tài)其類結(jié)構(gòu)圖如下:ModelTetrisPieceTetrisBoard圖20 方塊處理模塊結(jié)構(gòu)圖核心類

47、TetrisPiece中實(shí)現(xiàn)了七種方塊下落時(shí)翻轉(zhuǎn)方式的下落,方塊翻轉(zhuǎn)方式分三種方式:自由翻轉(zhuǎn)(Free)、兩面翻轉(zhuǎn)(Toggle)、不能翻轉(zhuǎn)(None),下圖是判斷圖示:兩面翻轉(zhuǎn)(Toggle)自由翻轉(zhuǎn)(Free)無(wú)翻轉(zhuǎn)(None)圖21 方塊翻轉(zhuǎn)方式判斷圖示在四個(gè)組成的方塊的小塊中,有一個(gè)中心點(diǎn)小塊(1,1)在翻轉(zhuǎn)的時(shí)候坐標(biāo)是不會(huì)變化的,這個(gè)坐標(biāo)在參數(shù)設(shè)置類TetrisConstants.java中,名稱為:PIVOT_INDEX,其初始值為1。下面用方塊I舉例說(shuō)明其進(jìn)行翻轉(zhuǎn)判斷的代碼:private void setAsNewIPiece(int x, int y) this.pieceT

48、ype = TetrisConstants.I_PIECE;this.rotationType = TetrisConstants.ROTATION_TYPE_TOGGLE;/只能進(jìn)行兩個(gè)方向的旋轉(zhuǎn),設(shè)置類型為T(mén)OGGLEthis.rotationToggle = true;/ 設(shè)置TOGGLE標(biāo)志為T(mén)UREthis.setBlockCoords(0, x - 1, y);this.setBlockCoords(1, x , y);this.setBlockCoords(2, x + 1, y);this.setBlockCoords(3, x + 2, y);下圖是類TetrisPiece的

49、方法圖:圖22 類TetrisPiece方法圖其中rotate()方法實(shí)現(xiàn)了方塊的旋轉(zhuǎn),(x,y)為小方塊坐標(biāo),其翻轉(zhuǎn)實(shí)現(xiàn)算法如下:(x,y)(-y,-x)如向左旋轉(zhuǎn):(y,-x)如向右旋轉(zhuǎn):(-y,x)(-y+1,x+1)(y+1,-x+1)圖23 方塊翻轉(zhuǎn)算法流程圖方塊翻轉(zhuǎn)算法流程實(shí)現(xiàn)代碼如下:public void rotate(int pivotX, int pivotY, boolean rotateDirection) if(TetrisConstants.ROTATION_TYPE_TOGGLE = this.rotationType) / 如果翻轉(zhuǎn)類型為T(mén)OGGLErotate

50、Direction = this.rotationToggle; /判斷翻轉(zhuǎn)方向this.rotationToggle = !this.rotationToggle; / 如果與canRotate匹配,中心點(diǎn)方塊將被使用/ 重構(gòu)四個(gè)小塊,每個(gè)都轉(zhuǎn)動(dòng)for(int i = 0; i < TetrisConstants.FOUR_BLOCKS; i+) int blockX = this.getBlockX(i);int blockY = this.getBlockY(i);/ 左旋轉(zhuǎn):交換x和y坐標(biāo),x坐標(biāo)取反/ 右旋轉(zhuǎn):交換x和以坐標(biāo),y坐標(biāo)取反int dx = blockY - piv

51、otY;int dy = blockX - pivotX;if(rotateDirection) / 如向左旋轉(zhuǎn)dx *= -1; else / 如向右旋轉(zhuǎn)dy *= -1;int rotateX = pivotX + dx;int rotateY = pivotY + dy;this.setBlockCoords(i, rotateX, rotateY);/得到翻轉(zhuǎn)后的新坐標(biāo)5.4.2 方塊處理模塊功能對(duì)當(dāng)前下落方塊的處理,主要功能是及時(shí)刷新圖像,保證方塊狀態(tài)及時(shí)更新。核心類TetrisBoard.java實(shí)現(xiàn)了此功能,其方法圖如下:圖24 類TetrisBoard方法結(jié)構(gòu)圖當(dāng)下落方塊頂端積

52、滿后,游戲系統(tǒng)判斷游戲結(jié)束。在TetrisBoard.java中的checkRowCompleted()方法實(shí)現(xiàn)了此功能,其代碼如下:public boolean checkRowCompleted(int rowY) for(int x = 0; x < TetrisConstants.WIDTH; x+) if(TetrisConstants.BLOCK_EMPTY = this.getBlockType(x, rowY) / 有空方塊,行不被填充return false;return true;如下圖:圖25 方塊下落游戲圖像刷新?tīng)顟B(tài)圖當(dāng)游戲結(jié)束時(shí)立即顯示title屏,計(jì)算并顯示出

53、這次游戲的最高分。同時(shí)等待玩家鍵入數(shù)字,選擇游戲難度開(kāi)始新的游戲。其實(shí)現(xiàn)由init()方法控制,其代碼如下:private void init() this.board = new TetrisBoard();this.gameCanvas = new TetrisCanvas(this);this.activePiece = new TetrisPiece(); /方塊處理pletedRows = new booleanTetrisConstants.HEIGHT; /初始化數(shù)組this.hiScore = this.openAndReadHiScore();/ 從RMS得到當(dāng)前存儲(chǔ)的高分t

54、his.nextPieceType = TetrisConstants.UNINITIALIZED;this.rand = new Random();/ 設(shè)置exit/pause/resume命令this.setupCommands();this.gameCanvas.addCommand(this.exitCommand);/ 顯示title屏this.setGameState(TetrisConstants.TITLE_STATE);Title屏將顯示如下圖:圖26 結(jié)束并重新開(kāi)始游戲狀態(tài)圖結(jié) 論本系統(tǒng)是一個(gè)基于Java ME平臺(tái)的無(wú)線網(wǎng)絡(luò)移動(dòng)端的俄羅斯方塊游戲,利用Java ME Wireless Toolkit(WTK)開(kāi)發(fā)包工具在無(wú)線網(wǎng)絡(luò)移動(dòng)端上實(shí)現(xiàn)經(jīng)典的俄羅斯方塊游戲。論文開(kāi)始部分對(duì)無(wú)線網(wǎng)絡(luò)移動(dòng)系統(tǒng)開(kāi)發(fā)中常使用幾種開(kāi)發(fā)語(yǔ)言和環(huán)境作了比較,說(shuō)明了選擇Java ME Wireless Toolkit作為開(kāi)發(fā)環(huán)境的的原因并對(duì)它作了相關(guān)的介紹。并展示了在WTK中打開(kāi)一個(gè)項(xiàng)目、把源文件打包成JAR包、產(chǎn)生混淆包的方法和過(guò)程。在系統(tǒng)設(shè)計(jì)時(shí),遵循了無(wú)線網(wǎng)絡(luò)移動(dòng)端程序的startApp、pauseApp、destroyApp的開(kāi)發(fā)生命周期。在設(shè)計(jì)與實(shí)現(xiàn)方面,分成難度選擇、游戲規(guī)則、方塊處理這幾個(gè)模塊進(jìn)行實(shí)現(xiàn)。在開(kāi)發(fā)與實(shí)現(xià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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論