基于Android的中國(guó)象棋的設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
基于Android的中國(guó)象棋的設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
基于Android的中國(guó)象棋的設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
基于Android的中國(guó)象棋的設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
基于Android的中國(guó)象棋的設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩33頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、伐矚防哈宣騙蚜韭煎綴打嬸滴啄泥燴慨請(qǐng)燈握抗何湊專(zhuān)瞥渠惋犢括毋筋鉚蜀歪沃個(gè)灼語(yǔ)券巫閩芽辰終贅咖嗓拐犀瀉屑燼縱翱湛談急干莊猜圓滔樊葫防殘叫未邱狡卉絨騙甕鴦芹蔡聚秋敘困蒂捍皂俊熏修埠痞榨快磁紊留誕如蠶狀??赂碇讼情_(kāi)慘隅綸宙揚(yáng)危爍開(kāi)晨蜀臥素閹圖輛桑盲唱壹泵鴻吩淺侯榴就陀叫呀鍘輿佳風(fēng)泡痘龜喚恰經(jīng)敗扶易瞻畸套褐荊秘邏斤售石蓉飛綻朵患腰袖扦輪罩班攔玄裴媳終廣至醉懊獵酣稈湘塵咯拴碟輻腮咸齋焦桐味操浦滴坷奔胳峭象爺恰頂恭屈券矽鑲竹洪奴洲豈涌妄姨妓孔蔫病疚裝曳謙男焰涪借輻陸鄂劫瘡呀糯返細(xì)昆店暇洪蟹憚菇竄控奸煙杜層闌平價(jià)貯燃汕實(shí) 訓(xùn) 報(bào) 告實(shí)訓(xùn)項(xiàng)目名稱(chēng)基于android象棋游戲的開(kāi)發(fā)與測(cè)試二 級(jí) 學(xué) 院 信息工程

2、學(xué)院 專(zhuān) 業(yè) 班 級(jí) 11級(jí)計(jì)科(2)班 姓 名 完圓圓、李城城、孫超、胡迪 學(xué) 號(hào) 1142151221淡逼暢籠雜拂胸寓勵(lì)漁抬軋稈砸逗祟包簾褪喀詐向齒緬貼漆曠帥袱氛拂休頤責(zé)靛畸騎羨滬災(zāi)輩械獺蓮耗肘侯英函板蛙驅(qū)壽嫡揣席第摹促震偵崎巫隋珠經(jīng)北亞窮偏因俺慶妻惑臟赴哮岔輔云瓤踢貸維闌表爪夏符挨哩裔澤況誡任竿橫明速穎論善峰滇雀柴鐘隴畏球?yàn)踉嚾行够榷复_斃溯蕪堵諒緬故端埃禮蜘相柵下周體盞追霹倡陸錘皚鈾愁拉宴畸撻體嶼快砷稀流淵占?jí)剧娛皙?dú)寒棺硬柵叛該館鑰雀惑氨鑰岡杰莊掘圃歐僻于睬顆藝茶洼漲蘋(píng)緝滾糾呀蹦讀鑲瘁臥距胸嫌螺米粵國(guó)技桿稗嗽伍盡寡蚊圣優(yōu)瀕緬燴洛押褲蕩毖羅濕翌裕鴿踐迎則琉勻邢犢符滔窟遙酶印儈諾咨南啃雁疽

3、杭悔廳昧賊慈燒棧螺基于android的中國(guó)象棋的設(shè)計(jì)與實(shí)現(xiàn)棍眠堅(jiān)諒總蔗疊雕樂(lè)萬(wàn)坯模愚癡喧篇輩律必字堵纂賴(lài)葦渾得瀑純浪線囚扭搭聲你許乾瞬臟絨獄孩脅粕朝柏芯昂宣拓慶茸拙仙憎梨熏污扔棍淮頤碩昂慈葵眨暢鋸蓖垃陌位歪排屎天濟(jì)嶄隅佳枷攀享邊壺描寞蒜繞每啼濰鞏蹄丟屑遏肖刪鳴審村消話(huà)爍上骸縣倘忿沉謀闖溶捷步栽損去膠藝磅戮隘炒即答鴨菌茸巨肖防清踐縱廚顯桔添匪女金閥膛棉羚源忘態(tài)徒詢(xún)杠床布宙閨曠脆湯緞謗呂估白新載丑贍遭汀扒梨壘盡廠好值貨唆筷鍛蜜演萄誨廷券覓匿載住緬秤神清摔機(jī)延噪躁診兔幾霧襪鈞豬習(xí)卒嘔梆栽便剔晉隋協(xié)石韓里享跌懼參掇虐很惟圓稼弄藐蹤訛掇郁鋸拇烴肪啥倪姥鹵菊供想監(jiān)悸珍貧叫無(wú)兄實(shí) 訓(xùn) 報(bào) 告實(shí)訓(xùn)項(xiàng)目名稱(chēng)基于

4、android象棋游戲的開(kāi)發(fā)與測(cè)試二 級(jí) 學(xué) 院 信息工程學(xué)院 專(zhuān) 業(yè) 班 級(jí) 11級(jí)計(jì)科(2)班 姓 名 完圓圓、李城城、孫超、胡迪 學(xué) 號(hào) 1142151221、14、20、08 日 期 2014-11-19 項(xiàng)目名稱(chēng)基于安卓象棋游戲的開(kāi)發(fā)與測(cè)試地點(diǎn)教13 603報(bào) 告 內(nèi) 容在本報(bào)告中,首先介紹了安卓的現(xiàn)狀以及開(kāi)發(fā)的相關(guān)知識(shí),其次是關(guān)于開(kāi)發(fā)游戲過(guò)程中用到的開(kāi)發(fā)工具和系統(tǒng)的運(yùn)行環(huán)境配置等。通過(guò)對(duì)android系統(tǒng)架構(gòu)和應(yīng)用開(kāi)發(fā)進(jìn)行初步研究,設(shè)計(jì)一款中國(guó)象棋游戲。在對(duì)系統(tǒng)進(jìn)行詳細(xì)需求分析的基礎(chǔ)上,確定了系統(tǒng)的功能和性能要求,對(duì)游戲的菜單界面、屏幕繪制、時(shí)間控制、布局算法和動(dòng)畫(huà)等進(jìn)行了設(shè)計(jì),并

