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

下載本文檔

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

文檔簡介

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

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

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

4、驟、軟件測試運行與打包生成等,實現(xiàn)了經(jīng)典游戲——中國象棋的手機嵌入,以便滿足一些手機用戶的娛樂需求。</p><p>  關(guān)鍵詞:中國象棋;J2ME;WTK;Eclipse;手機游戲</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 中國象棋1</p><p>  1.2 中國象棋發(fā)展的現(xiàn)狀2</p>

12、<p>  1.3 手機游戲《中國象棋》理論3</p><p>  第二章 JAVA簡介7</p><p>  2.1 JAVA的基本特點7</p><p>  2.1.1 簡單性……………………………………………………………………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>  第三章 游戲詳細設計與實現(xiàn)9</p><p>  4.1 功能描述18</p><p>  4.2 理論基礎20</p><p>  4.2.1 中國象棋簡介21</p><p>

15、;  4.2.2 中國象棋走子規(guī)則22</p><p>  4.2.3 中國象棋吃子規(guī)則23</p><p>  4.3 總體設計31</p><p>  4.4 詳細設計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>  第四章 軟件測試…………………………………………………………………………………38</p><p>  4.1

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

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

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

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

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

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

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

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

27、</p><p>  移動規(guī)則:可以水平或垂直方向移動任意個無阻礙的點。</p><p><b>  ⑥.炮</b></p><p>  移動范圍:任何位置。</p><p>  移動規(guī)則:移動起來和車很相似,但它必須跳過一個棋子來吃掉對方的一個棋子。</p><p><b> ?、撸?/p>

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

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

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

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

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

33、事上中國象棋的參賽選手大都是華人,而非華裔的選手又大都是業(yè)余選手,這無疑使比賽失去了競爭力,而圍棋有韓國和日本的參與,國際象棋有全世界國家的加入。第三,進入了21世紀后,供人們娛樂活動的選擇越來越多,中國象棋在年輕人的心中已開始漸漸失去魅力。</p><p>  1.3 手機游戲《中國象棋》理論</p><p>  《中國象棋》是一個由java語言編寫的手機游戲,能進行人機對戰(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簡介</b></p><p>  JAVA是Sun Microsystem公司開發(fā)的編程語言,是一個簡

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

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

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

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

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

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

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

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

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

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

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

47、⑴.帥(將)每一次只允許走一步,前進、后退、橫走都可以,但不能走出“九宮”。</p><p> ?、疲棵恳淮沃辉S沿“九宮”斜線走一步,可進可退。</p><p> ?、牵啵ㄏ螅┎荒茉竭^“河界”,每一次斜走兩格,可進可退,即俗稱“相(象)走田字”。當田字中民有別的棋子時,俗稱“塞相(象)眼”,則不可以走過去。</p><p> ?、龋R每次走一直(或一橫)一斜,可

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

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

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

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

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

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

54、uiZe.java。GuiZe.java類中的方法用于定義各個棋子的移動規(guī)則和吃子規(guī)則。</p><p><b> ?。?4詳細設計</b></p><p>  3.4.1 XIActivity.java</p><p>  public class XIActivity extends Activity {</p><p&

55、gt;  boolean isSound = true;//是否播放聲音</p><p>  MediaPlayer startSound;//開始和菜單時的音樂</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);//設置游戲聲音循環(huán)播放 </p><p>  gamesound = MediaPlayer.create(this, R.raw.gamesound);//游戲過程的背景聲音

62、</p><p>  gamesound.setLooping(true);//設置游戲聲音循環(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){//需要播放聲音時</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) {//設置循環(huán)標記位</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>  // 鎖定整個畫布,在內(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語句保證下面的代碼一定會被執(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)標志位</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){//設置循環(huán)標志位</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;//移動歡迎界面的logo</p><

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

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

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

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

85、t;/p><p>  welcomeView.logo2X = 150; //停止移動</p><p><b>  }</b></p><p>  if(welcomeView.logo2X == 150){//當logo2到位后按鈕才移動出現(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()){//點擊了返回按鈕</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)標記位 </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);//初始化思考時間的線程</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);//文字“當前”</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);//黑色冒號</p><p>  redtime = BitmapFactory.decodeResource(getResources(), R.drawable.redtime);//紅色冒號</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等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論