畢業(yè)論文-- 基于java的手機(jī)游戲《中國(guó)象棋》的設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
已閱讀1頁(yè),還剩52頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  畢業(yè)設(shè)計(jì)說明書</b></p><p><b>  (2014屆)</b></p><p>  基于java的手機(jī)游戲《中國(guó)象棋》的設(shè)計(jì)與實(shí)現(xiàn)</p><p><b>  摘 要</b></p><p>  作為國(guó)粹,中國(guó)象棋發(fā)展至今已有2000

2、余年的歷史了,它是中華民族智慧的結(jié)晶。在我國(guó),中國(guó)象棋的普及程度是其它棋類無法相比的,大至國(guó)際、國(guó)內(nèi)比賽,小至社區(qū)街道。如今,僅中國(guó)就有2億人會(huì)下中國(guó)象棋,且中國(guó)象棋的發(fā)展趨勢(shì)日益國(guó)際化。</p><p>  在信息技術(shù)飛速發(fā)展的今天,隨著的手機(jī)日益普及,手機(jī)游戲也成了人們生活中不可缺少的一部分。Java在移動(dòng)設(shè)備上的功能實(shí)現(xiàn)也越來越具影響力,為豐富人們的生活,提供服務(wù)等方面提供了諸多方便。本文主要介紹一款基于J

3、ava語(yǔ)言開發(fā)的手機(jī)游戲——中國(guó)象棋,該設(shè)計(jì)主要是應(yīng)用J2ME技術(shù),結(jié)合JDK 1.6.0,使用IDE Eclipse 3.4與EclipseMe1.7.9作為開發(fā)工具,以Sun J2ME Wireless Tool Kit 2.5.2軟件作為模擬測(cè)試工具的綜合性的開發(fā)設(shè)計(jì)。本設(shè)計(jì)主要是對(duì)手機(jī)游戲的開發(fā)過程的各個(gè)環(huán)節(jié)做了詳細(xì)的介紹,其中包括:手機(jī)游戲開發(fā)平臺(tái)的搭建與測(cè)試、具體設(shè)計(jì)及開發(fā)步

4、驟、軟件測(cè)試運(yùn)行與打包生成等,實(shí)現(xiàn)了經(jīng)典游戲——中國(guó)象棋的手機(jī)嵌入,以便滿足一些手機(jī)用戶的娛樂需求。</p><p>  關(guān)鍵詞:中國(guó)象棋;J2ME;WTK;Eclipse;手機(jī)游戲</p><p><b>  Abstract</b></p><p>  As the quintessence of a country for China,

5、it has passed 2300 or 2400 years since Chinese Chess developed. Other chess couldn’t be compared with it’s popularization in China, from large- international or national competition to smaller pieces community street .It

6、 is the distillate of Chinese people’s wisdom. Now, there are 200 million people can play Chinese Chess only in China. And Chinese Chess is developing in the way of internationalization.</p><p>  In the

7、 day of rapid development of information technology, with the growing popularity of mobile phone, mobile games also become th

8、e indispensable part in daily life. Java in the function realization of the mobile device is also more and more influent

9、ial for rich people's life and providing services offered many convenient. This paper mainly introduces a mobile game--snake o

10、f Java language development. This design is a comprehensive development design,which mainly applied 1.6.0 JDK J2ME technolo</p><p

11、>  Keywords: Chinese Chess; J2ME;WTK;Eclipse ; Mobile Game</p><p><b>  目錄</b></p><p>  第一章 緒 論1</p><p>  1.1 中國(guó)象棋1</p><p>  1.2 中國(guó)象棋發(fā)展的現(xiàn)狀2</p>

12、<p>  1.3 手機(jī)游戲《中國(guó)象棋》理論3</p><p>  第二章 JAVA簡(jiǎn)介7</p><p>  2.1 JAVA的基本特點(diǎn)7</p><p>  2.1.1 簡(jiǎn)單性……………………………………………………………………7</p><p>  2.1.2 面向?qū)ο蟆?/p>

13、…7</p><p>  2.1.3 多線程……………………………………………………………………7</p><p>  2.1.4 分布式……………………………………………………………………7</p><p>  2.1.5 體系結(jié)構(gòu)中立……………………………………………………………7</p><p>  2.1.6 安全性………………………

14、……………………………………………8</p><p>  2.2 JAVA的主要技術(shù)8</p><p>  第三章 游戲詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)9</p><p>  4.1 功能描述18</p><p>  4.2 理論基礎(chǔ)20</p><p>  4.2.1 中國(guó)象棋簡(jiǎn)介21</p><p>

15、;  4.2.2 中國(guó)象棋走子規(guī)則22</p><p>  4.2.3 中國(guó)象棋吃子規(guī)則23</p><p>  4.3 總體設(shè)計(jì)31</p><p>  4.4 詳細(xì)設(shè)計(jì)32</p><p>  4.4.1 XIActivity.java…………………………………………………………………………32</p><p&

16、gt;  4.4.2 WelcomeView.java……………………………………………………………………..32</p><p>  4.4.3 WelcomeThread.java…………………………………………………………………...32</p><p>  4.4.4 CAIMenuView.java……………………………………………………………………32</p>&

17、lt;p>  4.4.5 Help.java……………………………………………………………………………….32</p><p>  4.4.6 Game.java……………………………………………………………………………...32</p><p>  4.4.7 Move.java……………………………………………………………………………...32</p><p&

