2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩69頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  本科畢業(yè)設(shè)計(jì)</b></p><p><b> ?。?0 屆)</b></p><p>  基于J2ME俄羅斯方塊游戲的設(shè)計(jì)和實(shí)現(xiàn)</p><p>  所在學(xué)院 </p><p>  專業(yè)班級(jí)

2、通信工程 </p><p>  學(xué)生姓名 學(xué)號(hào) </p><p>  指導(dǎo)教師 職稱 </p><p>  完成日期 年 月 </p><p><b>  摘 要</b&

3、gt;</p><p>  隨著時(shí)代的進(jìn)步和新技術(shù)的發(fā)展,手機(jī)因其小巧便捷的特性成為人們必備的通訊工具,同時(shí)手機(jī)的硬件配置要求越來越高,與之對(duì)應(yīng)的增值服務(wù)也越來越多元化。其中游戲作為人們?nèi)粘I钪幸粋€(gè)重要的娛樂項(xiàng)目,理所當(dāng)然出現(xiàn)在手機(jī)上,手機(jī)游戲也就擁有了巨大的市場(chǎng)空間,隨著3g的開通和應(yīng)用,必將迎來新的一輪游戲熱潮!,而J2ME易于開發(fā)和跨平臺(tái)的特性使其成為手機(jī)增值服務(wù)開發(fā)的理想開發(fā)工具。</p>

4、<p>  該系統(tǒng)是一個(gè)基于J2ME平臺(tái)的俄羅斯方塊游戲,利用Java ME Wireless Toolkit(WTK)開發(fā)包工具在無線網(wǎng)絡(luò)移動(dòng)端上實(shí)現(xiàn)經(jīng)典的俄羅斯方塊游戲。該文章先介紹了游戲的開發(fā)背景,然后是對(duì)開發(fā)工具的相關(guān)介紹以及俄羅斯方塊游戲規(guī)則,在設(shè)計(jì)與實(shí)現(xiàn)方面,分成游戲規(guī)則、方塊處理這兩個(gè)模塊進(jìn)行實(shí)現(xiàn),最終展示了該游戲開發(fā)的基本開發(fā)過程和設(shè)計(jì)思路,以及游戲的實(shí)現(xiàn)。</p><p>  關(guān)鍵詞

5、:J2ME;手機(jī)游戲;游戲開發(fā);無線網(wǎng)絡(luò)移動(dòng)端;俄羅斯方塊</p><p><b>  Abstract</b></p><p>  With the progress of The Times and the development of new technology, Mobile phone convenient features become people e

6、ssential communication tools, because its small, and mobile phone hardware configuration to the demand is higher and higher, and the corresponding value-added services also more and more diversified. Which games as peopl

7、e daily life an important entertainment project, granted appear on mobile phones, cellular phone game also has a huge market space, as the 3g enlightened and appl</p><p>  This system is based on J2ME platfo

8、rm game tetris, using Wireless Toolkit (Java ME WTK) tool in the Wireless network setups mobile terminal implemented on classic game tetris. This paper firstly introduces the background of the development of the game, th

9、en the development tools of related introduction and Russian square game rules in the design and realization ways, the rules of the game, a square deal with the modules which make realization and finally demonstrates thi

10、s game development of bas</p><p>  Key Words: J2ME; Mobile games; Game development; The wireless network mobile terminal; Tetris</p><p><b>  目 錄</b></p><p><b>  1

11、 引言1</b></p><p>  1.1 課題研究背景與意義1</p><p>  1.2 手機(jī)游戲的發(fā)展現(xiàn)狀1</p><p>  1.3 論文的主要工作與內(nèi)容安排2</p><p>  2游戲開發(fā)環(huán)境介紹4</p><p>  2.1 編程環(huán)境的介紹和選擇4</p>&l

12、t;p>  2.2 Java ME Wireless Toolkit軟件簡介5</p><p>  2.3 Java ME Wireless Toolkit開發(fā)環(huán)境的介紹7</p><p>  3 俄羅斯方塊游戲介紹11</p><p>  3.1 俄羅斯方塊游戲的背景和規(guī)則11</p><p>  3.2 俄羅斯方塊游戲的特性

13、11</p><p>  3.3 俄羅斯方塊游戲的發(fā)展前景13</p><p>  4 游戲系統(tǒng)分析設(shè)計(jì)15</p><p>  4.1 系統(tǒng)解決方案15</p><p>  4.2 系統(tǒng)總體結(jié)構(gòu)15</p><p>  4.2.1 方塊處理模塊16</p><p>  4.2.2

14、游戲規(guī)則模塊16</p><p>  4.3 游戲中斷處理流程16</p><p>  5 系統(tǒng)的實(shí)現(xiàn)18</p><p>  5.1 系統(tǒng)源文件結(jié)構(gòu)18</p><p>  5.2 游戲規(guī)則模塊18</p><p>  5.2.1 游戲規(guī)則模塊結(jié)構(gòu)18</p><p>  5.2

15、.2 游戲規(guī)則模塊功能19</p><p>  5.3 方塊處理模塊25</p><p>  5.3.1 方塊處理模塊結(jié)構(gòu)25</p><p>  5.3.2 方塊處理模塊功能26</p><p>  6運(yùn)行與測(cè)試30</p><p><b>  7 結(jié)論34</b></p&g

16、t;<p>  致 謝錯(cuò)誤!未定義書簽。</p><p><b>  參考文獻(xiàn)35</b></p><p>  附錄1 系統(tǒng)源代碼36</p><p>  附錄2 畢業(yè)設(shè)計(jì)作品說明書65</p><p><b>  1 引言</b></p><p>

17、;  1.1 課題研究背景與意義</p><p>  隨著經(jīng)濟(jì)社會(huì)的發(fā)展,人民的生活水平也日益提高,移動(dòng)設(shè)備特別是手機(jī)得到了非常廣泛的應(yīng)用,在手機(jī)平臺(tái)上運(yùn)行的游戲也被更多游戲愛好者所接受。作為一個(gè)新興的行業(yè),手機(jī)游戲成為無線增值業(yè)務(wù)迅猛發(fā)展的最大亮點(diǎn)。因此,J2ME作為開發(fā)手機(jī)游戲的主流平臺(tái)有著非常良好的前景。而J2ME這個(gè)主要的游戲開發(fā)平臺(tái)相比其他智能客戶端而言,有個(gè)獨(dú)特的優(yōu)點(diǎn),就是它是專為手機(jī)設(shè)計(jì)的。J2ME

18、應(yīng)用可運(yùn)行在不同投資商的不同設(shè)備上,這一特性在高度競爭的手機(jī)設(shè)備行業(yè)中是特別重要的,現(xiàn)在所有主要的智能手機(jī)制造商都支持J2ME平臺(tái),所以基于J2ME的手機(jī)游戲開發(fā)前景是非常美好的。</p><p>  如今的手機(jī)游戲,無論從視覺效果、聽覺效果還是游戲的可玩性來說,都很精彩。當(dāng)今世界,移動(dòng)電話數(shù)量巨大,除美國之外,其他各個(gè)發(fā)達(dá)國家擁有手機(jī)的人數(shù)比擁有計(jì)算機(jī)的人數(shù)還多。而在我國,手機(jī)擁有量甚至超過了美國的人口數(shù)量,而