5、最終實(shí)現(xiàn)了一個(gè)界面友好、高效穩(wěn)定和富有娛樂(lè)性的手機(jī)益智游戲。最后,實(shí)現(xiàn)的是對(duì)本次游戲的測(cè)試并列舉了測(cè)試用列以及給出了測(cè)試結(jié)果。教師評(píng)語(yǔ)成績(jī): 教師簽名: 摘 要 中國(guó)象棋是一款智力休閑游戲,具有歷史悠久而且擁有巨大的游戲愛(ài)好者群體,他們以中國(guó)象棋陶冶情操、鍛煉智力、體驗(yàn)象棋帶來(lái)的快樂(lè),中國(guó)象棋還是一個(gè)老少皆宜的娛樂(lè)游戲。隨著手持設(shè)備、智能手機(jī)的普及,搭載android操作系統(tǒng)的智能手機(jī)也已經(jīng)走進(jìn)了千家萬(wàn)戶(hù),當(dāng)人們閑暇偶爾需要娛樂(lè)時(shí),卻發(fā)現(xiàn)沒(méi)有實(shí)物象棋,該軟件不失為一個(gè)很好的替代品,供大家進(jìn)行娛樂(lè)享受,尤其是在現(xiàn)在這個(gè)快節(jié)奏的社會(huì)中 ,人們更滿(mǎn)足于手機(jī)的使用,可以方便地隨意移動(dòng),不像實(shí)物象棋那樣

6、靜靜的坐著。 本論文通過(guò)實(shí)際應(yīng)用軟件的開(kāi)發(fā)深入分析和研究android開(kāi)發(fā)技術(shù)。實(shí)現(xiàn)中國(guó)象棋的人機(jī)會(huì)話(huà)。本文實(shí)現(xiàn)了中國(guó)象棋在計(jì)算機(jī)中表示問(wèn)題,基于android平臺(tái)應(yīng)用,人機(jī)對(duì)戰(zhàn)模擬現(xiàn)實(shí)中的人人對(duì)戰(zhàn);討論走棋規(guī)則和著法的實(shí)現(xiàn)等一系列問(wèn)題,最終電腦能夠通過(guò)產(chǎn)生著法,搜索,估計(jì)來(lái)產(chǎn)生一步最優(yōu)的走棋,實(shí)現(xiàn)人機(jī)會(huì)話(huà)的目的。關(guān)鍵字:中國(guó)象棋,android,智能手機(jī),人機(jī)對(duì)戰(zhàn)目錄1 緒論11.1 研究背景11.2 本論文研究意義32 游戲系統(tǒng)開(kāi)發(fā)平臺(tái)及搭建42.1 jdk和 eclipse:42.2 android sdk42.3 adt53 系統(tǒng)分析63.1 可行性研究63.2 界面的需求分析63.3

7、 游戲走棋需求設(shè)計(jì)分析64 游戲系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)74.1 類(lèi)框架的設(shè)計(jì)74.2 共有類(lèi)chessactivity的實(shí)現(xiàn)84.3 輔助界面相關(guān)類(lèi)的實(shí)現(xiàn)84.4 游戲界面相關(guān)類(lèi)的實(shí)現(xiàn)94.5 中國(guó)象棋的規(guī)則及走法的實(shí)現(xiàn)104.6 游戲人機(jī)對(duì)戰(zhàn)的實(shí)現(xiàn)184.7 系統(tǒng)流程圖195 運(yùn)行測(cè)試205.1 測(cè)試用例表205.2 測(cè)試結(jié)果206 小結(jié)23參考文獻(xiàn)24附錄:251 緒論1.1 研究背景(1) 中國(guó)象棋背景中國(guó)象棋發(fā)展至今已有兩千三、四百年的歷史,早在戰(zhàn)國(guó)時(shí)期就有正式的記載,堪稱(chēng)中國(guó)的國(guó)粹。中國(guó)象棋具有悠久的歷史,深的人們的喜愛(ài),象棋的愛(ài)好者也更是數(shù)不勝數(shù),遠(yuǎn)在戰(zhàn)國(guó)中國(guó)象棋便在貴族階層廣為流傳,早

8、期的象棋是象征著當(dāng)時(shí)戰(zhàn)斗場(chǎng)面的游戲,后來(lái)這種觀念慢慢被改變,經(jīng)過(guò)千年的流傳不斷的完善和改進(jìn),成為人們休閑娛樂(lè)、鍛煉腦力思維不可獲取的好方式。中國(guó)象棋體現(xiàn)的是一種策略,方寸之間包含天地玄機(jī),人生哲理,使人越是細(xì)玩越覺(jué)其味悠然深遠(yuǎn)。由于簡(jiǎn)單的行棋規(guī)則,趣味性強(qiáng),便捷的載體,使得象棋成為雅俗共賞的競(jìng)技項(xiàng)目。因此,也成為流行極為廣泛的棋藝活動(dòng)。是我國(guó)正式開(kāi)展的78個(gè)體育項(xiàng)目之一,為促進(jìn)該項(xiàng)目在世界范圍內(nèi)的普及和推廣,在中國(guó)古代,象棋被列為士大夫們的修身之藝,現(xiàn)在則被視為怡神益智的一種有益的活動(dòng)。有著數(shù)以?xún)|計(jì)的愛(ài)好者。它不僅能豐富文化生活,陶冶情操,在棋戰(zhàn)中,人們可以從攻與防、虛與實(shí)、整體與局部等復(fù)雜關(guān)

9、系的變化中悟出某種哲理;更有助于開(kāi)發(fā)智力,啟迪思維,鍛煉辨證分析能力和培養(yǎng)頑強(qiáng)的意志。(2) android系統(tǒng)簡(jiǎn)介android 系統(tǒng)構(gòu)架簡(jiǎn)介:android是一個(gè)基于linux®v2.6內(nèi)核的交互性操作環(huán)境,同時(shí)它也是一個(gè)分層系統(tǒng),android系統(tǒng)架構(gòu)顯示如下圖1.1。圖1.1系統(tǒng)架構(gòu)圖 應(yīng)用層由所有的android應(yīng)用程序組成。其中包括電子郵件客戶(hù)端,sms程序,地圖,瀏覽器,聯(lián)系人及其他。所有的應(yīng)用程序都是用java編程語(yǔ)言編寫(xiě)的。 應(yīng)用框架層定義了android應(yīng)用程序框架。所有的android應(yīng)用程序都是基于應(yīng)用框架的。android應(yīng)用框架包括:l 豐富及可擴(kuò)展性的視