18、gt;  4.4.8 TimeThread.java……………………………………………………………………….32</p><p>  4.4.9 Guize.java……………………………………………………………………………...36</p><p>  第四章 軟件測(cè)試…………………………………………………………………………………38</p><p>  4.1

19、走子規(guī)則測(cè)試…………………………………………………………………………..40</p><p>  4.2 吃子規(guī)則測(cè)試…………………………………………………………………………..45</p><p>  第五章 總結(jié)與展望49</p><p>  致 謝50</p><p><b>  參考文獻(xiàn)51</b&g

20、t;</p><p><b>  第一章 緒 論</b></p><p>  面對(duì)未來的趨勢(shì),象棋發(fā)展現(xiàn)狀令人擔(dān)憂,職業(yè)化道路依然任重而道遠(yuǎn)。如今科學(xué)技術(shù)十分發(fā)達(dá),移動(dòng)設(shè)備盛行,手機(jī)發(fā)張迅速,前景十分廣闊,許多用戶不太像從前依賴電腦,有些游戲可以手機(jī)上直接進(jìn)行,而我認(rèn)為將中國(guó)象棋也移植到移動(dòng)app上可以為廣大棋友提供方便,平時(shí)出門隨時(shí)可以下。</p>&

21、lt;p>  本人作為一名學(xué)生,在系統(tǒng)的學(xué)習(xí)了Java語(yǔ)言之后,經(jīng)常用它編一些小程序。這次畢業(yè)設(shè)計(jì),我就想將學(xué)過的Java語(yǔ)言中的各種技術(shù)綜合起來,編寫一個(gè)小游戲,既對(duì)自己學(xué)過的技能進(jìn)行一次檢驗(yàn),也能系統(tǒng)地將學(xué)過的知識(shí)復(fù)習(xí)鞏固。</p><p><b>  中國(guó)象棋</b></p><p>  中國(guó)象棋是我國(guó)國(guó)粹,歷史悠久,普及流行。下棋雙方根據(jù)對(duì)棋局形勢(shì)的理解

22、和對(duì)棋藝規(guī)律的掌握,調(diào)動(dòng)車馬,組織兵力,協(xié)調(diào)作戰(zhàn)在棋盤這塊特定的戰(zhàn)場(chǎng)上,進(jìn)行著象征性的軍事戰(zhàn)斗。</p><p><b> ?、牛灞P和棋子:</b></p><p>  象棋的棋子共三十二個(gè),分為紅黑兩組,各十六個(gè),由對(duì)弈雙方各執(zhí)一組,兵種是一樣的,分為七種:</p><p>  紅方:帥、仕、相、車、馬、炮、兵</p>&l

23、t;p>  黑方:將、士、象、車、馬、炮、卒</p><p>  其中帥與將、仕與士、相與象、兵與卒的作用完全相同,僅僅是為了區(qū)分紅棋和黑棋。</p><p>  棋子活動(dòng)的場(chǎng)所,叫做“棋盤”,在長(zhǎng)方形的平面上,繪有九條平行的豎線和十條平行的橫線相交組成,共九十個(gè)交叉點(diǎn),棋子就擺在這些交叉點(diǎn)上。中間第五、第六兩橫線之間未畫豎線的空白地帶,稱為“河界”,整個(gè)棋盤就以“河界”分為相等的兩

24、部分;兩方將帥坐鎮(zhèn)、畫“米”字方格的地方,叫做“九宮”。</p><p><b> ?、伲畬⒒驇?lt;/b></p><p>  移動(dòng)范圍:它只能在王宮內(nèi)移動(dòng)。</p><p>  移動(dòng)規(guī)則:它每一步只可以水平或垂直移動(dòng)一點(diǎn)。</p><p><b>  ②.士</b></p><p

25、>  移動(dòng)范圍:它只能在王宮內(nèi)移動(dòng)。</p><p>  移動(dòng)規(guī)則:它每一步只可以沿對(duì)角線方向移動(dòng)一點(diǎn)。</p><p><b> ?、郏?lt;/b></p><p>  移動(dòng)范圍:河界的一側(cè)。</p><p>  移動(dòng)規(guī)則:它每一步只可以沿對(duì)角線方向移動(dòng)兩點(diǎn),另外,在移動(dòng)的過程中不能夠穿越障礙。</p>

26、<p><b> ?、埽R</b></p><p>  移動(dòng)范圍:任何位置。</p><p>  移動(dòng)規(guī)則:每一步只可以水平或垂直移動(dòng)一點(diǎn),再按對(duì)角線方面向左或者右移動(dòng)。另移動(dòng)的過程中不能夠穿越障礙。</p><p><b>  ⑤.車</b></p><p>  移動(dòng)范圍:任何位置。

27、</p><p>  移動(dòng)規(guī)則:可以水平或垂直方向移動(dòng)任意個(gè)無阻礙的點(diǎn)。</p><p><b> ?、蓿?lt;/b></p><p>  移動(dòng)范圍:任何位置。</p><p>  移動(dòng)規(guī)則:移動(dòng)起來和車很相似,但它必須跳過一個(gè)棋子來吃掉對(duì)方的一個(gè)棋子。</p><p><b> ?、撸?/p>