19、且每個(gè)月手機(jī)的數(shù)量仍然以驚人的速度增長著。手機(jī)市場(chǎng)的高速發(fā)展帶動(dòng)了手機(jī)游戲市場(chǎng)的急速膨脹,基于Java,BREW等技術(shù)平臺(tái)的手機(jī)游戲市場(chǎng)規(guī)模紛紛呈現(xiàn)幾何增長態(tài)勢(shì)?;贘2ME的俄羅斯方塊游戲雖然只是一款簡單的游戲,但它可謂是一款經(jīng)典之作,因?yàn)橥婕铱梢砸淮我淮蔚靥魬?zhàn)新紀(jì)錄,而且積分越高方塊速度越快,給人一種挑戰(zhàn)感,大大增加了其可玩性。在設(shè)計(jì)這款游戲的同時(shí),還有助對(duì)于J2ME知識(shí)的理解,其次一個(gè)小型的手機(jī)游戲中有很多地方代碼結(jié)構(gòu)是相同的,比

20、如開始動(dòng)畫、游戲菜單等。于是,開發(fā)一套可以為我們編寫代碼框架的J2ME手機(jī)游戲開發(fā)引擎對(duì)于提高游戲的開發(fā)速度是很有幫助的。</p><p>  1.2 手機(jī)游戲的發(fā)展現(xiàn)狀</p><p>  IT業(yè)作為一項(xiàng)熱門的產(chǎn)業(yè),游戲已經(jīng)成為其技術(shù)創(chuàng)新背后的動(dòng)力之一。游戲玩家們總是渴望有更強(qiáng)大的硬件條件來實(shí)現(xiàn)質(zhì)量更高的游戲,以獲得較好的視覺效果和樂趣,手機(jī)游戲雖然目前還不能與計(jì)算機(jī)游戲的功能相比較,但

21、是它是在手機(jī)上運(yùn)行的特點(diǎn)是它的一項(xiàng)優(yōu)勢(shì),因?yàn)槭謾C(jī)是我們?nèi)粘I钪须S身攜帶的通訊工具,可以隨時(shí)隨地的玩游戲。由于受目前的技術(shù)條件限制,在眾多的游戲種類中,只有幾種游戲類型是適合無線網(wǎng)絡(luò)移動(dòng)端開發(fā)的,如低激烈程度的街機(jī)游戲;簡單的運(yùn)動(dòng)類游戲;解謎游戲;簡單的匹配游戲和主題測(cè)試游戲。而網(wǎng)絡(luò)游戲產(chǎn)業(yè)的繁榮,讓企業(yè)和消費(fèi)者同時(shí)認(rèn)識(shí)到了游戲的力量,雖然受到屏幕尺寸和操作性的限制,但作為全球使用量最大的通信產(chǎn)品,手機(jī)也具有成功進(jìn)入掌上游戲領(lǐng)域的理由。

22、而彩屏革命過后,手機(jī)游戲就變得更加豐富多樣了。從當(dāng)初諾基亞手機(jī)中經(jīng)典的二維貪吃蛇游戲,到今天的三維畫面及聲色效果俱佳的游戲,手機(jī)游戲已經(jīng)成為一種非常普遍的休閑方式,為玩家?guī)砹撕芏嗫鞓芳靶缕娴捏w驗(yàn),同時(shí)也為開發(fā)商帶來了更多的利潤。</p><p>  這一切得益于Sun公司,它是Java平臺(tái)的東家,可以說手機(jī)端游戲的發(fā)展與Java技術(shù)的發(fā)展有著不可分割的聯(lián)系。Java 2推出后,Sun推出了一種名為J2ME的平臺(tái)

23、,被廣泛應(yīng)用于手機(jī)端。隨著各大手機(jī)生產(chǎn)商對(duì)J2ME標(biāo)準(zhǔn)的支持,以及基于J2ME開發(fā)的手機(jī)游戲的可移植性和快速開發(fā)的優(yōu)勢(shì),J2ME手機(jī)游戲市場(chǎng)需求越來越高。手機(jī)游戲在日本、韓國的發(fā)展是非常快的,2009年日本手機(jī)游戲市場(chǎng)超過一萬億日元,其中K D D I為用戶提供了3 5 0多款游戲。韓國則是全球最大的游戲生產(chǎn)國,SKT提供280款手機(jī)游戲,年銷售額達(dá)1 5 0 0億韓元;K T F為用戶提供了600多款游戲,銷售額約1000億韓元;LG

24、T游戲業(yè)務(wù)在所有內(nèi)容業(yè)務(wù)中占據(jù)了30%的比例。日韓手機(jī)游戲營收占其增值業(yè)務(wù)總營收的近10%,但在我國這個(gè)比例還不到1%。目前我國有超過1億的手機(jī)上網(wǎng)用戶,龐大的用戶基數(shù)以及與日韓的市場(chǎng)差距,意味著我國手機(jī)游戲市場(chǎng)蘊(yùn)藏著一座巨大的“金礦”[1]。</p><p>  1.3 論文的主要工作與內(nèi)容安排</p><p>  本文主要介紹的是基于J2ME俄羅斯方塊游戲的設(shè)計(jì)與實(shí)現(xiàn),該軟件主要實(shí)現(xiàn)的

25、功能如下:</p><p>  1.能產(chǎn)生7種不同形狀的下墜物,其中的有兩對(duì)下墜物形狀相似,只是朝向不同。</p><p>  2.當(dāng)任何一層被填滿時(shí),該層會(huì)消失,最多一次可以消除4行。</p><p>  3.當(dāng)游戲屏幕的頂端被下墜物接觸到且無法繼續(xù)下落,則游戲結(jié)束,屏幕顯示“Game over”字樣。</p><p>  4.游戲具有暫停

26、功能。</p><p>  5.具有積分功能,每次消除任何一行積滿行,都會(huì)得到相應(yīng)的分?jǐn)?shù)。</p><p>  完成后能使軟件在仿真軟件上運(yùn)行并實(shí)現(xiàn)以上功能,而文章的具體內(nèi)容共分為6個(gè)章節(jié),各章節(jié)名稱與大致內(nèi)容如下:</p><p>  第一章 引言:主要介紹課題的研究背景與意義以及論文的內(nèi)容安排。</p><p>  第二章 游戲開發(fā)環(huán)境介