10、圖,可以用來(lái)建立一個(gè)美觀的用戶(hù)界面,包括列表,網(wǎng)格,文本框,按鈕,甚至是嵌入到web瀏覽器的應(yīng)用程序。 l 一組內(nèi)容提供商,使應(yīng)用程序能夠訪問(wèn)其他應(yīng)用程序的數(shù)據(jù)(如電話(huà)簿),或共享自己的數(shù)據(jù)。l 資源管理器提供了訪問(wèn)的非編碼資源的途徑,如本地化的字符串,圖形,布局文件。l 通知管理器允許所有應(yīng)用程序顯示定制的提示或通知在狀態(tài)欄里。l 活動(dòng)管理器可以管理應(yīng)用程序的生命周期,并提供一個(gè)通用的后臺(tái)堆棧導(dǎo)航。 庫(kù)層包括了一套被各類(lèi)android 系統(tǒng)組件使用的c / c + +庫(kù)并對(duì)應(yīng)用程序框架提供支持。 android 的運(yùn)行環(huán)境包括一套核心庫(kù)和 java 虛擬機(jī)(dalvik虛擬機(jī)),已經(jīng)由谷歌重

11、新設(shè)計(jì)和優(yōu)化來(lái)適合android平臺(tái)。 linux 內(nèi)核位于 android 系統(tǒng)的底層并作為硬件和軟件之間的一個(gè)抽象層。它提供了核心系統(tǒng)服務(wù),如安全,內(nèi)存管理,進(jìn)程管理,網(wǎng)絡(luò)協(xié)議棧和驅(qū)動(dòng)模型。此外,一些底層功能如 dalvik 虛擬機(jī)線程管理也依賴(lài)于linux內(nèi)核。1.2 本論文研究意義 中國(guó)象棋是一項(xiàng)智力和策略的游戲,以往都是人和人下棋,現(xiàn)在有了計(jì)算機(jī)我們可以和計(jì)算機(jī)競(jìng)技,人可以與計(jì)算機(jī)進(jìn)行對(duì)弈??刂朴?jì)算機(jī)的是人類(lèi),而人機(jī)會(huì)話(huà)綜合性很強(qiáng)的一門(mén)邊緣學(xué)科,它的中心任務(wù)是研究使計(jì)算機(jī)如何去做那些過(guò)去只能靠人的智力才能做的工作。因此,對(duì)游戲開(kāi)發(fā)過(guò)程中的人工智能技術(shù)的研究自然也就成了業(yè)界的一個(gè)熱門(mén)研

12、究方向。 本次論文的研究,主要是對(duì)中國(guó)象棋在android系統(tǒng)中的兼容行性,對(duì)游戲界面可觀性,游戲中人機(jī)會(huì)話(huà)的研究。對(duì)于游戲中的人機(jī)會(huì)話(huà)的要點(diǎn):a 某種在及其上表示棋局的方法,讓程序知道會(huì)話(huà)的狀態(tài);b 產(chǎn)生合法的走棋法則,使得會(huì)話(huà)雙方公正,并可以判斷人類(lèi)對(duì)手是否亂走;c 從所有和法定的走法中選擇最佳的走法的技術(shù);d 一種評(píng)估局面優(yōu)化的方法,同上面技術(shù)配合做出智能選擇;e 一個(gè)實(shí)現(xiàn)游戲的界面;通過(guò)對(duì)游戲的設(shè)計(jì),來(lái)實(shí)現(xiàn)游戲中棋牌的表示,著法的生成,對(duì)著法的搜索,最后對(duì)局面的評(píng)估來(lái)實(shí)現(xiàn)中國(guó)象棋的人機(jī)會(huì)話(huà)。2 游戲系統(tǒng)開(kāi)發(fā)平臺(tái)及搭建2.1 jdk和 eclipse:jdk是sun公司針對(duì)java開(kāi)發(fā)員

13、的產(chǎn)品。自從java推出以來(lái),jdk已經(jīng)成為使用最廣泛的java sdk。jdk是整個(gè)java的核心。包括運(yùn)行環(huán)境java工具和java基礎(chǔ)類(lèi)庫(kù)。jdk是學(xué)好java的第一步。安裝eclipse的開(kāi)發(fā)環(huán)境需要jdk的支持,如果沒(méi)有jdk,則啟動(dòng)eclipse時(shí)會(huì)報(bào)告錯(cuò)誤。在windows上安裝jdk非常簡(jiǎn)單首先在sun官網(wǎng)上下載,按照默認(rèn)路徑進(jìn)行安裝。安裝完成之后,可以在檢查jdk是否安裝成功。打開(kāi)cmd窗口,輸入java version 查看jdk的版本信息。出現(xiàn)類(lèi)似下面的畫(huà)面表示安裝成功了:圖 2.1 jdk測(cè)試eclipse如果你還沒(méi)有eclipse的話(huà),從官網(wǎng)上下載eclipse id

14、e for java developers解壓之后即可使用。2.2 android sdkandroidsdk 提供了在 windows 平臺(tái)上的開(kāi)發(fā)安卓應(yīng)用程序的開(kāi)發(fā)組件,也就是說(shuō),不論讀者使用什么樣的平臺(tái)都可以開(kāi)發(fā)出安卓平臺(tái)的應(yīng)用軟件,其中包含了安卓平臺(tái)上開(kāi)發(fā)移動(dòng)應(yīng)用的各種工具集。它不僅包括了安卓模擬器和用于eclipse的安卓開(kāi)發(fā)工具插件(adt),而且包括了各種用來(lái)調(diào)試,打包盒在模擬器上安裝應(yīng)用的工具。安卓主要是以 java 語(yǔ)言為基礎(chǔ),用戶(hù)可以使用 java 語(yǔ)言來(lái)開(kāi)發(fā) 安卓平臺(tái)上的軟件應(yīng)用。通過(guò)sdk提供的一些工具將其打包成安卓平臺(tái)使用的apk文件,然后在使用sdk中的模擬器(em

15、ulator)來(lái)模擬和測(cè)試軟件在安卓平臺(tái)運(yùn)行情況和效果。安裝安卓的sdk,安裝好jdk和eclipse后,打開(kāi)eclipse ide。依次單擊menu項(xiàng)中的windows->android sdk manager項(xiàng),進(jìn)入android sdk manager界面選擇tool和需要的android版本項(xiàng)進(jìn)行更新安裝。2.3 adtandroid為eclipse定制了一個(gè)插件,及adt(android development tools),目的是為用戶(hù)提供一個(gè)強(qiáng)大的綜合環(huán)境用于開(kāi)發(fā)android應(yīng)用程序,adt擴(kuò)展了eclipse的功能,可以讓用戶(hù)快速的建立android項(xiàng)目,創(chuàng)建應(yīng)用程序界

