版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(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ǎng)絡(luò)移動(dòng)端的俄羅斯方塊游戲的實(shí)現(xiàn)論文作者姓名:申請(qǐng)學(xué)位專業(yè):申請(qǐng)學(xué)位類別:指導(dǎo)教師姓名(職稱):論文提交日期:基于Java ME無線網(wǎng)絡(luò)移動(dòng)端的俄羅斯方塊游戲的實(shí)現(xiàn)摘 要本系統(tǒng)是一個(gè)基于Java ME平臺(tái)的無線網(wǎng)絡(luò)移動(dòng)端的俄羅斯方塊游戲,利用Java ME Wireless Toolkit(WTK)開發(fā)包工具在無線網(wǎng)絡(luò)移動(dòng)端上實(shí)現(xiàn)經(jīng)典的俄羅斯方塊游戲。論文開始部分對(duì)無線網(wǎng)絡(luò)移動(dòng)系統(tǒng)開發(fā)中常使用幾種開發(fā)語言和環(huán)境作了比較,說明了選擇Java ME Wireless Toolkit作為開發(fā)環(huán)境的的原因并對(duì)它作了相關(guān)的介紹。并展示了在WTK中打開一個(gè)項(xiàng)目、把源文
2、件打包成JAR包、產(chǎn)生混淆包的方法和過程。在系統(tǒng)設(shè)計(jì)時(shí),遵循了無線網(wǎng)絡(luò)移動(dòng)端程序的startApp、pauseApp、destroyApp的開發(fā)生命周期。在設(shè)計(jì)與實(shí)現(xiàn)方面,分成難度選擇、游戲規(guī)則、方塊處理這幾個(gè)模塊進(jìn)行實(shí)現(xiàn)。在開發(fā)與實(shí)現(xiàn)的同時(shí)也講解了俄羅斯方塊這款古老而經(jīng)典游戲的游戲背景、規(guī)則以及相關(guān)特性。最終展示了無線網(wǎng)絡(luò)移動(dòng)端的游戲開發(fā)的基本開發(fā)過程和設(shè)計(jì)思路。關(guān)鍵詞:無線網(wǎng)絡(luò)移動(dòng)端;Java ME;俄羅斯方塊;游戲開發(fā)Realization of the TETRIS Game Based On Mobile Platform of Java ME Wireless NetworkAbs
3、tractPuzzle 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 based on the pla
4、tform 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 selecting of diffic
5、ulty and the disposing of pieces. In the process of development and implementation, the article also interprets the TETRISs rules and TETRISs characters to show all the process of the development and design.Key words: wireless network UE; Java ME; TETRIS; game development 目 錄論文總頁數(shù):25頁 TOC o 1-3 h z
6、u HYPERLINK l _Toc169512705 1.引言 PAGEREF _Toc169512705 h 1 HYPERLINK l _Toc169512706 1.1系統(tǒng)綜述 PAGEREF _Toc169512706 h 1 HYPERLINK l _Toc169512707 1.2Java ME游戲開發(fā)背景 PAGEREF _Toc169512707 h 1 HYPERLINK l _Toc169512708 1.3無線網(wǎng)絡(luò)移動(dòng)端游戲發(fā)展現(xiàn)狀 PAGEREF _Toc169512708 h 1 HYPERLINK l _Toc169512709 2開發(fā)環(huán)境介紹 PAGEREF _
7、Toc169512709 h 2 HYPERLINK l _Toc169512710 2.1編程環(huán)境的選擇 PAGEREF _Toc169512710 h 2 HYPERLINK l _Toc169512711 2.2Java ME Wireless Toolkit(WTK)簡(jiǎn)介 PAGEREF _Toc169512711 h 4 HYPERLINK l _Toc169512712 2.3Java ME Wireless Toolkit(WTK)開發(fā)環(huán)境的簡(jiǎn)介 PAGEREF _Toc169512712 h 5 HYPERLINK l _Toc169512713 3游戲設(shè)計(jì) PAGEREF _
8、Toc169512713 h 7 HYPERLINK l _Toc169512714 3.1俄羅斯方塊游戲的背景 PAGEREF _Toc169512714 h 7 HYPERLINK l _Toc169512715 3.2俄羅斯方塊游戲的規(guī)則 PAGEREF _Toc169512715 h 7 HYPERLINK l _Toc169512716 3.3俄羅斯方塊游戲的特性 PAGEREF _Toc169512716 h 7 HYPERLINK l _Toc169512717 4游戲系統(tǒng)分析設(shè)計(jì) PAGEREF _Toc169512717 h 8 HYPERLINK l _Toc1695127
9、18 4.1系統(tǒng)解決方案 PAGEREF _Toc169512718 h 8 HYPERLINK l _Toc169512719 4.2系統(tǒng)總體結(jié)構(gòu) PAGEREF _Toc169512719 h 8 HYPERLINK l _Toc169512720 4.2.1難度選擇模塊 PAGEREF _Toc169512720 h 9 HYPERLINK l _Toc169512721 4.2.2方塊處理模塊 PAGEREF _Toc169512721 h 9 HYPERLINK l _Toc169512722 4.2.3游戲規(guī)則模塊 PAGEREF _Toc169512722 h 9 HYPERLI
10、NK l _Toc169512723 4.3游戲中斷處理流程 PAGEREF _Toc169512723 h 10 HYPERLINK l _Toc169512724 5系統(tǒng)實(shí)現(xiàn)與測(cè)試 PAGEREF _Toc169512724 h 10 HYPERLINK l _Toc169512725 5.1系統(tǒng)源文件結(jié)構(gòu) PAGEREF _Toc169512725 h 10 HYPERLINK l _Toc169512726 5.2難度選擇模塊 PAGEREF _Toc169512726 h 11 HYPERLINK l _Toc169512727 5.2.1難度選擇模塊結(jié)構(gòu) PAGEREF _Toc1
11、69512727 h 11 HYPERLINK l _Toc169512728 5.2.2難度選擇模塊功能 PAGEREF _Toc169512728 h 12 HYPERLINK l _Toc169512729 5.3游戲規(guī)則模塊功能 PAGEREF _Toc169512729 h 14 HYPERLINK l _Toc169512730 5.3.1游戲規(guī)則模塊結(jié)構(gòu) PAGEREF _Toc169512730 h 14 HYPERLINK l _Toc169512731 5.3.2游戲規(guī)則模塊功能 PAGEREF _Toc169512731 h 15 HYPERLINK l _Toc1695
12、12732 5.4方塊處理模塊 PAGEREF _Toc169512732 h 17 HYPERLINK l _Toc169512733 5.4.1方塊處理模塊結(jié)構(gòu) PAGEREF _Toc169512733 h 17 HYPERLINK l _Toc169512734 5.4.2方塊處理模塊功能 PAGEREF _Toc169512734 h 20 HYPERLINK l _Toc169512735 結(jié) 論 PAGEREF _Toc169512735 h 23 HYPERLINK l _Toc169512736 參考文獻(xiàn) PAGEREF _Toc169512736 h 23 HYPERLIN
13、K l _Toc169512737 致 謝 PAGEREF _Toc169512737 h 23 HYPERLINK l _Toc169512738 聲 明 PAGEREF _Toc169512738 h 25引言 系統(tǒng)綜述綜合運(yùn)用以前所學(xué)專業(yè)知識(shí),在Java ME開發(fā)平臺(tái)上實(shí)現(xiàn)無線網(wǎng)絡(luò)移動(dòng)端的俄羅斯方塊游戲。其研究主要包括以下內(nèi)容:第一,克服有限的可視屏幕尺寸,使游戲正常顯示;第二,解決有限的可用內(nèi)存調(diào)用問題,實(shí)現(xiàn)游戲流暢運(yùn)行;第三,俄羅斯方塊游戲規(guī)則算法在Java ME平臺(tái)的實(shí)現(xiàn),保證游戲可玩性;第四,游戲開始、結(jié)束等邏輯在游戲進(jìn)行中的判斷。本系統(tǒng)在Windows XP的操作系統(tǒng)下,Jav
14、a Micro Edition Wireless Toolkit 2.1為開發(fā)工具,用中文版UltraEdit做為代碼編輯器而實(shí)現(xiàn)的。 Java ME游戲開發(fā)背景游戲開發(fā)是藝術(shù)與編程技術(shù)相結(jié)合的完美表現(xiàn)。利用Java的“Write once,run anywhere”特性,可以真正達(dá)到程序只寫一次,在任何平臺(tái)都可以執(zhí)行。同時(shí)Java語言對(duì)面向?qū)ο蟮牧己弥С郑归_發(fā)具有高效性。所以Java ME(Java Micro Edition)是廣大無線網(wǎng)絡(luò)移動(dòng)端游戲開發(fā)廠商和游戲開發(fā)愛好者的首選平臺(tái)。 無線網(wǎng)絡(luò)移動(dòng)端游戲發(fā)展現(xiàn)狀縱觀IT產(chǎn)業(yè)的歷史,計(jì)算機(jī)游戲已經(jīng)成為技術(shù)創(chuàng)新背后的動(dòng)力之一。計(jì)算機(jī)游戲者渴
15、望更加強(qiáng)大的硬件計(jì)算能力,渴望不受不同的軟件的限制無論是將圖形強(qiáng)制在人工智能(AI)上還是網(wǎng)絡(luò)安全性。而無線網(wǎng)絡(luò)移動(dòng)端游戲已成為IT產(chǎn)業(yè)中增長(zhǎng)最快的部分之一。無線網(wǎng)絡(luò)移動(dòng)端是一個(gè)嶄新的游戲開發(fā)平臺(tái)。在眾多種類的游戲當(dāng)中,只有幾種游戲類型是適合開發(fā)成無線網(wǎng)絡(luò)移動(dòng)端游戲的。低激烈程度的游戲;簡(jiǎn)單街機(jī)游戲;運(yùn)動(dòng)類“情景”游戲;簡(jiǎn)單的運(yùn)動(dòng)類游戲;解謎或簡(jiǎn)單的匹配游戲;主題測(cè)試游戲。在上面的游戲種類中,我選擇了經(jīng)典的方塊匹配游戲:俄羅斯方塊。俄羅斯方塊有著舉世聞名的游戲性且非常直觀。某些與墜落的玩具碎片和它們的形狀有關(guān)的東西,使得哪怕新手也會(huì)很自然地企圖把它們排列起來,并加以適當(dāng)組合,就好似俄羅斯方塊觸
16、動(dòng)了玩家某些內(nèi)在的感官,使得哪怕是我們當(dāng)中最雜亂無章的人也要把事情整理妥當(dāng)。在操控性方面,只需方向鍵就可完成對(duì)游戲的全盤控制,這也適合無線網(wǎng)絡(luò)移動(dòng)端游戲的基本特性。俄羅斯方塊要比過去二十年間出現(xiàn)的任何東西都要浪費(fèi)人們的時(shí)間。它被GameSpot評(píng)選為歷史上最偉大游戲之一。它的起源實(shí)際上要追溯到八十年代中期,盡管它的人氣一直到幾年后才開始顯露出來。游戲的概念十分簡(jiǎn)單,如今已經(jīng)成為一種公認(rèn)的規(guī)則:屏幕頂部以隨機(jī)順序落下形狀各異的碎塊,玩家要試圖用它們拼成沒有空隙的行列。玩家是沒法打贏它的,因?yàn)閳?jiān)持得時(shí)間越長(zhǎng),游戲速度也就變得越來越快,而游戲的吸引力就在于使玩家頂住碎塊的進(jìn)攻,支撐的時(shí)間比上一次更長(zhǎng)
17、。俄羅斯方塊舉世聞名的游戲性,在該游戲新鮮出爐時(shí)就顯得非常直觀。某些與墜落的玩具碎片和它們的形狀有關(guān)的東西,使得哪怕新手也會(huì)很自然地企圖把它們排列起來,并加以適當(dāng)組合,就好似俄羅斯方塊觸動(dòng)了玩家某些內(nèi)在的感官,使得哪怕是最雜亂無章的玩家也要把事情整理妥當(dāng)。開發(fā)環(huán)境介紹 編程環(huán)境的選擇目前,移動(dòng)開發(fā)有以下四種主流平臺(tái)。Java Micro Edition(Java ME),Binary Runtime Environment for Wireless(BREW),Symbian和Window Mobile Smartphone。其中:Binary Runtime Environment for
18、Wireless(BREW)BREW是基于高通公司的Code Division Multiple Acces(CDMA)技術(shù)的 為開發(fā)平臺(tái)。它使用C或C+結(jié)合BREW API來開發(fā)BREW設(shè)備上面的程序。和Java ME一樣BREW能夠作為游戲和地磁 操作系統(tǒng)之間的一個(gè)中介。和Java ME不同,BERW也支持本地代碼,能夠?qū)iT針對(duì)某一 的處理器而編譯。本地代碼通常比對(duì)應(yīng)的解釋版本要快很多,但在設(shè)備之間移植會(huì)花費(fèi)很多技巧。在北美和亞洲有部分無限通信服務(wù)提供商。SymbianSymbian是一種開放的操作系統(tǒng),任何設(shè)備制造商都能獲得使用許可。Symbian支持C+、Java和Visual Bas
19、ic等編程語言。但大多數(shù)商業(yè)Symbian游戲都是用C+開發(fā)并作為本地Symbian應(yīng)用程序,這使得它們和Java開發(fā)的游戲相比更快一些。Window Mobile Smartphone在Window Mobile Smartphone平臺(tái)上,可以使用在編寫Pocket PC游戲時(shí)所用的一樣的工具和API。這意味著要使用C、C+或C#編程語言并結(jié)合使用Window Mobile API。這里我選用Java Micro Edition(Java ME)作為開發(fā)平臺(tái)。Sun Microsystem公司在1999年6月推出Java ME。Java ME用于為信息家電市場(chǎng)提供應(yīng)用服務(wù),這些信息家電包括
20、傳呼機(jī)、移動(dòng) 、個(gè)人商務(wù)助理(PDA)、電視機(jī)頂盒、POS終端以及其他消費(fèi)電子設(shè)備。Java ME體系結(jié)構(gòu)采用模塊化、可擴(kuò)展的設(shè)計(jì)。這種設(shè)計(jì)通過一個(gè)3層軟件模型來實(shí)現(xiàn)。由于無線移動(dòng)設(shè)備比桌面計(jì)算機(jī)具有更弱的計(jì)算能力和更小的屏幕,Java ME代表著Java SE的一個(gè)簡(jiǎn)化功能集,Java ME是Java SE的一個(gè)子集,它支持一個(gè)較小的功能集,這些功能適用于無線和有線的移動(dòng)設(shè)備。Java ME包括一組可以靈活調(diào)用的開發(fā)工具和豐富的應(yīng)用程序接口(API)。依靠通用的字節(jié)碼而不是本地應(yīng)用程序代碼,其程序不需要費(fèi)多大力氣就可以移植到不同的 。同時(shí)全球 制造商中,Java ME有著最廣泛的工業(yè)支持。
21、Java ME也是目前最占據(jù)優(yōu)勢(shì)的移動(dòng)軟件開發(fā)技術(shù)。并且所有的跡象表明它將保持并可能繼續(xù)擴(kuò)展它的市場(chǎng)份額。2007年約有4.5億支持Java的 銷售出去,占據(jù)整個(gè) 市場(chǎng)的75%。按照MIDP規(guī)范開發(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è)備所使用的虛擬機(jī)的限制有關(guān)。為了保證虛擬機(jī)盡可能地小且高效,在一個(gè)運(yùn)行時(shí)MIDlet類上所執(zhí)行的驗(yàn)證被最小化。預(yù)驗(yàn)證在編
22、譯之后發(fā)生,并生成一個(gè)新的class文件,這個(gè)文件是通過驗(yàn)證后等待測(cè)試或發(fā)布的。最后MIDlet打包成JAR文件以便發(fā)布。應(yīng)用程序描述符(JAD文件)提供了和一個(gè)JAR文件中包含的多個(gè)MIDlet相關(guān)的描述信息。一個(gè)MIDlet套件中的JAR文件,能夠提供安裝和訪問單個(gè)MIDlet的相應(yīng)的信息。Java SDK是用Java進(jìn)行開發(fā)的一個(gè)標(biāo)準(zhǔn)開發(fā)工具包。Java ME Wireless Toolkit(JWT)的作用相當(dāng)于一個(gè)用來和Java SDK協(xié)同工作的插件,它包括用來驗(yàn)證和測(cè)試MIDlet的一個(gè)字節(jié)碼驗(yàn)證器和幾個(gè)Java ME模擬器。Java ME技術(shù)架構(gòu)分為:簡(jiǎn)表(Profile)、配置
23、(Configuration)和Java虛擬機(jī)(Java Virtual Machine)3層,它們都構(gòu)建在本地操作系統(tǒng)之上。其中,簡(jiǎn)表層定義了特定系列設(shè)備上可用的應(yīng)用程序編程接口(API)的最小子集;配置層面對(duì)的是大量各種不同的小型嵌入式設(shè)備,通過定義其配置可以描述硬件的功能;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ī)范開發(fā)的Java ME應(yīng)用程序叫做MIDlet。用Java ME MIDP創(chuàng)建的任何游戲?qū)嶋H上都是MIDlet。MIDlet類
24、存儲(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è)文件是通過驗(yàn)證后等待測(cè)試或發(fā)布的。最后MIDlet打包成JAR文件以便發(fā)布。應(yīng)用程序描述符(JAD文件)提供了和一個(gè)JAR文件中包含的多個(gè)MIDlet相關(guān)的描述信息。一個(gè)MIDlet套件中的JAR文件,能夠提供安裝和訪問單個(gè)MIDlet的相應(yīng)的信息。本系統(tǒng)的編譯環(huán)境選用Java
25、 ME Wireless Toolkit(JWT)version 2.1,這樣對(duì)于游戲中包含的類,字節(jié)碼驗(yàn)證器在打包前對(duì)它們進(jìn)行驗(yàn)證。Java ME模擬器可以用來在PC上測(cè)試,而不必下載到移動(dòng)設(shè)備上。Java ME Wireless Toolkit(WTK)簡(jiǎn)介Java ME Wireless Toolkit(WTK) 的全稱是:Java ME無線開發(fā)工具包。這一工具包的設(shè)計(jì)目的是為了幫助開發(fā)人員簡(jiǎn)化Java ME的開發(fā)過程。它的功能包括了編譯、打包、模擬執(zhí)行MIDP應(yīng)用程序。其中包括了字節(jié)碼驗(yàn)證器、Java ME模擬器、KToolBar、預(yù)配置服務(wù)器(provisioning server)
26、等很有用的工具。該工具箱包含的生成工具、實(shí)用程序以及設(shè)備仿真器?,F(xiàn)在共推出有四個(gè)版本,分別是1.0.4, 2.0, 2.1和2.2。每個(gè)版本都包括英語,日語,簡(jiǎn)體中文,繁體中文4個(gè)語種包。它的功能包括了編譯、打包、模擬執(zhí)行MIDP應(yīng)用程序。1.0.4版只能夠開發(fā)MIDP1.0 應(yīng)用程序,2.0版只能夠開發(fā)MIDP2.0應(yīng)用程序,2.1版則可以同時(shí)開發(fā)MIDP1.0、JTWI(CLDC1.0,MIDP2.0,WMA1.1)可改用CLDC1.1或加入MMAPI1.1)、自定義(隨機(jī)組合Configuration、Profile以及Optional Package)三種環(huán)境下的應(yīng)用程序。2.2版中,
27、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í)也可以使用該版本開發(fā)面向CLDC1.0 和MIDP1.0的應(yīng)用程序。WTK工具包中的KToolBar是一個(gè)可視化的開發(fā)環(huán)境,可以通過一個(gè)圖形用戶界面來創(chuàng)建、編譯、打包和測(cè)試Java ME應(yīng)用程序。它也提供了直接的方法來管理MIDlet項(xiàng)目并生成設(shè)置。這里我選用WTK 2.1作為開發(fā)環(huán)境
28、。安裝WTK 2.1后,將得到一個(gè)包括多種實(shí)用工具的開發(fā)包。以下是安裝顯示的菜單項(xiàng),見下圖:圖2 WTK文件結(jié)構(gòu)無論哪個(gè)版本的WTK 都會(huì)包括以下幾個(gè)目錄:appdb 目錄: RMS 數(shù)據(jù)庫信息apps 目錄: WTK 自帶的demo 程序bin 目錄: Java ME 開發(fā)工具執(zhí)行文件docs 目錄: 各種幫助與說明文件lib 目錄: Java ME 程序庫,Jar 包與控制文件session 目錄:性能監(jiān)控保存信息wtklib 目錄: JWTK 主程序與模擬器外觀Java ME Wireless Toolkit(WTK)開發(fā)環(huán)境的簡(jiǎn)介打開WTK下的KTookBar。選擇打開項(xiàng)目,WTK 會(huì)
29、把自身apps目錄下的應(yīng)用項(xiàng)目全部顯示出來,選擇“打開項(xiàng)目”后,能夠?qū)pps目錄下的MIDlet項(xiàng)目進(jìn)行開發(fā)更改, 見下圖:圖3 打開一個(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程序,除了JAD描述文件,還必須打包成JAR文件。在KToolbar選中Project-Package-Create Package,可以
30、把整個(gè)程序,包括資源文件打包成JAR文件。形成的JAR保存在項(xiàng)目對(duì)應(yīng)的bin目錄下,如下圖:圖4 創(chuàng)建一個(gè)包KToolBar除了“產(chǎn)生包”,另外還有“產(chǎn)生混淆包”功能。為了防止別人反編譯后讀取源代碼,將程序(.class 文件)進(jìn)行混淆,經(jīng)過混淆的Java Byte Code可以增加反編譯源代碼的時(shí)間。在KToolBar的Edit-Preferences里面提供很多實(shí)用的功能,如下圖:圖5 選擇Preferences菜單KToolBar除了“產(chǎn)生包”,另外還有“產(chǎn)生混淆包”功能。為了防止別人反編譯后讀取源代碼,將程序(.class 文件)進(jìn)行混淆,經(jīng)過混淆的Java Byte Code可以增加
31、反編譯源代碼的時(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)牙操作屬性,以盡可能模擬 實(shí)際運(yùn)行環(huán)境。游戲設(shè)計(jì)俄羅斯方塊游戲的背景俄羅斯方塊是俄羅斯人阿列克謝帕基特諾夫(Alexey Pazhitnov)發(fā)明。人們一開始并沒預(yù)料到它將會(huì)有如此廣泛的吸引力。實(shí)際上,在游戲發(fā)明后的數(shù)年間,俄羅斯方塊成了無數(shù)場(chǎng)專利官司和法律糾紛的目標(biāo),而許多公司也不遺
32、余力地上陣廝殺,想要將游戲的創(chuàng)意據(jù)為己有。一個(gè)最初的版本是SpectrumHolobyte為IBM兼容機(jī)開發(fā)的游戲。1988年,俄羅斯方塊在街機(jī)上也變得非常流行,這歸功于Atari,因?yàn)樗麄儼l(fā)布了一個(gè)能讓兩名玩家同時(shí)游戲的版本。俄羅斯方塊經(jīng)常被稱為拼圖游戲。玩家需要找出如何能把各塊積木最好的拼在一起的方法。俄羅斯方塊相當(dāng)于直角的智力拼圖游戲,或者其它一種“在這有限空間內(nèi)組織幾何體”的拼圖。俄羅斯方塊為了創(chuàng)造真正引人入勝的游戲,它巧妙的平衡了拼圖游戲與動(dòng)作游戲的機(jī)制。因而每個(gè)人玩這個(gè)游戲都會(huì)有一次不同的體驗(yàn)。俄羅斯方塊所用到的一種動(dòng)作游戲機(jī)制是越來越逼近的威脅感,留給玩家的時(shí)間總是非常有限。俄羅
33、斯方塊中積木是從上面落下來。如果玩家不在積木落到屏幕底下或翻轉(zhuǎn)它,不能給它找一個(gè)最有利的位置,這塊積木就可能會(huì)堵住某處,而它下面的幾行也就沒有辦法拼接完整,玩家也就離游戲結(jié)束又靠近了一行或幾行。在游戲進(jìn)程中,積木落下來的速度越來越快,這樣對(duì)玩家的挑戰(zhàn)也就越來越大,游戲的難度也逐步增加。俄羅斯方塊游戲的規(guī)則俄羅斯方塊游戲的玩法非常簡(jiǎn)單易學(xué),游戲界面是一個(gè)很高的長(zhǎng)方形2D盒子,方塊出現(xiàn)在盒子的上方,這些方塊都由四個(gè)小方塊組成,并按照各種方式排列,其中每一個(gè)方塊都至少和另一個(gè)方塊相連。然后,這些積木慢慢地落向盒子底部,玩家可以把這些方塊左右移動(dòng)或旋轉(zhuǎn)。一旦這個(gè)方塊碰到阻礙,比如盒底或者另一個(gè)方塊,它
34、就會(huì)停止,而玩家可以對(duì)之加以操作。當(dāng)屏幕底端的方塊拼滿一橫行時(shí),這個(gè)層的方塊就會(huì)消失,而這一行以上的所有方塊都會(huì)下降一層。而當(dāng)那些沒有拼完的橫行填滿整個(gè)長(zhǎng)方形盒子,新的方塊無法再出現(xiàn)時(shí),游戲就結(jié)束了。俄羅斯方塊游戲的特性(1)單屏游戲:俄羅斯方塊全部反映在一個(gè)屏幕上。玩家可以在同一時(shí)間看到整個(gè)游戲環(huán)境,在此基礎(chǔ)上決定怎么處理手上的這塊積木。這個(gè)游戲當(dāng)中沒有任何探險(xiǎn)成分在內(nèi),它不會(huì)讓玩家真正大吃一驚,玩家能夠看到讓游戲順利進(jìn)行下去的所有信息,所以玩家輸了的話只能怪他自己。(2)無限游戲:只要積木還沒有堆到盒頂,俄羅斯方塊就允許玩家一直玩下去,不管他做出了多少錯(cuò)誤的決定。每次游戲都以失敗而告終,沒
35、有人真正能打敗這個(gè)游戲。玩家們總是能找到提高玩俄羅斯方塊技藝的方法,這就是俄羅斯方塊和傳統(tǒng)拼圖游戲的根本不同。一旦玩家拼好了一幅拼圖,只要他還記得他是怎么拼的,那么這個(gè)拼圖就對(duì)他再也無挑戰(zhàn)了。所以人們通常不會(huì)多次玩一個(gè)拼圖,但一個(gè)設(shè)計(jì)精巧的游戲卻總能讓人玩上一遍又一遍。俄羅斯方塊正是這樣一個(gè)游戲。(3)多條生命:和大多數(shù)的街機(jī)游戲不同,最早的俄羅斯方塊只給玩家一條生命。積木一堆到盒子頂部,玩家就輸了。但是游戲的設(shè)計(jì)允許玩家出現(xiàn)錯(cuò)誤,同時(shí)還不會(huì)立即敗下陣來。當(dāng)積木疊在長(zhǎng)方盒子的底部時(shí),玩家可以看到自己所犯的錯(cuò)誤,在游戲結(jié)束前,他還是有時(shí)間想一想如何把后面的積木拼放得更合理些。這樣,俄羅斯方塊雖然
36、沒有給玩家多條生命,但卻在玩家重新開始前,給玩家一個(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è)游戲只需極少的鍵位,所有操作都在屏幕上一覽無余。這意味著,不論是否熟悉計(jì)算機(jī)游戲,任何人都可以走過來并立即開始玩它。然而,玩家永遠(yuǎn)不可能完全掌握這個(gè)游戲,因?yàn)檫@個(gè)游戲的難度與是遞增并且它在理論上可以玩無限長(zhǎng)的時(shí)間。游戲系統(tǒng)分
37、析設(shè)計(jì)系統(tǒng)解決方案本系統(tǒng)在Windows XP的操作系統(tǒng)下,以Java Micro Edition Wireless Toolkit 2.1為開發(fā)工具,用中文版UltraEdit做為代碼編輯器而實(shí)現(xiàn)的。在KToolBar開發(fā)包的DefaultColorPhone模擬器下進(jìn)行調(diào)試。系統(tǒng)總體結(jié)構(gòu)系統(tǒng)開發(fā)的主要任務(wù)是俄羅斯方塊游戲在無線移動(dòng)端的實(shí)現(xiàn)。本系統(tǒng)的主要實(shí)現(xiàn)功能模塊分為:難度選擇模塊、方塊處理模塊、游戲規(guī)則模塊。難度選擇模塊用戶在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。判斷
38、游戲是否結(jié)束圖6 Title屏選擇關(guān)卡模塊圖方塊處理模塊方塊處理模塊定義方塊的7種狀態(tài),每種狀態(tài)都是由四個(gè)小方塊組合而成,如下: 圖7 方塊形狀模塊圖游戲規(guī)則模塊游戲規(guī)則模塊主要實(shí)現(xiàn)俄羅斯方塊游戲基本規(guī)則。比如,積滿一行后消減;能夠快速直接的下落;記錄游戲最高分;方塊翻轉(zhuǎn);分?jǐn)?shù)計(jì)算;隨機(jī)生成方塊,見下圖:游戲規(guī)則消減積滿行快速下落方塊翻轉(zhuǎn)分?jǐn)?shù)計(jì)算隨機(jī)生成方塊圖8 游戲規(guī)則模塊圖游戲中斷處理流程中斷處理是移動(dòng)設(shè)備程序生命周期的重要組成特性,包括下圖三種階段:運(yùn)行階段(startApp)掛起階段(pauseApp)結(jié)束階段(destroyApp)喚醒掛起結(jié)束結(jié)束圖9 系統(tǒng)生命周期圖系統(tǒng)實(shí)現(xiàn)與測(cè)試
39、系統(tǒng)源文件結(jié)構(gòu)本系統(tǒng)由10個(gè)類組成并實(shí)現(xiàn)全部功能。項(xiàng)目名字為TetrisMidlet,其項(xiàng)目文件結(jié)構(gòu)如下圖:圖10 項(xiàng)目結(jié)構(gòu)圖在項(xiàng)目源文件中,src文件夾下為實(shí)現(xiàn)系統(tǒng)的源文件。建了兩個(gè)包作為功能劃分,分別為:ui包和model包。 難度選擇模塊難度選擇模塊結(jié)構(gòu)ui包里包含以下類: InfoBox.java 用于顯示數(shù)字的信息框TitleBox.java 顯示title屏,包含當(dāng)前高分提示選擇一個(gè)難度NextPieceBox.java顯示下一個(gè)激活方塊TetrisCanvas.java處理程序的所有UIDisplayBox.java 在屏幕上顯示Box其結(jié)構(gòu)圖如下:ui包InfoBoxTitle
40、BoxNextPieceBoxTetrisCanvasDisplayBox圖11 ui包結(jié)構(gòu)圖其中核心類DisplayBox.java的方法圖如下:圖12 類DisplayBox的方法圖在DisplayBox.java中方法paint()實(shí)現(xiàn)了title屏的顯示,其代碼如下:public 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);/ 邊框
41、this.paintBoxContents(g);下面是TerisCanvas.java中繪制方塊paintBlock()方法的實(shí)現(xiàn)代碼:private void paintBlock(int x, int y, int blockType, Graphics g) int blockX = this.boardX + (this.blockSize * x);int blockY=this.boardY+(this.blockSize* (y - TetrisConstants.TOP_VISIBLE_ROW);if(TetrisConstants.BLOCK_EMPTY != blockT
42、ype) / 繪制下落時(shí)的陰影g.setColor(TetrisConstants.COLOR_BLACK);g.fillRect(blockX + 1, blockY + 1, this.blockSize - 1, this.blockSize - 1);/ 繪制一個(gè)實(shí)際的方塊覆蓋在陰影上this.setColor(blockType, g);g.fillRect(blockX, blockY, this.blockSize - 1, this.blockSize - 1); else /繪制顏色g.setColor(TetrisConstants.COLOR_WHITE);g.fillR
43、ect(blockX, blockY, this.blockSize, this.blockSize);其中,TOP_VISIBLE_ROW為TetrisConstants下定義,Y坐標(biāo)的從行0開始索引的位置,初始值為2。BLOCK_EMPTY為TetrisConstants下定義的空方塊,初始值為-1。COLOR_BLACK為TetrisConstants下定義的預(yù)設(shè)RGB顏色,初始值為0 x00000000。COLOR_WHITE為TetrisConstants下定義的預(yù)設(shè)RGB顏色,初始值為0 x00ffffff。難度選擇模塊功能模擬器程序運(yùn)行,在應(yīng)用程序列表里顯示可以載入運(yùn)行的模擬程序
44、,如下圖:圖13 載入程序點(diǎn)擊運(yùn)行程序后,在title屏顯示游戲名稱、作者、最高分記錄和按鍵提示,點(diǎn)擊數(shù)字鍵輸入0-9中的一個(gè)數(shù)字,以選擇不同難度的關(guān)卡,如下圖:圖14 運(yùn)行游戲在title屏,也可以點(diǎn)擊左軟鍵退出程序。 游戲規(guī)則模塊功能游戲規(guī)則模塊結(jié)構(gòu)游戲規(guī)則模塊包含3個(gè)類:DropThread.java 處理方塊下落問題TetrisConstants.java 常數(shù)定義TetrisMidlet.java 游戲規(guī)則和對(duì)鍵盤輸入的捕捉,以及中斷的處理其結(jié)構(gòu)圖如下:TetrisMidletUi包Model包DropThreadTetrisConstantsTetrisMidlet圖15 游戲規(guī)則
45、模塊結(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)前下落的方塊if(this.skipNextTick) this.skipNextTick = false; else this.game.tick();try Thread.sleep(this.game.getTickSpeed();/ 線程睡眠 catch(InterruptedException ie) 游戲規(guī)則模塊功能游戲規(guī)則模塊實(shí)
46、現(xiàn)俄羅斯方塊游戲的主要功能包括,消減積滿的行、快速下落、方塊翻轉(zhuǎn)、分?jǐn)?shù)計(jì)算、下落碰撞檢測(cè)、隨機(jī)生成方塊。下面是消減積滿行功能代碼,如下:private int clearCompletedRows(TetrisPiece piece) TetrisBoard board = this.getBoard();/ 檢查方塊的每一行,看是否以完成for(int i = 0; i = 0; y-) /從下到上重復(fù)if(numClearedRows 0) board.dropRow(y, numClearedRows);if(this.isRowCompleted(y) numClearedRows+;
47、this.markRowCompleted(y, false);/ 為下一次重置/ 清除最上面的完成行數(shù)for(int i = 0; i numClearedRows; i+) board.clearRow(i);return numClearedRows;為了增加玩家在游戲過程中的游戲性,下落的方塊設(shè)置成隨機(jī)生成,這里利用rand.nextInt方法得到隨機(jī)數(shù),下面是隨機(jī)生成方塊功能的部分代碼,如下:private int getRandomPieceType() return Math.abs(rand.nextInt() % TetrisConstants.NUM_PIECE_TYPES
48、) + 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部分通過圖9的系統(tǒng)生命周期流程圖,已經(jīng)了解了游戲中斷處理的過程。在游戲運(yùn)行時(shí)可以按右軟鍵調(diào)用程序生命周期中pauseApp()方法暫停游戲,方塊會(huì)停在暫停位置,直到玩家再次點(diǎn)擊右軟鍵恢復(fù)游戲,pauseApp()方法代碼如下:protected void pauseApp() / 掛起程序使游戲進(jìn)入暫停狀態(tài)if(TetrisConstants.R
49、UNNING_STATE = this.gameState) this.pauseGame(); 在pauseApp方法中調(diào)用了pauseGame()方法,其實(shí)現(xiàn)代碼如下:private void pauseGame() / 把暫停命令替換成恢復(fù)命令this.gameCanvas.removeCommand(this.pauseCommand);this.gameCanvas.addCommand(this.resumeCommand);/ 進(jìn)入暫停狀態(tài)并停止下落this.setGameState(TetrisConstants.PAUSED_STATE);this.dropThread.st
50、opThread();游戲暫停階段畫面如下:圖18 游戲暫停狀態(tài)圖當(dāng)點(diǎn)擊右軟件恢復(fù)游戲后,方塊從暫停位置繼續(xù)下落,這里用了resumeGame()來實(shí)現(xiàn)此功能,代碼如下:private void resumeGame() / 把恢復(fù)命令替換成暫停命令this.gameCanvas.removeCommand(this.resumeCommand);this.gameCanvas.addCommand(this.pauseCommand);/ 進(jìn)入運(yùn)行狀態(tài)并下落this.setGameState(TetrisConstants.RUNNING_STATE);this.runDropThread(
51、);游戲恢復(fù)階段狀態(tài),如下圖:圖19 游戲恢復(fù)狀態(tài)圖 方塊處理模塊方塊處理模塊結(jié)構(gòu)俄羅斯方塊游戲中出現(xiàn)的七種方塊是由4個(gè)小塊組合而成。方塊處理模塊包含在model包中:TetrisPiece.java當(dāng)前下落方塊的處理TetrisBoard.java定義方塊格子的狀態(tài)其類結(jié)構(gòu)圖如下:ModelTetrisPieceTetrisBoard圖20 方塊處理模塊結(jié)構(gòu)圖核心類TetrisPiece中實(shí)現(xiàn)了七種方塊下落時(shí)翻轉(zhuǎn)方式的下落,方塊翻轉(zhuǎn)方式分三種方式:自由翻轉(zhuǎn)(Free)、兩面翻轉(zhuǎn)(Toggle)、不能翻轉(zhuǎn)(None),下圖是判斷圖示:兩面翻轉(zhuǎn)(Toggle)自由翻轉(zhuǎn)(Free)無翻轉(zhuǎn)(None
52、)圖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舉例說明其進(jìn)行翻轉(zhuǎn)判斷的代碼:private void setAsNewIPiece(int x, int y) this.pieceType = TetrisConstants.I_PIECE;this.rotationType = TetrisConstants.ROTATION_TYPE_TOGGLE;/只能進(jìn)行兩個(gè)方向的旋轉(zhuǎn),設(shè)置類型為TOGGLEthis
53、.rotationToggle = true;/ 設(shè)置TOGGLE標(biāo)志為TUREthis.setBlockCoords(0, x - 1, y);this.setBlockCoords(1, x , y);this.setBlockCoords(2, x + 1, y);this.setBlockCoords(3, x + 2, y);下圖是類TetrisPiece的方法圖:圖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+
54、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)類型為TOGGLErotateDirection = this.rotationToggle; /判斷翻轉(zhuǎn)方向this.rotationToggle = !this.rotationToggle; / 如果與canRotate匹配,中心點(diǎn)方塊將被使用/ 重構(gòu)四
55、個(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 - pivotY;int dy = blockX - pivotX;if(rotateDirection) / 如向左旋轉(zhuǎn)dx *= -1; else / 如向右旋轉(zhuǎn)dy *= -1;int rotateX = pivotX + dx;int rot
56、ateY = pivotY + dy;this.setBlockCoords(i, rotateX, rotateY);/得到翻轉(zhuǎn)后的新坐標(biāo)方塊處理模塊功能對(duì)當(dāng)前下落方塊的處理,主要功能是及時(shí)刷新圖像,保證方塊狀態(tài)及時(shí)更新。核心類TetrisBoard.java實(shí)現(xiàn)了此功能,其方法圖如下:圖24 類TetrisBoard方法結(jié)構(gòu)圖當(dāng)下落方塊頂端積滿后,游戲系統(tǒng)判斷游戲結(jié)束。在TetrisBoard.java中的checkRowCompleted()方法實(shí)現(xiàn)了此功能,其代碼如下:public boolean checkRowCompleted(int rowY) for(int x = 0; x
57、 TetrisConstants.WIDTH; x+) if(TetrisConstants.BLOCK_EMPTY = this.getBlockType(x, rowY) / 有空方塊,行不被填充return false;return true;如下圖:圖25 方塊下落游戲圖像刷新狀態(tài)圖當(dāng)游戲結(jié)束時(shí)立即顯示title屏,計(jì)算并顯示出這次游戲的最高分。同時(shí)等待玩家鍵入數(shù)字,選擇游戲難度開始新的游戲。其實(shí)現(xiàn)由init()方法控制,其代碼如下:private void init() this.board = new TetrisBoard();this.gameCanvas = new Tetr
58、isCanvas(this);this.activePiece = new TetrisPiece(); /方塊處理this pletedRows = new booleanTetrisConstants.HEIGHT; /初始化數(shù)組this.hiScore = this.openAndReadHiScore();/ 從RMS得到當(dāng)前存儲(chǔ)的高分this.nextPieceType = TetrisConstants.UNINITIALIZED;this.rand = new Random();/ 設(shè)置exit/pause/resume命令this.setupCommands();this.ga
59、meCanvas.addCommand(this.exitCommand);/ 顯示title屏this.setGameState(TetrisConstants.TITLE_STATE);Title屏將顯示如下圖:圖26 結(jié)束并重新開始游戲狀態(tài)圖結(jié) 論本系統(tǒng)是一個(gè)基于Java ME平臺(tái)的無線網(wǎng)絡(luò)移動(dòng)端的俄羅斯方塊游戲,利用Java ME Wireless Toolkit(WTK)開發(fā)包工具在無線網(wǎng)絡(luò)移動(dòng)端上實(shí)現(xiàn)經(jīng)典的俄羅斯方塊游戲。論文開始部分對(duì)無線網(wǎng)絡(luò)移動(dòng)系統(tǒng)開發(fā)中常使用幾種開發(fā)語言和環(huán)境作了比較,說明了選擇Java ME Wireless Toolkit作為開發(fā)環(huán)境的的原因并對(duì)它作了相關(guān)
60、的介紹。并展示了在WTK中打開一個(gè)項(xiàng)目、把源文件打包成JAR包、產(chǎn)生混淆包的方法和過程。在系統(tǒng)設(shè)計(jì)時(shí),遵循了無線網(wǎng)絡(luò)移動(dòng)端程序的startApp、pauseApp、destroyApp的開發(fā)生命周期。在設(shè)計(jì)與實(shí)現(xiàn)方面,分成難度選擇、游戲規(guī)則、方塊處理這幾個(gè)模塊進(jìn)行實(shí)現(xiàn)。在開發(fā)與實(shí)現(xiàn)的同時(shí)也講解了俄羅斯方塊這款古老而經(jīng)典游戲的游戲背景、規(guī)則以及相關(guān)特性。最終展示了無線網(wǎng)絡(luò)移動(dòng)端的游戲開發(fā)的基本開發(fā)過程和設(shè)計(jì)思路。和桌面電腦游戲以及家用游戲系統(tǒng)游戲開發(fā)一樣,無線網(wǎng)絡(luò)移動(dòng)端游戲開發(fā)必須要掌握和組合應(yīng)用各種軟件開發(fā)技術(shù)。同時(shí)它也是計(jì)算機(jī)科學(xué)技術(shù)與藝術(shù)結(jié)合的產(chǎn)物,也許正是藝術(shù)和技術(shù)技能的這種獨(dú)特混合,使
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度美容院美容院加盟店美容養(yǎng)生項(xiàng)目合作合同
- 高校音樂游戲課程設(shè)計(jì)
- 企業(yè)證券投資咨詢服務(wù)合同
- 2024通風(fēng)排煙風(fēng)管供應(yīng)與安裝分包合同版B版
- 美容院門店員工勞動(dòng)合同2025年度美容院?jiǎn)T工招聘與培訓(xùn)合作協(xié)議
- 自建房買賣合同打印、公證及2025年度產(chǎn)權(quán)變更服務(wù)協(xié)議
- 蘇州高新區(qū)2025年度勞動(dòng)合同簽訂與解除流程規(guī)范
- 荒山荒坡承包合同書(2025年度)林業(yè)科技推廣與應(yīng)用協(xié)議
- 財(cái)務(wù)咨詢與稅務(wù)籌劃二零二五年度合同
- 酒店客房布草清洗服務(wù)采購(gòu)合同(二零二五)
- 2024年石家莊正定國(guó)際機(jī)場(chǎng)改擴(kuò)建工程合同
- 2025年度愛讀書學(xué)長(zhǎng)定制化閱讀計(jì)劃合同2篇
- 2025年首都機(jī)場(chǎng)集團(tuán)公司招聘筆試參考題庫含答案解析
- 保健品購(gòu)銷合同2025年
- 2024版光伏發(fā)電項(xiàng)目承包經(jīng)營(yíng)權(quán)轉(zhuǎn)讓合同范本3篇
- 實(shí)習(xí)終止及解除協(xié)議書
- 河南省信陽市浉河區(qū)9校聯(lián)考2024-2025學(xué)年八年級(jí)上學(xué)期12月月考地理試題(含答案)
- 中國(guó)冠心病康復(fù)循證實(shí)踐指南(2024版)解讀
- 2024-2030年中國(guó)再生水行業(yè)發(fā)展前景預(yù)測(cè)規(guī)劃分析報(bào)告
- 城市公益性公墓建設(shè)項(xiàng)目施工組織設(shè)計(jì)
- 2022-2024年江蘇中考語文試題匯編:名著閱讀(教師版)
評(píng)論
0/150
提交評(píng)論