27、紹:主要是對(duì)游戲開發(fā)平臺(tái)J2ME與開發(fā)工具WTK軟件的介紹。</p><p>  第三章 俄羅斯方塊游戲介紹:主要介紹俄羅斯方塊游戲的背景、規(guī)則、游戲特性和該游戲的發(fā)展前景。</p><p>  第四章 游戲系統(tǒng)分析設(shè)計(jì):主要講解游戲的系統(tǒng)解決方法、總體結(jié)構(gòu)以及游戲中斷處理流程。</p><p>  第五章 系統(tǒng)的實(shí)現(xiàn):主要介紹系統(tǒng)的源文件結(jié)構(gòu)由四個(gè)類組成,然后具體

28、地介紹游戲規(guī)則模塊與方塊處理模塊功能的實(shí)現(xiàn)。</p><p>  第六章 運(yùn)行與測(cè)試:主要講解介紹所編寫的軟件各個(gè)要求實(shí)現(xiàn)的功能在仿真軟件上的實(shí)現(xiàn)。</p><p><b>  游戲開發(fā)環(huán)境介紹</b></p><p>  2.1 編程環(huán)境的介紹和選擇</p><p>  如今,移動(dòng)網(wǎng)絡(luò)端開發(fā)主要有以下四種平臺(tái)。Bina

29、ry Runtime Environment for Wireless(BREW),Symbian,Window Mobile Smartphone和Java Micro Edition(Java ME)。以下是對(duì)這四種平臺(tái)的簡單介紹:</p><p>  1.Binary Runtime Environment for Wireless(BREW)</p><p>  BREW是基于高通

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

31、</p><p><b>  2.Symbian</b></p><p>  Symbian是一種開放的操作系統(tǒng),任何的設(shè)備制造商都能獲得使用許可。它支持C++、Java和Visual Basic等編程語言,但是大多數(shù)商業(yè)Symbian游戲都是用C++作為本地Symbian應(yīng)用程序來開發(fā)的,這使得它們和Java開發(fā)的游戲相比要快一些。</p><p

32、>  3.Window Mobile Smartphone</p><p>  在Window Mobile Smartphone平臺(tái)上,可以使用在編寫Pocket PC游戲時(shí)所使用的相同的工具和API。這就意味著要使用C、C++或C#編程語言并結(jié)合使用Window Mobile API。</p><p>  4.Java Micro Edition(Java ME)</p&g

33、t;<p>  Java Micro Edition(Java ME)是Sun Microsystem公司于1999年6月推出的。Java ME以往稱作J2ME, 根據(jù)Sun的定義:Java ME是一種高度優(yōu)化的Java運(yùn)行環(huán)境,其廣泛用于為信息家電市場(chǎng)提供應(yīng)用服務(wù),這些信息家電包括電視機(jī)頂盒、傳呼機(jī)、個(gè)人商務(wù)助理(PDA) 、移動(dòng)電話、POS終端和其他消費(fèi)類電子設(shè)備。 JAVA ME技術(shù)在1999年的JavaOne De

34、veloper Conference大會(huì)上正式推出,它將Java語言的與平臺(tái)無關(guān)的特性移植到小型電子設(shè)備上,允許移動(dòng)無線設(shè)備之間共享應(yīng)用程序,它和Java SE、Java EE一起構(gòu)成Java技術(shù)的三大版本,并且同樣是通過JCP(Java Community Process)制訂的[2]。</p><p>  對(duì)于俄羅斯方塊游戲的設(shè)計(jì)與實(shí)現(xiàn),這里選擇使用Java Micro Edition英文縮寫為J2ME,因?yàn)?/p>

35、J2ME是目前最占優(yōu)勢(shì)的移動(dòng)軟件開發(fā)技術(shù),全球手機(jī)制造商中,Java ME有著最廣泛的工業(yè)支持,據(jù)統(tǒng)計(jì)2007年約有4.5億支持Java的手機(jī)銷售出去,占整個(gè)市場(chǎng)的百分之七十五,并可能繼續(xù)發(fā)展其市場(chǎng)份額。</p><p>  還有很重要的一點(diǎn),我們都知道無線移動(dòng)設(shè)備的屏幕相比計(jì)算機(jī)要小許多,而且計(jì)算能力兩者目前無法相比,Java ME是Java SE的子集和簡化功能集,它支持一個(gè)較小的功能集,這些功能很適合無線移

36、動(dòng)設(shè)備。Java ME擁有豐富的應(yīng)用程序接口(API)和一組可以靈活調(diào)用的開發(fā)工具,依靠的不是本地應(yīng)用程序代碼,而是通用的字節(jié)碼,它的程序移植到不同的手機(jī)比較容易,不需廢多大的力氣,相比其他開發(fā)工具優(yōu)勢(shì)比較明顯。</p><p>  由于Java語言自身的特點(diǎn),和系統(tǒng)的關(guān)聯(lián)不大,所以開發(fā)速度很快,程序的開發(fā)周期比較短。另一方面從技術(shù)入門的角度來說,由于Java語言相當(dāng)?shù)钠占埃鴮?duì)于有一定Java語言基礎(chǔ)的人來說,

37、學(xué)習(xí)J2ME技術(shù)的門檻很低,所以J2ME技術(shù)的普及速度很快,在編寫俄羅斯方塊游戲時(shí),遇到問題通過學(xué)習(xí)相對(duì)要容易解決。但是J2ME也有其技術(shù)的劣勢(shì),其一是功能有限,為了實(shí)現(xiàn)J2ME技術(shù)的移植性,J2ME技術(shù)無法實(shí)現(xiàn)系統(tǒng)的功能,例如讀取電話簿、短信息等系統(tǒng)內(nèi)容,卻無法開發(fā)手機(jī)上的系統(tǒng)軟件。其次是運(yùn)行速度比較慢,由于J2ME技術(shù)運(yùn)行在jvm基礎(chǔ)上,再加上手機(jī)硬件的限制,所以運(yùn)行速度相對(duì)比較慢,不過這個(gè)速度還是在用戶可以接受的范圍之內(nèi)。最后是程

38、序大小受限制,在手機(jī)上J2ME技術(shù)開發(fā)的程序在程序大小上受到很大的限制,例如NOKIA S40系列的程序大小一般都限制在64KB以內(nèi),這個(gè)大大限制了J2ME程序的功能。不過在設(shè)計(jì)實(shí)現(xiàn)俄羅斯方塊游戲上,要求實(shí)現(xiàn)的功能沒有那么復(fù)雜,運(yùn)行速度的要求也是不那么高,程序大小的要求也不高,所以這么些缺陷這設(shè)計(jì)俄羅斯方塊游戲時(shí)沒有太大的影響,所以選擇J2ME作為開發(fā)工具是理智的。</p><p>  2.2 Java ME W

39、ireless Toolkit軟件簡介</p><p>  Java ME Wireless Toolkit是軟件開發(fā)常用工具,簡稱J2ME WTK,全稱Java ME無線開發(fā)工具包。WTK是Sun公司提供的一個(gè)用于創(chuàng)建MIDP應(yīng)用程序的工具集。該工具集包含了生成工具(KToolbar)、實(shí)用程序集(Utilities)和設(shè)備仿真器(Emulator)等主要組件。J2ME WTK當(dāng)前的版本為2.52,支持由JCP