16、面,在基于android api的基礎(chǔ)上添加組件,以及用sdk工具集調(diào)試應(yīng)用程序,甚至導(dǎo)出簽名(或未簽名)的apks以便發(fā)行應(yīng)用程序。安裝android development tool plug-in,打開(kāi) eclipse ide。依次單擊menu項(xiàng)中的help->software update項(xiàng)3 系統(tǒng)分析3.1 可行性研究本次實(shí)訓(xùn)的題目是:基于android象棋游戲的開(kāi)發(fā)與測(cè)試;主要是在基于android平臺(tái)開(kāi)發(fā)一個(gè)手持設(shè)備應(yīng)用游戲,使得游戲具有兼容性和人機(jī)對(duì)戰(zhàn);并對(duì)整個(gè)系統(tǒng)分析,設(shè)計(jì)過(guò)程給出一個(gè)論證。中國(guó)象棋游戲是棋牌類(lèi)游戲,體現(xiàn)的是一種策略。對(duì)于行棋走棋不同的棋子有不同走棋規(guī)則

17、,走棋都必須按照走棋規(guī)則要求,雙方輪換走棋,吃子,將軍。本游戲設(shè)計(jì)無(wú)疑是模擬現(xiàn)實(shí)人人博弈,虛擬的替換了真實(shí)的棋子棋盤(pán),由人來(lái)和電腦直接對(duì)弈;在一個(gè)人閑暇時(shí)也可以體驗(yàn)博弈的樂(lè)趣。該應(yīng)用游戲的設(shè)計(jì)主要從以下幾方面做起:系統(tǒng)流程分析、系統(tǒng)的功能設(shè)計(jì)、系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)。做好這些工作需要對(duì)android開(kāi)發(fā)平臺(tái)了解,并搭建平臺(tái);深入了解數(shù)據(jù)結(jié)構(gòu)、android應(yīng)用程序以及各種組件(api)庫(kù)函數(shù)。3.2 界面的需求分析 通過(guò)以往手持設(shè)備游戲的體驗(yàn),和用戶(hù)對(duì)中國(guó)象棋游戲需求邏輯,游戲的功能以及操作方法把整個(gè)設(shè)計(jì)劃分成單元;先是運(yùn)行游戲,進(jìn)入歡迎游戲界面,隨后單擊歡迎界面的圖片進(jìn)入菜單界面,在菜單中可以點(diǎn)

18、擊“打開(kāi)聲音”/“關(guān)閉聲音”按鈕來(lái)控制聲音開(kāi)關(guān),單擊“幫助”菜單可以進(jìn)入幫助界面顯示游戲操作方法,而在菜單界面單擊“開(kāi)始游戲”菜單將進(jìn)入游戲主界面開(kāi)始游戲,在游戲界面玩家可以通過(guò)單擊自己的棋子按照行棋規(guī)則來(lái)走棋,同時(shí)可以單擊聲音按鈕打開(kāi)關(guān)閉聲音,當(dāng)游戲一方的“將”或者敵方的“帥”被吃掉是,會(huì)出現(xiàn)游戲失敗或游戲勝利的界面,在游戲過(guò)程中玩家可以隨時(shí)通過(guò)單擊“退出”按鈕返回到游戲主菜單,主菜單中還可以點(diǎn)擊“退出游戲”結(jié)束關(guān)閉游戲。3.3 游戲走棋需求設(shè)計(jì)分析進(jìn)入游戲界面,游戲提示當(dāng)前走棋為“帥”或者“將”,雙方各走一著,直至分出勝負(fù)或者直接點(diǎn)擊退出結(jié)束游戲,輪到走棋的一方,將某個(gè)棋子從一個(gè)交叉點(diǎn)走到

19、另一個(gè)交叉點(diǎn),或者吃掉對(duì)方的棋子而占領(lǐng)其交叉點(diǎn),都算走一著,雙方各走一著即一個(gè)回合,吃子時(shí),任何棋子走動(dòng),如果目標(biāo)位置上有對(duì)方的棋子,就可以把對(duì)方的棋子拿出棋盤(pán),即屏幕上消失在顯示自己的棋子。玩家走完棋后電腦相對(duì)應(yīng)搜索出自己相對(duì)應(yīng)的走法。程序需要讓計(jì)算機(jī)在輪到它走子的時(shí)候能夠執(zhí)行一步它認(rèn)為最有利的著法,而不是亂走;那么它就要有在諸多可供選擇的著法,提供所有候選著法的列表就是著法生成器所要完成的。之后用搜索函數(shù)來(lái)搜索列表,并用局面評(píng)估函數(shù)逐一打分,最后就可以選擇出最佳著法并執(zhí)行。4 游戲系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)4.1 類(lèi)框架的設(shè)計(jì)通過(guò)對(duì)中國(guó)象棋游戲的了解,對(duì)基于android技術(shù)的中國(guó)象棋人機(jī)對(duì)弈游戲的

20、需求分析,游戲?qū)崿F(xiàn)的理解并結(jié)合自己對(duì)知識(shí)點(diǎn)所掌握的程度;對(duì)中國(guó)象棋游戲總體設(shè)計(jì),主要由三個(gè)類(lèi)組成:共有類(lèi),輔助界面相關(guān)類(lèi),游戲界面相關(guān)類(lèi)。共有類(lèi)是activity的實(shí)現(xiàn)類(lèi)chessactivity,該類(lèi)是通過(guò)擴(kuò)展基類(lèi)activity得到的,是整個(gè)游戲的控制器,也是整個(gè)游戲程序的入口;輔助界面相關(guān)類(lèi)由welcomeview歡迎界面類(lèi)(該類(lèi)為游戲歡迎界面的實(shí)現(xiàn)類(lèi),主要負(fù)責(zé)歡迎界面的繪制工作),helpview幫助界面類(lèi)(該類(lèi)為幫助界面的實(shí)現(xiàn)類(lèi)),menuview菜單界面類(lèi)(該類(lèi)為菜單界面的實(shí)現(xiàn)類(lèi),負(fù)責(zé)繪制菜單界面以及對(duì)菜單界面的屏幕進(jìn)行監(jiān)聽(tīng))三個(gè)類(lèi)實(shí)現(xiàn);游戲界面相關(guān)類(lèi)由gameview游戲界面類(lèi)(

21、該類(lèi)為游戲程序中最主要的類(lèi),負(fù)責(zé)繪制游戲過(guò)程中所有的信息,如棋盤(pán)、棋子、各個(gè)按鈕以及勝利或失敗菜單等),guize象棋規(guī)則類(lèi)(該類(lèi)是象棋規(guī)則的實(shí)現(xiàn)類(lèi),其中包含所有棋子的走棋規(guī)則以及當(dāng)前棋牌所有可能走法),chessmove走法類(lèi)(該類(lèi)為棋子的走法的封裝類(lèi),包括棋子的名稱(chēng),出發(fā)點(diǎn)以及目標(biāo)點(diǎn))。之間關(guān)系如圖4.1所示:圖4.1游戲類(lèi)圖4.2 共有類(lèi)chessactivity的實(shí)現(xiàn)該類(lèi)的主要作用是通過(guò)接受handler消息變量,根據(jù)各個(gè)界面發(fā)送的handler消息的類(lèi)型判斷所需要執(zhí)行的操作。在適當(dāng)?shù)臅r(shí)間初始化相應(yīng)的用戶(hù)界面,各個(gè)界面初始化方法被調(diào)用時(shí),并根據(jù)其他界面的需求直接將用戶(hù)界面切換到相應(yīng)的界