28、</b></p><p>  移動(dòng)范圍:任何位置。</p><p>  移動(dòng)規(guī)則:每步只能向前移動(dòng)一點(diǎn)。過河以后,它便增加了向左右移動(dòng)的能力,兵不允許向后移動(dòng)。</p><p>  1.2 中國(guó)象棋發(fā)展的現(xiàn)狀</p><p>  在中國(guó),若說歷史悠久、群眾基礎(chǔ)雄厚的運(yùn)動(dòng),中國(guó)象棋毫無疑問占有一席之地。而對(duì)胡榮華、趙國(guó)榮、呂欽、許銀

29、川等特級(jí)大師來說,他們的夢(mèng)想是把這項(xiàng)運(yùn)動(dòng)推向世界。1956年,圍棋、國(guó)際象棋、中國(guó)象棋被列為我國(guó)正式體育項(xiàng)目。50年來,我國(guó)棋類項(xiàng)目的發(fā)展有目共睹。全國(guó)政協(xié)副主席霍英東先生從1985年第五屆五羊杯開始慷慨解囊、1988年承諾永遠(yuǎn)贊助五羊杯賽。至今,英東先生已連續(xù)贊助了22屆賽事。如今,五羊杯賽所創(chuàng)下的辦賽紀(jì)錄和賽事水平,國(guó)內(nèi)外的象棋賽事無出其右;而英東先生二十余載風(fēng)雨無阻扶掖中國(guó)象棋的赤子之心,更令世人折服。具調(diào)查參與網(wǎng)絡(luò)棋類游戲的人中

30、,象棋每天的在線人次,經(jīng)常是圍棋和國(guó)際象棋在線總?cè)舜蔚膬杀叮〈绑w頂端在中國(guó)作為中華文化珍貴傳統(tǒng)國(guó)粹的象棋有著廣泛的群眾基礎(chǔ)。中國(guó)選手在世界范圍內(nèi)一直鮮逢對(duì)手。去年是“人工智能誕生50周年”“超級(jí)計(jì)算機(jī)天梭與中國(guó)象棋世界冠軍的人機(jī)大戰(zhàn)有助于把IT高科技的元素導(dǎo)入中國(guó)象棋,樹立中國(guó)象棋主流、時(shí)尚、風(fēng)雅的品牌形象?!?lt;/p><p>  國(guó)際化普及方面, 1984年英東先生曾懸獎(jiǎng)50萬美元,鼓勵(lì)全球非華人棋手擊敗一直由

31、中國(guó)人占據(jù)的中國(guó)象棋世界冠軍……中國(guó)象棋和中國(guó)文化有很深的淵源,國(guó)外選手實(shí)力不夠,一方面是推廣不夠,另一方面則是文化的差異。真正要學(xué)得精,必須要學(xué)中文,對(duì)中國(guó)文化有所了解,這樣才能真正理解象棋的精華,這對(duì)外國(guó)人而言的確比較難。隨著中國(guó)被世界越來越了解,中國(guó)的文化,包括象棋會(huì)被全世界更多的人了解。相信會(huì)有相當(dāng)一部分人對(duì)象棋有興趣。這樣就會(huì)派學(xué)生、派棋手到中國(guó)來學(xué)習(xí),可以把象棋當(dāng)職業(yè)。到那天,想必歐美國(guó)家也會(huì)有很多人下象棋。</p&g

32、t;<p>  中國(guó)象棋發(fā)展至今已有二千三、四百年的歷史了,早在戰(zhàn)國(guó)時(shí)期就有正式記載,堪稱中國(guó)的國(guó)粹。據(jù)統(tǒng)計(jì),中國(guó)有2億人會(huì)下中國(guó)象棋,這相當(dāng)于平均6至7個(gè)人中就有1人會(huì)下,可見它有著廣泛的群眾基礎(chǔ)。然而,如今中國(guó)象棋的發(fā)展前景卻令人堪憂。導(dǎo)致這種現(xiàn)象的主要因素有:第一,就東亞地區(qū),圍棋的影響力勝于中國(guó)象棋。第二,中國(guó)象棋雖然在國(guó)內(nèi)很受歡迎,但在世界舞臺(tái)上名聲卻不如國(guó)際象棋那么響亮。之所以會(huì)存在這兩個(gè)因素,都是因?yàn)樵趪?guó)際賽

33、事上中國(guó)象棋的參賽選手大都是華人,而非華裔的選手又大都是業(yè)余選手,這無疑使比賽失去了競(jìng)爭(zhēng)力,而圍棋有韓國(guó)和日本的參與,國(guó)際象棋有全世界國(guó)家的加入。第三,進(jìn)入了21世紀(jì)后,供人們娛樂活動(dòng)的選擇越來越多,中國(guó)象棋在年輕人的心中已開始漸漸失去魅力。</p><p>  1.3 手機(jī)游戲《中國(guó)象棋》理論</p><p>  《中國(guó)象棋》是一個(gè)由java語(yǔ)言編寫的手機(jī)游戲,能進(jìn)行人機(jī)對(duì)戰(zhàn),是一款出門

34、必備的休閑類小游戲。</p><p>  (1)初始態(tài)游戲界面:</p><p><b>  圖1.3-1</b></p><p>  (2)歡迎游戲界面:</p><p><b>  圖1.3-2</b></p><p>  (3)游戲幫助界面:</p>&l

35、t;p><b>  圖1.3-3</b></p><p>  (4)開始游戲界面:</p><p><b>  圖1.3-4</b></p><p><b>  JAVA簡(jiǎn)介</b></p><p>  JAVA是Sun Microsystem公司開發(fā)的編程語(yǔ)言,是一個(gè)簡(jiǎn)