40、所定義的CLDC1.1(JSR 139) 、JTWI 1.0(JSR 185) 、WMA 2.0(JSR 205) 、MMAPI 1.1(JSR 135)等許多標(biāo)準(zhǔn)應(yīng)用程序編程接口(API)的功能。J2ME WTK2.2支持多種操作系統(tǒng),包括Windows操作系統(tǒng)和Red Hat linux操作系統(tǒng),并且有英文、日文、簡體中文和繁體中文幾個(gè)版本。J2ME WTK2.2作為一個(gè)輕量級(jí)的IDE工具,沒有提供編輯功能,必須與其他文本編輯工具結(jié)

41、合在一起使用,也可以與Jbuilder、NetBeans和Eclipse等IDE集成使用。J2ME WTK2.2可以從Sun公司的網(wǎng)站通過注冊(cè)后免費(fèi)獲取。</p><p>  WTK的安裝程序很簡單,但是有一點(diǎn)需要注意,因?yàn)閃TK軟件自身并沒有附帶Java的運(yùn)行環(huán)境JDK,所以,在安裝WTK之前需要先安裝JDK。WTK會(huì)首先自動(dòng)檢測(cè)當(dāng)前系統(tǒng)已有的Java虛擬機(jī),然后顯示出當(dāng)前虛擬機(jī)所在路徑,在確定無誤后,按繼續(xù),

42、最后安裝成功后,您將得到一個(gè)包括多種實(shí)用工具的開發(fā)包,目錄如圖2-1所示:</p><p>  圖2-1 WTK目錄結(jié)構(gòu)</p><p>  WTK的目錄結(jié)構(gòu)包括以下幾個(gè)目錄以及該目錄包含的內(nèi)容:   </p><p>  appdb目錄: RMS數(shù)據(jù)庫信息   </p><p>  apps目錄: WTK自帶的demo程序   </

43、p><p>  bin目錄: J2ME開發(fā)工具執(zhí)行文件   </p><p>  docs目錄: 各種幫助與說明文件   </p><p>  lib目錄: J2ME程序庫,Jar包與控制文件   </p><p>  session目錄:性能監(jiān)控保存信息   </p><p>  wtklib目錄: JWTK主程序與模擬

44、器外觀   </p><p>  WTK是用來開發(fā)MIDP的,為了讓MIDlet能順利編譯和執(zhí)行,WTK必須具有CLDC和MIDP的類庫,它可以幫助我們省去額外安裝調(diào)試這些類庫的時(shí)間。而不同版本的WTK包含的程序庫內(nèi)容是不一樣的,例如2.0版本中包含了midpapi.jar, wma.jar, mmapi.jar,而在2.1版本中則變?yōu)榱薱ldcapi10. jar, cldcapi11.jar, midpapi

45、10.jar, midpapi20.jar, wma.jar以及mmapi.jar;在2.2中,wma.jar又細(xì)分為wma11.jar, wma20.jar。如果您在開發(fā)中需要某個(gè)特定的jar包而當(dāng)前的WTK版本又沒有時(shí),您可以簡單把這個(gè)jar包拷貝如當(dāng)前WTK的lib文件夾即可。apps目錄中包含有許多Demo程序,能為我們演示J2ME的一些技術(shù)實(shí)例,它們可是很好的學(xué)習(xí)材料[3]。</p><p>  2.3

46、 Java ME Wireless Toolkit開發(fā)環(huán)境的介紹</p><p>  在J2ME WTK中,各MIDlet套件被組織成一個(gè)個(gè)項(xiàng)目。因此,一個(gè)項(xiàng)目的最終結(jié)果就是一個(gè)MIDlet套件。項(xiàng)目中包含用于生成MIDlet套件的所有文件,包括Java源文件、資源文件以及MIDlet清單文件和應(yīng)用程序描述文件。J2ME WTK通過Ktboolbar對(duì)項(xiàng)目進(jìn)行新建、打開、設(shè)置、打包和運(yùn)行等管理工作。啟動(dòng)Ktoob

47、ar后就可看到控制臺(tái)窗口,如圖2-2所示:</p><p>  圖2-2 控制臺(tái)窗口</p><p>  新建項(xiàng)目后,需輸入項(xiàng)目的名稱和藥編寫的MIDlet類的名稱,其中MIDlet類名必須和主類名稱一致,新建界面如圖2-3所示:</p><p>  圖2-3 新建項(xiàng)目對(duì)話框</p><p>  新建完成后單擊“設(shè)置”,將自動(dòng)彈出項(xiàng)目設(shè)置

48、窗口,通過其中的各個(gè)選項(xiàng)可以設(shè)置項(xiàng)目的生成環(huán)境,如圖2-4所示:</p><p>  圖2-4 項(xiàng)目設(shè)置窗口</p><p>  如果采用省缺選項(xiàng),只需單擊“確定”關(guān)閉窗口即可,此時(shí),KToolbar控制臺(tái)的窗口標(biāo)題將更改為新的項(xiàng)目名稱。并且,控制臺(tái)中害將顯示一些消息,表明新建項(xiàng)目的源代碼、資源文件和庫文件所儲(chǔ)存的確切位置,如圖2-5所示:</p><p>  圖

49、2-5 新建項(xiàng)目后控制臺(tái)顯示的消息</p><p>  如果要直接運(yùn)行MIDP應(yīng)用程序,只需在程序組中直接選擇“運(yùn)行(R)”即可,在彈出對(duì)話框中選擇其它路徑中的JAD程序運(yùn)行,JAD描述文件與其對(duì)應(yīng)的JAR文件要在同一個(gè)目錄下,需要注意的是運(yùn)行目錄路徑中不能包含中文。KToolBar的生成功能會(huì)將源代碼編譯并預(yù)先審核,但并不會(huì)產(chǎn)生JAR 文件,如果要發(fā)布MIDP程序,除了JAD描述文件,還必須打包成JAR文件。

50、在KToolbar菜單中選擇項(xiàng)目然后選擇包,再選擇產(chǎn)生包就可以把整個(gè)程序和資源文件打包成JAR文件。形成的JAR文件保存在項(xiàng)目所對(duì)應(yīng)的bin目錄下。另外除了產(chǎn)生包之外還有產(chǎn)生混淆包的功能,可以防止別人反編譯后讀取源代碼。</p><p>  最后為了盡可能模擬手機(jī)運(yùn)行環(huán)境,可以在菜單中選擇編輯,然后選擇偏好,選擇自己想要的手機(jī)模擬環(huán)境,如圖2-6所展示:</p><p>  圖2-6 模

51、擬手機(jī)環(huán)境“偏好”的選擇</p><p>  3 俄羅斯方塊游戲介紹</p><p>  3.1 俄羅斯方塊游戲的背景和規(guī)則</p><p>  俄羅斯方塊游戲是一款簡單又經(jīng)典的方塊匹配游戲,它是款相當(dāng)直觀的游戲,一款關(guān)于墜落碎片重新組合的簡單游戲,哪怕新手也會(huì)很自然地想要把它們排列拼湊起來,它會(huì)激起普通人想把雜亂的事物整理成有規(guī)則的形狀的想法,這是一種自然天性,各