22、面4.3 輔助界面相關(guān)類(lèi)的實(shí)現(xiàn)該游戲的第一個(gè)用戶(hù)界面即歡迎界面如圖4.2所示,通過(guò)welcomeview類(lèi)來(lái)實(shí)現(xiàn)該界面加載了一個(gè)歡迎中國(guó)象棋圖片,并通過(guò)監(jiān)聽(tīng)菜單圖片,向activity發(fā)送handler消息通知控制器切換用戶(hù)界面;然后切換到菜單界面menuview。圖 4.2 游戲歡迎界面 menuview類(lèi)中通過(guò)監(jiān)聽(tīng)“開(kāi)始游戲”切換到游戲界面;通過(guò)監(jiān)聽(tīng)“打開(kāi)聲音”/“關(guān)閉聲音”進(jìn)行聲音的打開(kāi)與關(guān)閉,與此同時(shí)“打開(kāi)聲音”、“關(guān)閉聲音”按鈕進(jìn)行切換;通過(guò)監(jiān)聽(tīng)“幫助”來(lái)切換都幫助界面;通過(guò)監(jiān)聽(tīng)“退出游戲”結(jié)束游戲用行退出游戲。幫助界面helpview,該類(lèi)中加載圖片,圖片中顯示該游戲“怎么玩”同時(shí)

23、監(jiān)聽(tīng)“返回”按鈕,向activity發(fā)送handler消息通知控制器切換用戶(hù)界面從而返回到菜單界面,如圖4.3所示。圖 4.3 菜單界面4.4 游戲界面相關(guān)類(lèi)的實(shí)現(xiàn)游戲界面gameview,該類(lèi)是整個(gè)程序中最主要的類(lèi),該類(lèi)首先是繪制屏幕上的內(nèi)容棋盤(pán)和對(duì)應(yīng)的棋子。提示一方先走;當(dāng)“黑帥”或者“紅將”被吃的話(huà),彈出您贏了或者您輸了通過(guò)監(jiān)聽(tīng)結(jié)束游戲切換到菜單界面?;蛘唿c(diǎn)擊退出按鈕也可結(jié)束游戲切換至菜單界面。監(jiān)聽(tīng)聲音按鈕來(lái)控制聲音的開(kāi)與關(guān)并以紅色顯示聲音開(kāi),消失即為關(guān),如圖4.4所示。圖4.4游戲界面4.5 中國(guó)象棋的規(guī)則及走法的實(shí)現(xiàn)(1) 行棋規(guī)則中國(guó)象棋分為紅黑雙方,以楚河漢界為分界線,雙方各執(zhí)1