36、單,面向?qū)ο?,分布式,解釋性,?qiáng)壯,安全,與系統(tǒng)無關(guān),可移植,高性能,多線程和動(dòng)態(tài)的語(yǔ)言[3]。</p><p><b>  JAVA的基本特點(diǎn)</b></p><p><b>  簡(jiǎn)單性</b></p><p>  Java與C++語(yǔ)言非常相近,但Java比C++簡(jiǎn)單,它拋棄了C++中的一些不是絕對(duì)必要的功能,如頭文件、

37、預(yù)處理文件、指針、結(jié)構(gòu)、運(yùn)算符重載、多重繼承以及自動(dòng)強(qiáng)迫同型。 Java實(shí)現(xiàn)了自動(dòng)的垃圾收集,簡(jiǎn)化了內(nèi)存管理的工作[3]。</p><p><b>  面向?qū)ο?lt;/b></p><p>  Java提供了簡(jiǎn)單的類機(jī)制和動(dòng)態(tài)的構(gòu)架模型。對(duì)象中封裝了它的狀態(tài)變量和方法,很好地實(shí)現(xiàn)了模塊化和信息隱藏;而類則提供了一類對(duì)象的原型,通過繼承和重載機(jī)制,子類可以使用或重新定義父類

38、或超類所提供的方法,從而既實(shí)現(xiàn)了代碼的復(fù)用,又提供了一種動(dòng)態(tài)的解決方案[3]。</p><p><b>  多線程</b></p><p>  多線程使應(yīng)用程序可以同時(shí)進(jìn)行不同的操作,處理不同的事件。在多線程機(jī)制中,不同的線程處理不同的任務(wù),他們之間互不干涉,不會(huì)由于一處等待影響其他部分,這樣容易實(shí)現(xiàn)網(wǎng)絡(luò)上的實(shí)時(shí)交互操作[3]。</p><p>

39、;<b>  分布式</b></p><p>  Java是面向網(wǎng)絡(luò)的語(yǔ)言。通過它提供的類庫(kù)可以處理TCP/IP協(xié)議,用戶可以通過URL地址在網(wǎng)絡(luò)上很方便的訪問其他對(duì)象[3]。</p><p><b>  體系結(jié)構(gòu)中立</b></p><p>  Java是一種網(wǎng)絡(luò)語(yǔ)言,為使Java程序能在網(wǎng)絡(luò)的任何地方運(yùn)行,Java解釋

40、器生成與體系結(jié)構(gòu)無關(guān)的字節(jié)碼結(jié)構(gòu)的文件格式。為了使Java的應(yīng)用程序能不依賴于具體的系統(tǒng),Java語(yǔ)言環(huán)境還提供了用于訪問底層操作系統(tǒng)功能的類組成的包,當(dāng)程序使用這些包時(shí),可以確保它能運(yùn)行在各種支持Java的平臺(tái)上[3]。</p><p><b>  安全性</b></p><p>  用于網(wǎng)絡(luò)、分布環(huán)境下的Java必須要防止病毒的入侵,Java不支持指針,一切對(duì)內(nèi)存

41、的訪問都必須通過對(duì)象的實(shí)例變量來實(shí)現(xiàn),這樣就防止了程序員使用欺騙手段訪問對(duì)象的私有成員,同時(shí)也避免了指針操作中容易產(chǎn)生的錯(cuò)誤[3]。</p><p><b>  JAVA的主要技術(shù)</b></p><p>  過濾流DataInputStream 和DataOutputStream 除了分別作為FilterInputStream 和FilterOutputStream

42、的子類外,還分別實(shí)現(xiàn)了接口DataInput 和DataOutput。接口DataInput 中定義的方法主要包括從流中讀取基本類型的數(shù)據(jù)、讀取一行數(shù)據(jù)、或者讀取指定長(zhǎng)度的字節(jié)數(shù),如readBoolean()、 readInt()、readLine()、readFully()等。接口DataOutput中定義的方法主要是向流中寫入基本類型的數(shù)據(jù)或者寫入一定長(zhǎng)度的字節(jié)數(shù)組,如writeChar()、writeDouble()。 DataI

43、nputStream可以從所連接的輸入流中讀取與機(jī)器無關(guān)的基本類型數(shù)據(jù),用以實(shí)現(xiàn)一種獨(dú)立于具體平臺(tái)的輸入方式;DataOutputStream 可以向所連接的輸出流寫入基本類型的數(shù)據(jù)[4]。</p><p><b>  游戲詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)</b></p><p><b>  3.1 功能描述</b></p><p>  本

44、程序中,利用JAVA實(shí)現(xiàn)了一個(gè)中國(guó)象棋對(duì)弈的軟件,它主要包括如下功能:</p><p>  ⑴.游戲初始界面,點(diǎn)擊菜單能進(jìn)入歡迎游戲界面。</p><p> ?、疲c(diǎn)擊開始游戲按鈕進(jìn)行象棋對(duì)弈。首先紅方走棋,然后黑方走棋,直到一方獲勝。</p><p> ?、牵c(diǎn)擊退出按鈕,然后重新打開游戲開始新的游戲。</p><p> ?、龋c(diǎn)擊聲音按鈕