52、種方塊的突出點(diǎn)和缺口可以完整地組合。在操控性方面,更是簡單得徹底,只需操作方向鍵就可以對(duì)游戲進(jìn)行全盤控制,可謂是最簡單的游戲操作,這也正符合手機(jī)上運(yùn)行游戲的條件,因?yàn)椴恍枰嗟陌存I。說句玩笑話,俄羅斯方塊可謂是過去二十年間最浪費(fèi)人們時(shí)間的事物之一。它也曾被評(píng)選為歷史上最偉大的游戲之一,起源大概要追溯到八十年代中期,是由俄羅斯人阿列克謝·帕基特諾夫(Alexey Pazhitnov)發(fā)明的,而它的人氣自開發(fā)出來一直到幾年后才開

53、始顯露出來。</p><p>  游戲的概念相當(dāng)簡單,現(xiàn)在已成為一種公認(rèn)的規(guī)則:從屏幕頂部以隨機(jī)順序落下不同形狀的碎片,玩家要試圖把它們拼湊成沒有空隙的行列,每充滿一行就消去這一行,得到相應(yīng)的分?jǐn)?shù),而最多可以同時(shí)消去四行,得到更多的分?jǐn)?shù),當(dāng)玩家進(jìn)行游戲方塊填充上去,接觸到屏幕頂端但下面的方塊無法消去時(shí)游戲就宣告失敗。這款游戲有一特點(diǎn),就是玩家是沒有辦法贏得比賽的,因?yàn)閳?jiān)持的時(shí)間越長,方塊下落的速度就會(huì)變得越來越快

54、,而游戲的吸引力就在于使玩家頂住碎塊的進(jìn)攻,支撐的時(shí)間比上一次更長,贏得更多的分?jǐn)?shù)。俄羅斯方塊舉世聞名的游戲性,在該游戲新鮮出爐時(shí)就顯得非常直觀,深受眾多游戲玩家的好評(píng)。</p><p>  3.2 俄羅斯方塊游戲的特性</p><p>  俄羅斯方塊游戲具有五大主要特性:</p><p>  1.簡單易學(xué),容易操作:</p><p>  俄

55、羅斯方塊游戲真正杰出的地方是在于它的游戲機(jī)制非常非常簡單,淺顯易懂。玩好這個(gè)游戲只需上下左右的方向鍵以及暫停和旋轉(zhuǎn)需要的鍵,所有的操作都在屏幕上一覽無余,這樣的話,不論玩家是否熟悉計(jì)算機(jī)游戲,都可以很好的去駕馭上面的方塊,去拼湊他們,因?yàn)檎砥礈惛鞣N形狀的碎片是人類與生具有的能力。但是,玩家卻永遠(yuǎn)不可能完全掌握這個(gè)游戲,因?yàn)檫@個(gè)游戲在理論上可以玩無限長的時(shí)間,只要玩家不輸。</p><p><b>  

56、2.單屏游戲:</b></p><p>  俄羅斯方塊的游戲另一個(gè)明顯特性是它的游戲內(nèi)容全部反映在一個(gè)屏幕上,包括積分,下一個(gè)到來的方塊等信息。即游戲玩家可以在同一時(shí)間看到整個(gè)游戲環(huán)境,在這個(gè)基礎(chǔ)上可以決定如何處理手上的這塊碎片。這個(gè)游戲中沒有任何的探索成分在內(nèi),不會(huì)嚇著玩家也不會(huì)給玩家驚喜,非常的平淡??偟膩碚f玩家能看到讓游戲順利進(jìn)行下去幾乎所有的信息,所以玩家輸了的話只能怪自己的判斷和思考。<

57、;/p><p><b>  3.無限游戲:</b></p><p>  在游戲過程中只要碎塊還沒有堆到屏幕頂端,這游戲就會(huì)一直進(jìn)行下去,無論玩家犯多少錯(cuò)誤。但是每次游戲都是失敗而告終的,沒有人能真正贏得這個(gè)游戲,除非玩家玩的版本有最高分限制。玩家可以在游戲過程中累積經(jīng)驗(yàn),找到堅(jiān)持更久的技巧,讓游戲水平不斷地提高,這就是俄羅斯方塊相比普通拼圖游戲的一大魅力所在,因?yàn)橥婕页晒?/p>