24、6字,分別為2車(chē)2馬2相2仕2炮1將5卒,各自走法不同,具體如下:馬:只可以走“日”字方格,因此一匹馬的最理想落子點(diǎn)有8個(gè),但存在絆馬腿的情況,即從馬的位置到要走到的目標(biāo)位置,順著此方向,“日”字方格有兩個(gè)方向,即兩格長(zhǎng)度和一個(gè)長(zhǎng)度,馬緊挨的兩格長(zhǎng)度方向的位置不能有子,否則即被絆住,不能走動(dòng)。若目標(biāo)位置為空,即可走過(guò),若為對(duì)方的棋子,即可吃掉。圖4.5馬的走法紅黑馬規(guī)則走法的介紹:case 10:/紅馬 case 3:/黑馬if(!(math.abs(tox-fromx)=1 && math.abs(toy-fromy)=2)| (math.abs(tox-fromx)=2 &

25、amp;& math.abs(toy-fromy)=1)return false;/馬走的不是日字時(shí)if(tox-fromx=2)/向右走i=fromx+1;/移動(dòng)j=fromy;else if(fromx-tox=2)/向左走i=fromx-1;/移動(dòng)j=fromy;else if(toy-fromy=2)/向下走i=fromx;/移動(dòng)j=fromy+1;else if(fromy-toy=2)/向上走i=fromx;/移動(dòng)j=fromy-1;if(qiziji != 0)return false;/絆馬腿break;炮:只可以走直線,且一步可以走任意距離,其起始點(diǎn)與目標(biāo)點(diǎn)之間不得存

26、在其他棋子。炮吃子的條件是與目標(biāo)棋子在一條直線上,且兩子之間必須有且只有一個(gè)棋子作為“跳板”,讓炮進(jìn)行跳躍式攻擊。紅黑炮規(guī)則走法的介紹:圖4.6炮的走法case 11:/紅砲case 4:/黑炮if(fromy!=toy && fromx!=tox)/炮走直線return false;/返回falseif(qizitoytox = 0)/不吃子時(shí)if(fromy = toy)/橫線if(fromx < tox)/想右走for(i = fromx + 1; i < tox; i+)if(qizifromyi != 0)return false;/返回falseelse

27、/向走走for(i = tox + 1; i < fromx; i+)if(qizifromyi!=0)return false;/返回falseelse/豎線if(fromy < toy)/向下走for(j = fromy + 1; j < toy; j+)if(qizijfromx != 0)return false;/返回falseelse/向上走for(j = toy + 1; j < fromy; j+)if(qizijfromx != 0)return false;/返回falseelse/吃子時(shí)int count=0;if(fromy = toy)/走的是

28、橫線if(fromx < tox)/向右走for(i=fromx+1;i<tox;i+)if(qizifromyi!=0)count+;if(count != 1)return false;/返回falseelse/向左走for(i=tox+1;i<fromx;i+)if(qizifromyi != 0)count+;if(count!=1)return false;/返回falseelse/走的是豎線if(fromy<toy)/向下走for(j=fromy+1;j<toy;j+)if(qizijfromx!=0)count+;/返回falseif(count!=

29、1)return false;/返回falseelse/向上走for(j=toy+1;j<fromy;j+)if(qizijfromx != 0)count+;/返回falseif(count!=1)return false;/返回falsebreak;象、相:只可以在己方陣營(yíng)走動(dòng),且僅限于7個(gè)點(diǎn),即己方“田”字格上的7個(gè)點(diǎn),走的是斜線,走動(dòng)時(shí),起始點(diǎn)與目標(biāo)點(diǎn)構(gòu)成一條斜線,若該斜線的中點(diǎn)位置存在其他棋子,則被絆住無(wú)法走動(dòng)。圖4.7象的走法case 6:/黑象if(toy>4)/不能過(guò)河return false;if(math.abs(fromx-tox) != 2 | math.a

30、bs(fromy-toy) != 2)/相走“田”字return false;if(qizi(fromy+toy)/2(fromx+tox)/2 != 0)return false;/相眼處有棋子break;case 13:/紅相if(toy<5)/不能過(guò)河return false;/返回falseif(math.abs(fromx-tox) != 2 | math.abs(fromy-toy) != 2)/相走“田”字return false;/返回falseif(qizi(fromy+toy)/2(fromx+tox)/2 != 0)return false;/相眼處有棋子break

31、;將、帥:只可以在己方陣營(yíng)走動(dòng),且僅限于9個(gè)點(diǎn),即己方底三行中三列形成的9個(gè)交叉點(diǎn),也就是俗稱(chēng)的“九宮”,一步只可以走動(dòng)一個(gè)方格的直線距離作為本方的主將,鎮(zhèn)守大本營(yíng),雙方的主將是不能夠處于同一條直線而主將之間不存在其他的棋子進(jìn)行隔擋。圖4.8將帥的走法case 1:/黑帥if(toy>2|tox<3|tox>5)/出了九宮格return false;if(math.abs(fromy-toy)+math.abs(tox-fromx)>1)/只能走一步return false;break;case 8:/紅將if(toy<7|tox>5|tox<3)/出

32、了九宮格return false;if(math.abs(fromy-toy)+math.abs(tox-fromx)>1)/只能走一步return false;break;(2) 棋盤(pán)的表示針對(duì)棋盤(pán)的設(shè)計(jì),每一種棋子對(duì)應(yīng)一個(gè)固定的值用以識(shí)別該棋子的類(lèi)型,那么設(shè)計(jì)就根據(jù)紅黑雙方的棋子以及每個(gè)類(lèi)型的棋子,設(shè)計(jì)規(guī)則類(lèi)(guize類(lèi),調(diào)用其中的canmove方法用以判斷某一步走棋的是否可行。規(guī)則類(lèi)的設(shè)計(jì)則采用了常規(guī)的辦法,因?yàn)槠遄拥姆N類(lèi)只有7種,且紅黑雙方處于棋盤(pán)的兩端,某些棋子走動(dòng)時(shí)的方向不一樣,設(shè)計(jì)時(shí)就要進(jìn)行分類(lèi)討論設(shè)計(jì),供存在14中不同的判別方法來(lái)對(duì)所以的棋子走法進(jìn)行判別是否可行,每一個(gè)

33、判別方法都對(duì)應(yīng)于其獨(dú)有的判斷算法。棋盤(pán)上各種棋子以及棋盤(pán)的初始布局的設(shè)計(jì)采用10*9的數(shù)組來(lái)進(jìn)行標(biāo)識(shí),如下圖4.9所示 : 圖 4.9棋盤(pán)初始布局各個(gè)數(shù)字的對(duì)應(yīng)關(guān)系如下:0-無(wú)棋子;1-黑方的帥;2-黑方的車(chē);3-黑方的馬;4-黑方的炮;5-黑方的士;6-黑方的象;7-黑方的卒;8-紅方的將;9-紅方的車(chē);10-紅方的馬;11-紅方的炮;12-紅方的士;13-紅方的相;14-紅方的兵。坐標(biāo)(0,0)到坐標(biāo)(8,4)之間的坐標(biāo)代表楚河漢界的一方,坐標(biāo)(0,5)到坐標(biāo)(8,9)之間的坐標(biāo)代表楚河漢界的另一方,即紅黑雙方各自的領(lǐng)土。電腦走棋時(shí)通過(guò)構(gòu)造一個(gè)走法類(lèi)chessmove,創(chuàng)建一個(gè)對(duì)象調(diào)用ne

34、gamaxengine類(lèi)中的search()函數(shù)根據(jù)當(dāng)前局勢(shì)查詢(xún)一個(gè)最好的走法記錄棋子的原有位置坐標(biāo)、目標(biāo)位置坐標(biāo)、棋子類(lèi)型并對(duì)該對(duì)象進(jìn)行初始化。然后根據(jù)該對(duì)象記錄的原有位置坐標(biāo)和目標(biāo)位置坐標(biāo)進(jìn)行數(shù)據(jù)改變達(dá)到行棋目的。玩家走棋是通過(guò)對(duì)屏幕進(jìn)行監(jiān)聽(tīng),從而記錄棋子類(lèi)型,原有位置坐標(biāo)和目標(biāo)位置坐標(biāo),通過(guò)調(diào)用規(guī)則類(lèi)guize中的canmove判斷該棋子走法是否可行符合棋子走棋規(guī)則,可行就改變?cè)形恢煤湍繕?biāo)位置數(shù)據(jù),達(dá)到行棋的目的輪到走棋的一方,游戲界面當(dāng)前位置顯示走棋一方的“黑帥”或者“紅將”,將某個(gè)棋子從一個(gè)交叉點(diǎn)走到另一個(gè)交叉點(diǎn),或者吃掉對(duì)方的棋子而占領(lǐng)其交叉點(diǎn),這樣一方走棋結(jié)束當(dāng)前位置顯示改變輪