45、,進(jìn)行聲音的開和關(guān)。</p><p>  ⑸.點(diǎn)擊幫助按鈕。提示幫助信息狀態(tài)。</p><p><b>  3.2 理論基礎(chǔ)</b></p><p>  3.2.1 中國(guó)象棋簡(jiǎn)介</p><p>  中國(guó)象棋的棋盤是方型的,棋盤的中間有一條“界河”,把對(duì)壘的雙方隔在兩邊。兩邊畫有交叉線的地方共有90個(gè)交叉點(diǎn),棋子就擺在這

46、些交叉點(diǎn)上。中國(guó)象棋共有32枚棋子,分為黑紅兩組,下棋的雙方各用一組,每組各有一帥(將)、兩士(仕)、兩相(象)、兩馬、兩車、兩炮、五兵(卒)。兩人對(duì)局時(shí),按照規(guī)定的位置將各自的棋子擺好,按照“紅先黑后”的原則,紅方先走,然后輪流下棋子。各種棋子走法不同,最后把對(duì)方將死為勝,不分勝負(fù)則為和棋。</p><p><b>  中國(guó)象棋走子規(guī)則</b></p><p>  

47、⑴.帥(將)每一次只允許走一步,前進(jìn)、后退、橫走都可以,但不能走出“九宮”。</p><p> ?、疲棵恳淮沃辉S沿“九宮”斜線走一步,可進(jìn)可退。</p><p>  ⑶.相(象)不能越過“河界”,每一次斜走兩格,可進(jìn)可退,即俗稱“相(象)走田字”。當(dāng)田字中民有別的棋子時(shí),俗稱“塞相(象)眼”,則不可以走過去。</p><p>  ⑷.馬每次走一直(或一橫)一斜,可

48、進(jìn)可退,俗稱“馬走日字”,如果在要去的方向上有別的棋子擋住。俗稱“蹩馬腿”,則不許走過去。</p><p> ?、桑嚸恳淮慰芍边M(jìn)、直退、橫走、不限步數(shù)。</p><p> ?、剩谠诓怀宰拥臅r(shí)候,走法同車一樣。</p><p> ?、耍剩┰跊]有過“河界”前,每次只許向前直走一步,過“河界”后每次可向前直走或橫走一步,但不能后退。</p><

49、;p><b>  國(guó)象棋吃子規(guī)則</b></p><p>  在走棋時(shí),如果棋子能夠走到的位置有棋子存在,且該棋子為對(duì)方棋子時(shí),就可以把對(duì)方棋子吃掉而占領(lǐng)那個(gè)位置。只有炮在吃子時(shí)必須隔一個(gè)棋子(隔的棋子無論是哪一方的都可以)跳吃,即俗稱“炮打隔子”。</p><p>  除帥(將)外其它棋子都可以聽任對(duì)方吃,或主動(dòng)送吃。吃子的一方,必須立即把被吃的棋子從棋盤上拿

50、走。如果帥(將)被吃掉則本局游戲結(jié)束。</p><p><b>  總體設(shè)計(jì)</b></p><p>  手機(jī)游戲《中國(guó)象棋》的程序由文件XIActivity.java、WelcomeView.java、WelcomeThread.java、CAIMenuView.java、Help.java、Game.java、Move.java、TimeThread.java和G

51、uiZe.java實(shí)現(xiàn)。XIActivity.java在此文件中定義了類XIActivity,這是本實(shí)例游戲控制器類,功能是在合適的時(shí)候初始化相應(yīng)的用戶界面,根據(jù)其他界面的要求切換到需要的界面。WelcomeView.java在此文件中定義了類WelcomeView,此類是一個(gè)輔助界面類,是剛進(jìn)入游戲系統(tǒng)后顯示的歡迎界面框架。WelcomeThread.java在此文件中定義了類WelcomeThread,此類也是一個(gè)輔助界面類,用于生

52、成歡迎界面的動(dòng)畫效果。CAIMenuView.java在此文件中定義了類CAIMenuView,功能是在歡迎界面單擊【菜單】按鈕時(shí)進(jìn)入菜單界面。Help.java在此定義了類Help,這也是一個(gè)輔助界面類,功能是顯示游戲系統(tǒng)的使用方法。Game.java此文件和前面介紹的界面輔助類不一樣,在此文</p><p>  文件Game.java實(shí)現(xiàn)流程如下:定義繼承于SurfaceView的類Game,然后定義了類中需

53、要的成員變量、分別定義系統(tǒng)中的構(gòu)造器和對(duì)應(yīng)構(gòu)造方法、定義繪制方法onDraw,該方法是自己定義的并非重寫的,只會(huì)根據(jù)數(shù)據(jù)繪制屏幕、定義重寫的屏幕監(jiān)聽方法onTouchEvent,該方法是游戲主要邏輯接口,用于接收玩家輸入。它會(huì)根據(jù)點(diǎn)擊的位置和當(dāng)前的游戲狀態(tài)做出相應(yīng)的處理,當(dāng)需要切換View界面時(shí),通過給Activity發(fā)送Handler消息來處理、定義方法getPo,用于將將坐標(biāo)換算成數(shù)組的維數(shù)。其中棋子的移動(dòng)規(guī)則被定義為內(nèi)部類,名為G