58、完成了一幅拼圖,只要他還記得是如何拼湊的,那么這個(gè)拼圖對(duì)他而言就沒有挑戰(zhàn)性了,所以大家通常不會(huì)多次玩一個(gè)拼圖,但俄羅斯方塊這個(gè)設(shè)計(jì)精巧的游戲卻能讓玩家玩上一遍又一遍,一直保持吸引力。</p><p><b>  4.無限生命</b></p><p>  和許多街機(jī)游戲不同,俄羅斯方塊游戲不會(huì)因?yàn)橥婕乙驗(yàn)橐淮问д`而結(jié)束,只要方塊不堆積到屏幕頂端。因?yàn)橛螒虻脑O(shè)計(jì)允許玩家犯

59、一定的錯(cuò)誤,卻不會(huì)立即敗下陣來,所以當(dāng)游戲碎塊堆積在長方形盒子的底部時(shí),玩家可以清楚地看到自己的失誤情況,在失敗前,他還是有一定的時(shí)間思考如何把后面的碎塊拼湊得更合理,從而獲取更多的分?jǐn)?shù)。就這樣,俄羅斯方塊游戲雖然沒有給玩家多條生命,但卻在游戲重新開始前,給予游戲玩家一個(gè)思考游戲技巧以及獲得一定成就的機(jī)會(huì)。</p><p><b>  5.最高分制度</b></p><p

60、>  俄羅斯方塊游戲具有一個(gè)計(jì)分模式,它能夠給玩家計(jì)分并把分?jǐn)?shù)記錄在積分排行榜上面,能夠讓玩家本人或其他玩家查看之前的一些記錄。其實(shí),因?yàn)橥婕也豢赡苴A得游戲,所以,為了打破之前的記錄或者挑戰(zhàn)朋友的高分,讓玩家充滿斗志并且興趣濃厚,繼續(xù)尋找方法提高技術(shù)來贏得更多的分?jǐn)?shù),從來在高分排行榜上記錄自己的名字。</p><p>  3.3 俄羅斯方塊游戲的發(fā)展前景</p><p>  1984

61、年6月,在俄羅斯科學(xué)院計(jì)算機(jī)中心工作的數(shù)學(xué)家帕基特諾夫利用空閑時(shí)間編出一個(gè)游戲程序,原本是用來測(cè)試當(dāng)時(shí)一種計(jì)算機(jī)的性能,因?yàn)樗麗弁嫫磮D,突然產(chǎn)生靈感,設(shè)計(jì)出了舉世聞名的俄羅斯方塊游戲。直到一年后,他把這個(gè)程序移植到個(gè)人計(jì)算機(jī)上運(yùn)行,俄羅斯方塊從此開始傳播開來。</p><p>  而在1988年,羅杰斯在美國拉斯韋加斯的一個(gè)展覽會(huì)上看到了俄羅斯方塊游戲,覺得很有趣味,而且發(fā)現(xiàn)其他人也喜歡。作為宜個(gè)游戲?qū)I(yè)人士,羅

62、杰斯立刻嗅到了巨大的商機(jī),隨后他與日本游戲廠商任天堂達(dá)成口頭協(xié)議,出發(fā)前往莫斯科。</p><p>  由于帕基特諾夫把俄羅斯方塊授權(quán)給了他工作的計(jì)算機(jī)中心,使其成為了公有財(cái)產(chǎn),所以羅杰斯面對(duì)的談判對(duì)象是當(dāng)時(shí)蘇聯(lián)政府的代表,最終羅杰斯于1989年代表任天堂取得了俄羅斯方塊游戲在家用計(jì)算機(jī)機(jī)上的授權(quán)。而羅杰斯與帕基特諾夫因此相識(shí),并且成了好朋友,這奠定了此后許多年中他們圍繞俄羅斯方塊進(jìn)行密切合作的基礎(chǔ)。</p

63、><p>  在蘇聯(lián)解體后,帕基特諾夫在羅杰斯的幫助下移民美國,繼續(xù)從事游戲開發(fā)。1996年,他拿回了俄羅斯方塊的知識(shí)產(chǎn)權(quán),與好友羅杰斯一起成立了藍(lán)色行星軟件公司,由該公司獨(dú)家代理俄羅斯方塊游戲的授權(quán)事務(wù)。</p><p>  小方塊拼湊的魅力經(jīng)久不衰,截至2009年,俄羅斯方塊游戲發(fā)售了1.25億份,受到50多個(gè)國家和地區(qū)的玩家喜愛,有超過50種語言的版本,運(yùn)行在幾十種游戲平臺(tái)上,從掌機(jī)、街

64、機(jī)、個(gè)人電腦,到手機(jī)和PDA。而移動(dòng)設(shè)備已經(jīng)成為俄羅斯方塊游戲新的主要平臺(tái),該領(lǐng)域的發(fā)售量已超過7500萬份,并且仍在快速增長中。而在北美和歐洲俄羅斯方塊網(wǎng)絡(luò)版的官方網(wǎng)站上,每天超過100萬人玩這個(gè)游戲。</p><p>  俄羅斯方塊因此獲得了許多獎(jiǎng)勵(lì),在多項(xiàng)評(píng)選中被評(píng)為最經(jīng)典的游戲之一。2002年,一名過分沉迷此游戲的英國玩家在飛機(jī)上用手機(jī)玩俄羅斯方塊游戲,而且不聽機(jī)組人員的勸阻,結(jié)果被判刑入獄4個(gè)月,這個(gè)獨(dú)

65、特的事件可以反映出該游戲的獨(dú)特魅力。</p><p>  如今25年過去了,電子游戲業(yè)發(fā)生了翻天覆地的變化,擁有高畫質(zhì)高操作性的網(wǎng)絡(luò)游戲紛紛出現(xiàn),開辟并占據(jù)了新的市場(chǎng)。如此,俄羅斯方塊這樣的游戲還有前途嗎?答案是肯定有前途的,因?yàn)槎砹_斯方塊是一個(gè)休閑游戲,首先它面對(duì)的是那些沒有精力或興趣玩大型游戲的玩家,這些人只是需要一類簡單好玩的游戲來消遣和打發(fā)時(shí)間,拿起來就能進(jìn)入狀態(tài),在忙碌的生活中尋求片刻放松,因?yàn)槎砹_斯方

66、塊游戲?qū)τ布囊筝^低,所以再目前的大都移動(dòng)設(shè)備來說都可以運(yùn)行,這大大的提高了其普遍性。而在中國市場(chǎng),羅杰斯說他正在與中國騰訊公司商談,研究將俄羅斯方塊集成到即時(shí)通訊軟件QQ中去的事宜。他還將參加今年7月份在中國舉行的國際數(shù)碼互動(dòng)娛樂展覽會(huì),與聯(lián)眾等中國游戲企業(yè)探討合作前景。雖然是一款小小的方塊拼湊游戲,其發(fā)展前景依然一片光明,特別是在小型移動(dòng)設(shè)備上,如圖3-1所示,游戲界面與操作按鈕非常直觀。</p><p>

67、  圖3-1 模擬在移動(dòng)設(shè)備上運(yùn)行俄羅斯方塊游戲的情景</p><p>  4 游戲系統(tǒng)分析設(shè)計(jì)</p><p>  4.1 系統(tǒng)解決方案</p><p>  本系統(tǒng)的操作系統(tǒng)為大家所熟悉的Windows XP,以Java Micro Edition Wireless Toolkit 2.52作為開發(fā)工具,用中文版eclipse做為代碼編輯器而實(shí)現(xiàn)的。在KTool

68、Bar開發(fā)包中菜單編輯中的偏好選擇DefaultColorPhone模擬器,進(jìn)行調(diào)試和運(yùn)行。</p><p>  4.2 系統(tǒng)總體結(jié)構(gòu)</p><p>  本系統(tǒng)開發(fā)的主要任務(wù)是基于J2ME的俄羅斯方塊游戲能在無線移動(dòng)端設(shè)備上實(shí)現(xiàn)。游戲的操作流程非常簡單,用戶啟動(dòng)MIDlet后,馬上就進(jìn)入游戲的歡迎畫面,當(dāng)用戶按下[開始]按鈕后,就可以開始玩游戲了,用戶想暫停時(shí),再次按一下[開始]按鈕,游

69、戲就暫停了,在暫停的情況下再按[開始]按鈕,游戲繼續(xù)運(yùn)行。任何時(shí)候按 [退出]按鈕,游戲MIDlet都會(huì)終止。該流程圖如圖4-2所示:</p><p>  圖4-2 游戲畫面流程圖</p><p>  而根據(jù)游戲的內(nèi)容,俄羅斯方塊游戲最重要的組成是它各式各樣的方塊,還有像消去積滿行得到相應(yīng)的分?jǐn)?shù)等游戲規(guī)則。要實(shí)現(xiàn)這些功能,游戲可分為兩個(gè)模塊:方塊處理模塊和游戲規(guī)則模塊。</p>

70、;<p>  4.2.1 方塊處理模塊</p><p>  本系統(tǒng)中的方塊處理模塊主要有7種形狀的下墜物,每種形狀的下墜物都是由4個(gè)基礎(chǔ)正方形小方塊組成,其中兩種下墜物的形狀是差不多的,只是所朝方向不同而已,如下圖4-2所示:</p><p>  圖4-2 各種形狀的下墜物</p><p>  4.2.2 游戲規(guī)則模塊</p><

71、p>  本系統(tǒng)中的游戲規(guī)則模塊主要任務(wù)是實(shí)現(xiàn)俄羅斯方塊游戲的基本規(guī)則。從游戲屏幕的頂端,從7種形狀的下墜物中隨機(jī)選擇一種下落,在下落過程中可以選擇快速下路,可以控制下墜物旋轉(zhuǎn),直至不能繼續(xù)下落,當(dāng)下墜物接觸到游戲屏幕頂端且無法繼續(xù)下落時(shí),游戲結(jié)束,而每填充滿一行或多行,消去填充滿的,得到相應(yīng)的積分,記錄游戲最高分??偟膩碚f游戲規(guī)則由隨機(jī)生成下墜物,消減積滿行,快速下落,方塊旋轉(zhuǎn),分?jǐn)?shù)計(jì)算組成。結(jié)構(gòu)圖如圖4-3所示:</p&g

72、t;<p>  圖4-3 游戲規(guī)則模塊的結(jié)構(gòu)圖</p><p>  4.3 游戲中斷處理流程</p><p>  在運(yùn)行游戲時(shí),玩家可隨時(shí)暫停游戲或直接結(jié)束游戲,也可以再暫停情況下結(jié)束游戲。中斷處理是移動(dòng)設(shè)備程序生命周期的重要組成特性,包括掛起階段(pauseApp)、運(yùn)行階段(startApp)和結(jié)束階段(destroyApp),各階段轉(zhuǎn)換處理如圖4-4所示:</p

73、><p>  圖4-4 系統(tǒng)生命周期圖</p><p>  即玩家在運(yùn)行游戲時(shí),可以暫停游戲,使之處理掛起階段,暫停時(shí)可以直接結(jié)束游戲,也可以喚醒繼續(xù)進(jìn)行游戲,當(dāng)然運(yùn)行游戲時(shí)同樣可以直接結(jié)束游戲,使之直接轉(zhuǎn)換到結(jié)束階段。</p><p><b>  5 系統(tǒng)的實(shí)現(xiàn)</b></p><p>  5.1 系統(tǒng)源文件結(jié)構(gòu)<

74、;/p><p>  本系統(tǒng)由4個(gè)類組成實(shí)現(xiàn)所有功能,項(xiàng)目名稱為xuqh,MIDlet名也為xuqh,所有實(shí)現(xiàn)系統(tǒng)功能的源文件都在src目錄下,其中xuqh.java為主類,如圖5-1所示:</p><p>  圖5-1 C盤中WTK2.52目錄下xuqh項(xiàng)目下的源文件所在位置</p><p>  5.2 游戲規(guī)則模塊</p><p>  5.2

75、.1 游戲規(guī)則模塊結(jié)構(gòu)</p><p>  本游戲的兩個(gè)模塊由3個(gè)類組成并且實(shí)現(xiàn) ,其中KetrisBlock.java,該類為處理生成下墜物及下落問題。第二個(gè)類KetrisCanvas.java,該類為處理游戲界面問題。第三個(gè)KetrisMap.java,該類為處理游戲畫布問題。游戲規(guī)則模塊由這3個(gè)類中的一些方法實(shí)現(xiàn),總結(jié)如下:</p><p>  消減積滿行由KetrisMap.jav

76、a類中的paint(Graphics)、check(Graphics,int)與deleteRow(Graphics,int)實(shí)現(xiàn)??焖傧侣溆蒏etrisCanvas.java類中的keyPressed(int)控制方塊方向的下移部分實(shí)現(xiàn)。方塊翻轉(zhuǎn)由KetrisBlock.java類中的paint(Graphics)與checkRot()方法實(shí)現(xiàn)。分?jǐn)?shù)計(jì)算由KetrisMap.java類中的init()方法與paintScore(Gra

77、phics)實(shí)現(xiàn)。而隨機(jī)生成下墜物由KetrisBlock.java類中的int()方法、readPattern(int[][][])以及KetrisCanvas.java類中的run()方法實(shí)現(xiàn),其中KetrisCanvas.java類中的run()方法實(shí)現(xiàn)了方塊的循環(huán)下落,代碼如下:</p><p>  public void run() {</p><p>  while (true

78、) {</p><p><b>  try {</b></p><p>  thread.sleep(50);</p><p><b>  }</b></p><p>  catch (InterruptedException e) {</p><p><b>  

79、break;</b></p><p><b>  }</b></p><p>  repaint();</p><p><b>  }</b></p><p><b>  }</b></p><p>  5.2.2 游戲規(guī)則模塊功能</

80、p><p>  基于J2ME的俄羅斯方塊游戲的游戲規(guī)則模塊能實(shí)現(xiàn)的功能為隨機(jī)生成下墜物,消減積滿行,快速下落,方塊旋轉(zhuǎn),分?jǐn)?shù)計(jì)算。</p><p>  俄羅斯方塊游戲的下墜物是隨機(jī)生成的,主要由類KetrisBlock.java中的int()方法、readPattern(int[][][])實(shí)現(xiàn),部分代碼如下:</p><p>  protected void init

81、() {</p><p>  pattern = next;</p><p>  next = Math.abs(rand.nextInt()) % 7 + 1;</p><p>  /* 得到當(dāng)前下墜物 */</p><p>  switch (pattern) {</p><p><b>  case 1

82、:</b></p><p>  readPattern(blockpattern1);</p><p><b>  break;</b></p><p><b>  case 2:</b></p><p>  readPattern(blockpattern2);</p>

83、<p><b>  break;</b></p><p><b>  case 3:</b></p><p>  readPattern(blockpattern3);</p><p><b>  break;</b></p><p><b>  case

84、4:</b></p><p>  readPattern(blockpattern4);</p><p><b>  break;</b></p><p><b>  case 5:</b></p><p>  readPattern(blockpattern5);</p>

85、<p><b>  break;</b></p><p><b>  case 6:</b></p><p>  readPattern(blockpattern6);</p><p><b>  break;</b></p><p><b>  case

86、 7:</b></p><p>  readPattern(blockpattern7);</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  /**</b></p><p>

87、  * 設(shè)置當(dāng)前下墜物變量的內(nèi)容</p><p>  * @param nowblock int[][][] 7種下墜物常量之一*/</p><p>  private void readPattern(int[][][] nowblock) {</p><p>  blockpattern = new int[4][4][4];</p><p&

88、gt;  for (int i = 0; i < 4; i++) {</p><p>  for (int j = 0; j < 4; j++) {</p><p>  for (int k = 0; k < 4; k++) {</p><p>  blockpattern[i][j][k] = nowblock[i][j][k];</p&g

89、t;<p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  游戲中一個(gè)重要環(huán)節(jié)消減積滿行的功能,就是將填滿的行刪除,變成背景的

90、顏色,而被刪除行的上面一行方塊則會(huì)相應(yīng)地下落,直至不能下落停止,其部分代碼如下:</p><p>  public void paint(Graphics g) {</p><p><b>  //清屏</b></p><p>  KetrisCanvas.clear(g);</p><p>  for (int i =

91、 0; i < 16; i++) {</p><p>  for (int j = 0; j < 12; j++) {</p><p>  if (mapdata[i][j] == 8) {</p><p>  KetrisBlock.drawBrick(KetrisCanvas.GAMEAREA_X +</p><p>  j

92、* KetrisCanvas.BRICK_WIDTH,</p><p>  KetrisCanvas.GAMEAREA_Y +</p><p>  i * KetrisCanvas.BRICK_WIDTH, g, 7);</p><p><b>  }</b></p><p><b>  }</b>

93、</p><p><b>  }</b></p><p><b>  }</b></p><p>  public boolean check(Graphics g, int row) {</p><p>  boolean deleteFlag = false;</p><p&

94、gt;  //最多可以連消4行</p><p>  int tmpRowNo;</p><p>  if (row + 4 >= 15) {</p><p>  tmpRowNo = 15;</p><p><b>  }</b></p><p><b>  else {</

95、b></p><p>  tmpRowNo = row + 4;</p><p><b>  }</b></p><p>  for (int y = row; y < tmpRowNo; y++) {</p><p>  boolean flag = true;</p><p>  

96、for (int x = 1; x < 11; x++) {</p><p>  if (mapdata[y][x] == 0) { /* 空白區(qū) */</p><p>  flag = false;</p><p><b>  }</b></p><p><b>  }</b></p&

97、gt;<p>  /* 需要消行 */</p><p>  if (flag) {</p><p>  mapBlockExist[y] = false;</p><p>  for (int x = 1; x < 11; x++) {</p><p>  mapdata[y][x] = 0;</p><

98、;p><b>  }</b></p><p>  deleteRow(g, y);</p><p>  deleteFlag = true;</p><p><b>  //加分</b></p><p>  score += 10;</p><p>  paintSco

99、re(g);</p><p><b>  //發(fā)聲</b></p><p><b>  try {</b></p><p>  if (player != null) {</p><p>  player.start();</p><p><b>  }</b

100、></p><p><b>  }</b></p><p>  catch (MediaException me) {</p><p>  System.out.println("sound not availible");</p><p><b>  }</b></

101、p><p><b>  }</b></p><p><b>  }</b></p><p>  return deleteFlag;</p><p><b>  }</b></p><p>  //刪除行,只是簡單的把該行置黑</p><

102、p>  protected void deleteRow(Graphics g, int y) {</p><p>  g.setColor(KetrisCanvas.BACKGROUD);</p><p>  g.fillRect(KetrisCanvas.GAMEAREA_X + KetrisCanvas.BRICK_WIDTH,</p><p>  Ke

103、trisCanvas.GAMEAREA_Y + y * KetrisCanvas.BRICK_WIDTH,</p><p>  10 * KetrisCanvas.BRICK_WIDTH, KetrisCanvas.BRICK_WIDTH);</p><p><b>  }</b></p><p>  游戲效果圖如圖5-2與5-3所示:<

104、/p><p>  圖5-2 消除積滿行功能實(shí)現(xiàn)前 圖5-3 消除積滿行效果實(shí)現(xiàn)后</p><p>  而分?jǐn)?shù)計(jì)算的功能代碼如下:</p><p>  public void init() {</p><p><b>  //清除計(jì)分</b></p><p>  score = 0;

105、</p><p>  //先把全部元素清0</p><p>  for (int i = 0; i < 16; i++) {</p><p>  for (int j = 0; j < 12; j++) {</p><p>  mapdata[i][j] = 0;</p><p><b>  }&

106、lt;/b></p><p>  mapBlockExist[i] = false;</p><p><b>  }</b></p><p><b>  //設(shè)置2堵墻</b></p><p>  for (int i = 0; i < 16; i++) {</p><

107、;p>  mapdata[i][0] = 8;</p><p>  mapdata[i][11] = 8; }</p><p><b>  //設(shè)置容器底</b></p><p>  for (int i = 0; i < 12; i++) {</p><p>  mapdata[15][i] = 8;

108、}</p><p>  mapBlockExist[15] = true; }</p><p>  private void paintScore(Graphics g) {</p><p><b>  //清除記分牌</b></p><p>  g.setColor(KetrisCanvas.BACKGROUD);&

109、lt;/p><p>  g.fillRect(KetrisCanvas.GAMEAREA_X + 12 * KetrisCanvas.BRICK_WIDTH,</p><p>  KetrisCanvas.GAMEAREA_Y + 6 * KetrisCanvas.BRICK_WIDTH,</p><p>  KetrisCanvas.BRICK_WIDTH * 4,

110、KetrisCanvas.BRICK_WIDTH * 4);</p><p><b>  //計(jì)分</b></p><p>  g.setColor(0, 255, 0);</p><p>  g.setFont(SCOREFONT);</p><p>  g.drawString("" + scor

111、e,</p><p>  KetrisCanvas.GAMEAREA_X + 14 * KetrisCanvas.BRICK_WIDTH,</p><p>  KetrisCanvas.GAMEAREA_Y + 8 * KetrisCanvas.BRICK_WIDTH,</p><p>  g.BASELINE | g.HCENTER);</p>&l

112、t;p><b>  }</b></p><p>  快速下落與方塊翻轉(zhuǎn)功能屬于游戲控制環(huán)節(jié),因?yàn)橛螒虍嫴际且粋€(gè)CommandListener,能接受用戶的鍵盤命令,控制下墜物實(shí)現(xiàn)左移,右移,下移,翻轉(zhuǎn)的動(dòng)作。</p><p>  5.3 方塊處理模塊</p><p>  5.3.1 方塊處理模塊結(jié)構(gòu)</p><p>

113、;  基于J2ME俄羅斯方塊游戲的7種下墜物,由4個(gè)正方形的基礎(chǔ)小方塊組成。</p><p>  而方塊處理模塊的所有功能由KetrisBlock.java類實(shí)現(xiàn),其實(shí)現(xiàn)了方塊的生成,使每種下墜物有固定的顏色,同時(shí)也實(shí)現(xiàn)了七種下墜物下落時(shí)不同翻轉(zhuǎn)方式的下落,下墜物翻轉(zhuǎn)方式分三種,分別是自由翻轉(zhuǎn)(Free)、兩面翻轉(zhuǎn)(Toggle)、不能翻轉(zhuǎn)(None),七種下墜物各自的翻轉(zhuǎn)方式如圖5-4所示:</p>

114、<p>  圖5-4 七種下墜物各自具體的翻轉(zhuǎn)方式</p><p>  而核心類KetrisBlock.java具體的方法如圖5-5所示:</p><p>  圖5-5 方塊處理模塊核心類KetrisBlock.java具體的方法圖</p><p>  5.3.2 方塊處理模塊功能</p><p>  在方塊處理模塊中,每種

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲(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)論