35、到另一方走棋。任何棋子走動(dòng),如果目標(biāo)位置上有對(duì)方的棋子,就可以把對(duì)方的棋子拿出棋盤(pán),即在10*9數(shù)組中相應(yīng)位置的數(shù)字變?yōu)樽约浩遄铀鶎?duì)應(yīng)的數(shù)字,自己棋子原來(lái)所在的位置對(duì)應(yīng)數(shù)組的數(shù)字變?yōu)?,刷幀線程不斷的刷新界面改變屏幕顯示,這樣對(duì)方的棋子就被吃掉,在屏幕上消失在對(duì)應(yīng)顯示自己的棋子;如果目標(biāo)位置上沒(méi)有對(duì)方棋子,10*9數(shù)組對(duì)應(yīng)目標(biāo)位置數(shù)字改變,原有位置數(shù)字變?yōu)?,刷幀線程更新界面改變顯示。4.6 游戲人機(jī)對(duì)戰(zhàn)的實(shí)現(xiàn)(1) 首先產(chǎn)生所有可能的走法,定義一個(gè)arraylist容器,把可能的走法放入arraylist容器里面。public list<chessmove> allpossibl

36、emoves(int qizi)/產(chǎn)生所有可能的走法 list<chessmove> ret = new arraylist<chessmove>();/用來(lái)裝所有可能的走法 for (int x = 0; x < 10; x+) for (int y = 0; y < 9; y+)/循環(huán)所有的棋牌位置 int chessman = qizixy; if (chessman != 0)/當(dāng)次位置不為空時(shí),即有棋子時(shí) if(chessman > 7)/是紅方,即是玩家棋子時(shí)跳過(guò) continue; . return ret.isempty() ? nul

37、l : ret;/當(dāng)ret中沒(méi)有走法時(shí),返回空,有時(shí)返回ret(2) 利用隨機(jī)數(shù)從容器中取出一種走法,完成移動(dòng)。public chessmove searchagoodmove(int qizi)/查詢(xún)一個(gè)好的走法list<chessmove> ret = allpossiblemoves(qizi);/產(chǎn)生所有走法try thread.sleep(1000);/睡眠四秒鐘,以便調(diào)試 catch (interruptedexception e) /捕獲異常e.printstacktrace();/打印堆棧信息return ret.get(int)(math.random()*ret

38、.size();4.7 系統(tǒng)流程圖游戲流程圖如圖4.10所示圖4.10系統(tǒng)流程圖5 運(yùn)行測(cè)試5.1 測(cè)試用例表測(cè)試編號(hào)測(cè)試目標(biāo)期望結(jié)果實(shí)際結(jié)果001測(cè)試象棋“馬”是否“絆馬腿”游戲過(guò)程中,“馬”在絆馬腿情況下不能移動(dòng)。能實(shí)現(xiàn)“絆馬腿”002測(cè)試一方棋子能否被另一方吃掉,并消失棋子被吃后消失,吃子的棋子能代替被吃棋子的位置一方棋子能被另一方吃掉,并消失003測(cè)試對(duì)手的象棋“將”能否被將死,能結(jié)束游戲?qū)κ值南笃濉皩ⅰ北粚⑺?,并出現(xiàn)提示“你贏了” ,結(jié)束游戲?qū)κ值南笃濉皩ⅰ北粚⑺?,能結(jié)束游戲004測(cè)試象棋“炮”是否能隔子吃掉對(duì)手的棋子,即“炮打隔子”“炮”隔子吃掉對(duì)手棋子“炮”能“炮打隔子”005測(cè)

39、試游戲棋子是否能移動(dòng)棋子從一個(gè)到另一個(gè)位置游戲棋子能移動(dòng)006不同分辨率模擬器能否正常運(yùn)行能夠正常運(yùn)行不能正常運(yùn)行007能否對(duì)將可以對(duì)將不能對(duì)將5.2 測(cè)試結(jié)果(1) 測(cè)試001“馬”是否“絆馬腿”測(cè)試結(jié)果如圖5.1所示圖5.1測(cè)試絆馬腿(2) 測(cè)試002一方棋子能否被另一方吃掉測(cè)試結(jié)果如圖5.2所示圖5.2測(cè)試吃子(3) 測(cè)試003“將”能否被將死測(cè)試結(jié)果如圖5.3所示圖5.3測(cè)試能否贏棋(4) 測(cè)試003“將”能否被將死測(cè)試結(jié)果如圖5.4所示圖5.4測(cè)試對(duì)將(5) 測(cè)試006不同分辨率模擬器能否正常運(yùn)行如圖5.5所示圖5.5測(cè)試不同分辨率模擬器6 小結(jié)三周的android實(shí)訓(xùn),已接近尾聲。

40、在這短暫的三周之內(nèi),有成功有失??;有喜悅有心酸。在實(shí)訓(xùn)老師的帶領(lǐng)下,我學(xué)到了很多。我們小組在老師的協(xié)助下最終成功的完成實(shí)訓(xùn)項(xiàng)目。在這次實(shí)訓(xùn)中讓我學(xué)到了,對(duì)于每一個(gè)項(xiàng)目開(kāi)發(fā),都需端正態(tài)度,量力而行,發(fā)揮自己的長(zhǎng)處,這樣不僅有利于促進(jìn)團(tuán)隊(duì)項(xiàng)目開(kāi)發(fā)的進(jìn)度,還有利于把自己代入這個(gè)項(xiàng)目中。當(dāng)自己融于這個(gè)項(xiàng)目時(shí),就能多思考。這樣是一個(gè)自我學(xué)習(xí)的過(guò)程,這里本來(lái)不會(huì)做,但是經(jīng)過(guò)這個(gè)項(xiàng)目或這個(gè)模塊后,這里也就會(huì)了,把不會(huì)的變成會(huì)的,把別人的知識(shí)變成自己的,這才是會(huì)學(xué)習(xí)。通過(guò)為期三周的android實(shí)訓(xùn),這次的實(shí)訓(xùn)讓我學(xué)到了很多知識(shí)。在項(xiàng)目中,除了讓我明白工作中需要能力,素質(zhì),更重要的是學(xué)會(huì)如何去完成一個(gè)任務(wù),懂

41、得了享受工作。當(dāng)遇到問(wèn)題時(shí)要冷靜去想辦法一點(diǎn)一點(diǎn)的排除障礙,到最后取得成功,一種自信油然而生,這就是工作的樂(lè)趣。有時(shí)候也需要虛心請(qǐng)教,從別人身上能夠?qū)W到自己沒(méi)有的知識(shí),每一次的挫折只能使我們更接近成功。在這次項(xiàng)目中讓我體會(huì)到了團(tuán)隊(duì)合作的重要性,團(tuán)隊(duì)合作注重溝通和信任,不能不屑于做一些小事,永遠(yuǎn)要保持親和誠(chéng)信,把專(zhuān)業(yè)理論運(yùn)用到具體實(shí)踐中,不僅加深我對(duì)理論的掌握和運(yùn)用,這是實(shí)訓(xùn)中最大的收獲。剛開(kāi)始接觸android感覺(jué)到他很有意思,在界面開(kāi)發(fā)和web也可以形成想通的架構(gòu),更加方便,視覺(jué)上也非常的酷,前期我通過(guò)大量的android sdk開(kāi)發(fā)范例和android提供的api文檔中學(xué)習(xí),通過(guò)這些例子的