54、uiZe.java。GuiZe.java類中的方法用于定義各個(gè)棋子的移動(dòng)規(guī)則和吃子規(guī)則。</p><p><b>  3.4詳細(xì)設(shè)計(jì)</b></p><p> ?。?4.1 XIActivity.java</p><p>  public class XIActivity extends Activity {</p><p&

55、gt;  boolean isSound = true;//是否播放聲音</p><p>  MediaPlayer startSound;//開始和菜單時(shí)的音樂</p><p>  MediaPlayer gamesound;//游戲聲音</p><p>  Handler myHandler = new Handler(){//用來更新UI線程中的控件</

56、p><p>  public void handleMessage(Message msg) {</p><p>  if(msg.what == 1){//WelcomeView或HelpView或GameView傳來的消息,切換到MenuView</p><p>  initMenuView();//初始化并切換到菜單界面</p><p>

57、<b>  }</b></p><p>  else if(msg.what == 2){//MenuView傳來的消息,切換到GameView</p><p>  initGameView();//初始化并切換到游戲界面</p><p><b>  }</b></p><p>  else if(

58、msg.what == 3){//MenuView傳來的消息,切換到HelpView</p><p>  initHelpView();//初始化并切換到幫助界面</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }; </

59、b></p><p>  public void onCreate(Bundle savedInstanceState) {//重寫的onCreate</p><p>  super.onCreate(savedInstanceState);</p><p><b>  //全屏</b></p><p>  req

60、uestWindowFeature(Window.FEATURE_NO_TITLE);</p><p>  getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN , </p><p>  WindowManager.LayoutParams.FLAG_FULLSCREEN);</p><p>

61、;  startSound = MediaPlayer.create(this, R.raw.startsound);//加載歡迎聲音</p><p>  startSound.setLooping(true);//設(shè)置游戲聲音循環(huán)播放 </p><p>  gamesound = MediaPlayer.create(this, R.raw.gamesound);//游戲過程的背景聲音

62、</p><p>  gamesound.setLooping(true);//設(shè)置游戲聲音循環(huán)播放 </p><p>  this.initWelcomeView();//初始化歡迎界面</p><p><b>  }</b></p><p>  public void initWelcomeView(){//初始化歡

63、迎界面 </p><p>  this.setContentView(new WelcomeView(this,this));//切換到歡迎界面</p><p>  if(isSound){//需要播放聲音時(shí)</p><p>  startSound.start();//播放聲音</p><p><b>  }</b>&

64、lt;/p><p><b>  }</b></p><p>  public void initGameView(){//初始化游戲界面</p><p>  this.setContentView(new Game(this,this)); //切換到游戲界面</p><p><b>  }</b>&l

65、t;/p><p>  public void initMenuView(){//初始化菜單界面</p><p>  if(startSound != null){//停止</p><p>  startSound.stop();//停止播放聲音</p><p>  startSound = null;</p><p>&l

66、t;b>  }</b></p><p>  if(this.isSound){//是否播放聲音</p><p>  gamesound.start();//播放聲音</p><p><b>  }</b></p><p>  this.setContentView(new CAIMenuView(thi

67、s,this));//切換View</p><p><b>  } </b></p><p>  public void initHelpView(){//初始化幫助界面</p><p>  this.setContentView(new Help(this,this));//切換到幫助界面</p><p><b&

68、gt;  }</b></p><p><b>  }</b></p><p>  WelcomeView.java</p><p>  public TutorialThread(SurfaceHolder surfaceHolder, WelcomeView welcomeView) {//構(gòu)造器</p><p

69、>  this.surfaceHolder = surfaceHolder;//得到SurfaceHolder引用</p><p>  this.welcomeView = welcomeView;//得到WelcomeView引用</p><p><b>  }</b></p><p>  public void setFlag(boo

70、lean flag) {//設(shè)置循環(huán)標(biāo)記位</p><p>  this.flag = flag;</p><p><b>  }</b></p><p><b>  @Override</b></p><p>  public void run() {//重寫的run方法</p>&

71、lt;p>  Canvas c;//畫布</p><p>  while (this.flag) {//循環(huán)</p><p><b>  c = null;</b></p><p><b>  try {</b></p><p>  // 鎖定整個(gè)畫布,在內(nèi)存要求比較高的情況下,建議參數(shù)不要為

72、null</p><p>  c = this.surfaceHolder.lockCanvas(null);</p><p>  synchronized (this.surfaceHolder) {//同步</p><p>  welcomeView.onDraw(c);//繪制</p><p><b>  }</b>

73、;</p><p>  } finally {//使用finally語(yǔ)句保證下面的代碼一定會(huì)被執(zhí)行</p><p>  if (c != null) {</p><p>  //更新屏幕顯示內(nèi)容</p><p>  this.surfaceHolder.unlockCanvasAndPost(c);</p><p>&

74、lt;b>  }</b></p><p><b>  }</b></p><p><b>  try{</b></p><p>  Thread.sleep(span);//睡眠指定毫秒數(shù)</p><p><b>  }</b></p><

75、p>  catch(Exception e){//捕獲異常</p><p>  e.printStackTrace();//打印堆棧信息</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p&g

76、t;<p><b>  }</b></p><p><b>  }</b></p><p>  3.4.3 WelcomeThread.java</p><p>  public class WelcomeThread extends Thread{</p><p>  private

77、 boolean flag = true;//循環(huán)標(biāo)志位</p><p>  WelcomeView welcomeView;//WelcomeView的引用</p><p>  public WelcomeThread(WelcomeView welcomeView){//構(gòu)造器</p><p>  this.welcomeView = welcomeView;/

78、/得到WelcomeView的引用</p><p><b>  }</b></p><p>  public void setFlag(boolean flag){//設(shè)置循環(huán)標(biāo)志位</p><p>  this.flag = flag;</p><p><b>  }</b></p>

79、<p>  public void run(){//重寫的run方法</p><p><b>  try{</b></p><p>  Thread.sleep(300);//睡眠三百毫秒,保證界面已經(jīng)顯示</p><p><b>  }</b></p><p>  catch(Exce

80、ption e){//捕獲異常</p><p>  e.printStackTrace();//打印異常信息</p><p><b>  }</b></p><p>  while(flag){</p><p>  welcomeView.logoX += 10;//移動(dòng)歡迎界面的logo</p><

81、p>  if(welcomeView.logoX>0){//到位后停止移動(dòng)</p><p>  welcomeView.logoX = 0;</p><p><b>  }</b></p><p>  welcomeView.boyX += 20;//移動(dòng)小男孩圖片</p><p>  if(welcomeV

82、iew.boyX>70){//到位置后停止移動(dòng)</p><p>  welcomeView.boyX = 70;</p><p><b>  }</b></p><p>  welcomeView.oldboyX += 15;//移動(dòng)小老頭</p><p>  if(welcomeView.oldboyX>0

83、){//到位后停止移動(dòng)</p><p>  welcomeView.oldboyX = 0;</p><p><b>  }</b></p><p>  welcomeView.bordbackgroundY += 50;//移動(dòng)文字背景</p><p>  if(welcomeView.bordbackgroundY&

84、gt;240){</p><p>  welcomeView.bordbackgroundY = 240;</p><p><b>  }</b></p><p>  welcomeView.logo2X -= 30;//更改圖片的坐標(biāo)</p><p>  if(welcomeView.logo2X<150){&l

85、t;/p><p>  welcomeView.logo2X = 150; //停止移動(dòng)</p><p><b>  }</b></p><p>  if(welcomeView.logo2X == 150){//當(dāng)logo2到位后按鈕才移動(dòng)出現(xiàn)</p><p>  welcomeView.menuY -= 30;</p

86、><p>  if(welcomeView.menuY<355){</p><p>  welcomeView.menuY = 355;</p><p><b>  }</b></p><p><b>  } </b></p><p><b>  try{ <

87、;/b></p><p>  Thread.sleep(100);//睡眠指定毫秒數(shù) </p><p>  }catch(Exception e){//捕獲異常</p><p>  e.printStackTrace();//打印異常信息</p><p><b>  }</b></p><p&g

88、t;<b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  4.4.4 CAIMenuView.java</p><p>  public void initBitmap(){//初始化圖片資源圖片</p

89、><p>  startGame = BitmapFactory.decodeResource(getResources(), R.drawable.startgame);//開始游戲按鈕</p><p>  openSound = BitmapFactory.decodeResource(getResources(), R.drawable.opensound);//開始聲音按鈕</p

90、><p>  closeSound = BitmapFactory.decodeResource(getResources(), R.drawable.closesound);//關(guān)閉聲音按鈕</p><p>  help = BitmapFactory.decodeResource(getResources(), R.drawable.help);//幫助按鈕</p><

91、p>  exit = BitmapFactory.decodeResource(getResources(), R.drawable.exit);//退出按鈕</p><p><b>  }</b></p><p>  4.4.5 Help.java</p><p>  public boolean onTouchEvent(Motion

92、Event event) {//屏幕監(jiān)聽</p><p>  if(event.getAction() == MotionEvent.ACTION_DOWN){</p><p>  if(event.getX()>200 && event.getX()<200+back.getWidth()</p><p>  && ev

93、ent.getY()>370 && event.getY()<370+back.getHeight()){//點(diǎn)擊了返回按鈕</p><p>  activity.myHandler.sendEmptyMessage(1);//發(fā)送Handler消息</p><p><b>  }</b></p><p><b

94、>  }</b></p><p>  return super.onTouchEvent(event);</p><p><b>  } </b></p><p>  class TutorialThread extends Thread{//刷幀線程</p><p>  private int spa

95、n = 1000;//睡眠的毫秒數(shù) </p><p>  private SurfaceHolder surfaceHolder;//SurfaceHolder的引用</p><p>  private Help helpView;//父類的引用</p><p>  private boolean flag = false;//循環(huán)標(biāo)記位 </p>&

96、lt;p>  public TutorialThread(SurfaceHolder surfaceHolder, Help helpView) {//構(gòu)造器</p><p>  this.surfaceHolder = surfaceHolder;//得到surfaceHolder引用</p><p>  this.helpView = helpView;//得到helpView引

97、用</p><p><b>  }</b></p><p>  4.4.6 Game.java</p><p>  public Game(Context context,XIActivity activity) {//構(gòu)造器</p><p>  super(context);</p><p> 

98、 this.activity = activity;//得到Activity的引用</p><p>  getHolder().addCallback(this);</p><p>  go = MediaPlayer.create(this.getContext(), R.raw.go);//加載下棋的聲音</p><p>  this.thread = new

99、 TutorialThread(getHolder(), this);//初始化刷幀線程</p><p>  this.timeThread = new TimeThread(this);//初始化思考時(shí)間的線程</p><p>  init();//初始化所需資源</p><p>  guiZe = new GuiZe();//初始化規(guī)則類</p>

100、<p><b>  }</b></p><p>  public void init(){//初始化方法 </p><p>  paint = new Paint();//初始化畫筆</p><p>  qiPan = BitmapFactory.decodeResource(getResources(), R.drawable.qi

101、pan);//棋盤圖片</p><p>  qizibackground = BitmapFactory.decodeResource(getResources(), R.drawable.qizi);//棋子的背景</p><p>  win = BitmapFactory.decodeResource(getResources(), R.drawable.win);//勝利的圖片<

102、;/p><p>  lost = BitmapFactory.decodeResource(getResources(), R.drawable.lost);//失敗的圖片</p><p>  ok = BitmapFactory.decodeResource(getResources(), R.drawable.ok);//確定按鈕圖片</p><p>  vs =

103、BitmapFactory.decodeResource(getResources(), R.drawable.vs);//vs字樣的圖片</p><p>  right = BitmapFactory.decodeResource(getResources(), R.drawable.right);//向右的指針</p><p>  left = BitmapFactory.decode

104、Resource(getResources(), R.drawable.left);//向左的指針</p><p>  current = BitmapFactory.decodeResource(getResources(), R.drawable.current);//文字“當(dāng)前”</p><p>  exit2 = BitmapFactory.decodeResource(getRe

105、sources(), R.drawable.exit2);//退出按鈕圖片</p><p>  sound2 = BitmapFactory.decodeResource(getResources(), R.drawable.sound2);//聲音按鈕圖片</p><p>  time = BitmapFactory.decodeResource(getResources(), R.dr

106、awable.time);//黑色冒號(hào)</p><p>  redtime = BitmapFactory.decodeResource(getResources(), R.drawable.redtime);//紅色冒號(hào)</p><p>  sound3 = BitmapFactory.decodeResource(getResources(), R.drawable.sound3);&

107、lt;/p><p>  heiZi[0] = BitmapFactory.decodeResource(getResources(), R.drawable.heishuai);//黑帥</p><p>  heiZi[1] = BitmapFactory.decodeResource(getResources(), R.drawable.heiju);//黑車</p><

108、p>  heiZi[2] = BitmapFactory.decodeResource(getResources(), R.drawable.heima);//黑馬</p><p>  heiZi[3] = BitmapFactory.decodeResource(getResources(), R.drawable.heipao);//黑炮</p><p>  heiZi[4] =

109、 BitmapFactory.decodeResource(getResources(), R.drawable.heishi);//黑士</p><p>  heiZi[5] = BitmapFactory.decodeResource(getResources(), R.drawable.heixiang);//黑象</p><p>  heiZi[6] = BitmapFactory

110、.decodeResource(getResources(), R.drawable.heibing);//黑兵</p><p>  hongZi[0] = BitmapFactory.decodeResource(getResources(), R.drawable.hongjiang);//紅將</p><p>  hongZi[1] = BitmapFactory.decodeRes

111、ource(getResources(), R.drawable.hongju);//紅車</p><p>  hongZi[2] = BitmapFactory.decodeResource(getResources(), R.drawable.hongma);//紅馬</p><p>  hongZi[3] = BitmapFactory.decodeResource(getResou