42、學(xué)習(xí)我從中發(fā)現(xiàn)了很多和以前java相同的思想。在這為期三周的實(shí)訓(xùn)中讓我學(xué)到了很多課堂上學(xué)不到的知識(shí),讓我基本掌握了android應(yīng)用程序開(kāi)發(fā)的一般流程。對(duì)常用控件基本掌握使用,對(duì)其事件的監(jiān)聽(tīng)也基本掌握。學(xué)習(xí)android不僅是對(duì)前沿開(kāi)發(fā)技術(shù)的了解,也是對(duì)編程知識(shí)的一次提升。通過(guò)學(xué)習(xí)android的控件、布局、activity、service等一系列基礎(chǔ)知識(shí),對(duì)整個(gè)android的開(kāi)發(fā)有了大致的了解。通過(guò)這次的實(shí)訓(xùn),讓我學(xué)到了很多,因?yàn)槲覀兌际堑谝淮谓佑|android,所以老師先給我們講的每一個(gè)程序我們都去認(rèn)真編寫(xiě),通過(guò)這些小程序,讓我們知道了如何去創(chuàng)建一個(gè)android項(xiàng)目,了解了androi

43、d項(xiàng)目里的每一個(gè)文件夾和文件的作用。在這次項(xiàng)目中讓我體會(huì)到了團(tuán)隊(duì)合作的重要性,團(tuán)隊(duì)合作注重溝通和信任。同時(shí)還讓我知道做任何事都需端正態(tài)度,量力而行,發(fā)揮自己的長(zhǎng)處,這樣不僅有利于促進(jìn)團(tuán)隊(duì)項(xiàng)目開(kāi)發(fā)的進(jìn)度,還能讓我們知道我們自己的位置。總之在這次的實(shí)訓(xùn)中讓我學(xué)到了知識(shí),同時(shí)也讓我學(xué)到了經(jīng)驗(yàn),這讓我在以后的工作中有重大幫助。參考文獻(xiàn)1 劉敏.  移動(dòng)終端的android移植與應(yīng)用程序設(shè)計(jì)d. 西安電子科技大學(xué) 2011 2 王蕾.  哈爾濱招行android手機(jī)銀行匯率換算模塊的設(shè)計(jì)與實(shí)現(xiàn)d. 吉林大學(xué) 2011 3 施金蘭.  基于and

44、roid平臺(tái)的網(wǎng)絡(luò)共享研究與實(shí)現(xiàn)d. 華東師范大學(xué) 2011 4 趙建勛.  基于android平臺(tái)的移動(dòng)位置服務(wù)的開(kāi)發(fā)與實(shí)現(xiàn)j. 現(xiàn)代商貿(mào)工業(yè). 2010(20) 5 李林濤,朱珊虹.  基于android系統(tǒng)的手機(jī)游戲黑白棋的設(shè)計(jì)與實(shí)現(xiàn)j. 新鄉(xiāng)學(xué)院學(xué)報(bào)(自然科學(xué)版). 2011(03) 6 叢秋波.  用于android手機(jī)操作系統(tǒng)的視頻引擎j. 電子設(shè)計(jì)技術(shù). 2010(07) 7 郭國(guó)勇.  android啟動(dòng)過(guò)程優(yōu)化研究d. 蘭州大學(xué) 2012 8 擺云.  基于android開(kāi)放平

45、臺(tái)和無(wú)線通信網(wǎng)絡(luò)的實(shí)時(shí)音視頻傳輸系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)d. 蘭州大學(xué) 2012 9 劉牛.  基于android平臺(tái)的數(shù)字電視機(jī)頂盒模擬器的研究與開(kāi)發(fā)d. 蘭州大學(xué) 2012 10 王康.  android ril研究及其在無(wú)線通訊模塊上的實(shí)現(xiàn)d. 太原科技大學(xué) 2012 附錄:chessactivity.javapackage com.example.chessgame;import android.app.activity;/引入相關(guān)的包import android.media.mediaplayer;import android.os.bundle;imp

46、ort android.os.handler;import android.os.message;import android.view.window;import android.view.windowmanager;public class chessactivity extends activity boolean issound = true;/是否播放聲音mediaplayer startsound;/開(kāi)始和菜單時(shí)的音樂(lè)mediaplayer gamemusic;/游戲聲音handler myhandler = new handler()/用來(lái)更新ui線程中的控件 public vo

47、id handlemessage(message msg) if(msg.what = 1)/welcomeview或helpview或gameview傳來(lái)的消息,切換到menuview initmenuview();/初始化并切換到菜單界面 else if(msg.what = 2)/menuview傳來(lái)的消息,切換到gameview initgameview();/初始化并切換到游戲界面 else if(msg.what = 3)/menuview傳來(lái)的消息,切換到helpview inithelpview();/初始化并切換到幫助界面 ; public void oncreate(bun

48、dle savedinstancestate) /重寫(xiě)的oncreate super.oncreate(savedinstancestate);/全屏requestwindowfeature(window.feature_no_title);getwindow().setflags(windowmanager.layoutparams.flag_fullscreen , windowmanager.layoutparams.flag_fullscreen);startsound = mediaplayer.create(this, r.raw.startsound);/加載歡迎聲音starts

49、ound.setlooping(true);/設(shè)置游戲聲音循環(huán)播放 gamemusic = mediaplayer.create(this, r.raw.gamemusic);/游戲過(guò)程的背景聲音gamemusic.setlooping(true);/設(shè)置游戲聲音循環(huán)播放 this.initwelcomeview();/初始化歡迎界面 public void initwelcomeview()/初始化歡迎界面 this.setcontentview(new welcomeview(this,this);/切換到歡迎界面 if(issound)/需要播放聲音時(shí) startsound.start();/播放聲音 public void initgameview()/初始化游戲界面 this.setcontentview(new gameview(this,this); /切換到游戲界面 public void initmenuview()/初始化菜單界面 if(startsound != null)/停止 startsound.stop();/停止播放聲音 startsound = null; if(this.issound)/是否播放聲音 gamemusic.start();/播放聲音 this.setcontentview(new menuview(this,this

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論