112、rces(), R.drawable.hongpao);//紅砲</p><p>  hongZi[4] = BitmapFactory.decodeResource(getResources(), R.drawable.hongshi);//紅仕</p><p>  hongZi[5] = BitmapFactory.decodeResource(getResources(), R.dr

113、awable.hongxiang);//紅相</p><p>  hongZi[6] = BitmapFactory.decodeResource(getResources(), R.drawable.hongzu);//紅卒</p><p>  number[0] = BitmapFactory.decodeResource(getResources(), R.drawable.numb

114、er0);//黑色數(shù)字0</p><p>  number[1] = BitmapFactory.decodeResource(getResources(), R.drawable.number1);//黑色數(shù)字1</p><p>  number[2] = BitmapFactory.decodeResource(getResources(), R.drawable.number2);/

115、/黑色數(shù)字2</p><p>  number[3] = BitmapFactory.decodeResource(getResources(), R.drawable.number3);//黑色數(shù)字3</p><p>  number[4] = BitmapFactory.decodeResource(getResources(), R.drawable.number4);//黑色數(shù)字4

116、</p><p>  number[5] = BitmapFactory.decodeResource(getResources(), R.drawable.number5);//黑色數(shù)字5</p><p>  number[6] = BitmapFactory.decodeResource(getResources(), R.drawable.number6);//黑色數(shù)字6</p

117、><p>  number[7] = BitmapFactory.decodeResource(getResources(), R.drawable.number7);//黑色數(shù)字7</p><p>  number[8] = BitmapFactory.decodeResource(getResources(), R.drawable.number8);//黑色數(shù)字8</p>

118、<p>  number[9] = BitmapFactory.decodeResource(getResources(), R.drawable.number9);//黑色數(shù)字9</p><p>  redNumber[0] = BitmapFactory.decodeResource(getResources(), R.drawable.rednumber0);//紅色數(shù)字0</p>

119、<p>  redNumber[1] = BitmapFactory.decodeResource(getResources(), R.drawable.rednumber1);//紅色數(shù)字1</p><p>  redNumber[2] = BitmapFactory.decodeResource(getResources(), R.drawable.rednumber2);//紅色數(shù)字2</p

120、><p>  redNumber[3] = BitmapFactory.decodeResource(getResources(), R.drawable.rednumber3);//紅色數(shù)字3</p><p>  redNumber[4] = BitmapFactory.decodeResource(getResources(), R.drawable.rednumber4);//紅色數(shù)字4

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(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)論