




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、XX大學(xué)2014屆本科畢業(yè)設(shè)計(jì)(論文)XX大學(xué) 畢業(yè)設(shè)計(jì)(論文)院 系: 信息工程學(xué)院 專 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù) 班 級(jí): XXXX 學(xué)生姓名: XX 學(xué) 號(hào): XXXXXXX 導(dǎo)師姓名: XXXX 職稱: 講師 起止時(shí)間: 2014 年 3月 1 日至 2014年 5月31日27XX大學(xué)本科畢業(yè)設(shè)計(jì)(論文)創(chuàng)作誠(chéng)信承諾書(shū)1.本人鄭重承諾:所提交的畢業(yè)設(shè)計(jì)(論文),題目 是本人在指導(dǎo)教師指導(dǎo)下獨(dú)立完成的,沒(méi)有弄虛作假,沒(méi)有抄襲、剽竊別人的內(nèi)容; 2.畢業(yè)設(shè)計(jì)(論文)所使用的相關(guān)資料、數(shù)據(jù)、觀點(diǎn)等均真實(shí)可靠,文中所有引用的他人觀點(diǎn)、材料、數(shù)據(jù)、圖表均已標(biāo)注說(shuō)明來(lái)源; 3. 畢業(yè)設(shè)計(jì)(論文)中無(wú)
2、抄襲、剽竊或不正當(dāng)引用他人學(xué)術(shù)觀點(diǎn)、思想和學(xué)術(shù)成果,偽造、篡改數(shù)據(jù)的情況; 4.本人已被告知并清楚:學(xué)校對(duì)畢業(yè)設(shè)計(jì)(論文)中的抄襲、剽竊、弄虛作假等違反學(xué)術(shù)規(guī)范的行為將嚴(yán)肅處理,并可能導(dǎo)致畢業(yè)設(shè)計(jì)(論文)成績(jī)不合格,無(wú)法正常畢業(yè)、取消學(xué)士學(xué)位資格或注銷并追回已發(fā)放的畢業(yè)證書(shū)、學(xué)士學(xué)位證書(shū)等嚴(yán)重后果; 5.若在省教育廳、學(xué)校組織的畢業(yè)設(shè)計(jì)(論文)檢查、評(píng)比中,被發(fā)現(xiàn)有抄襲、剽竊、弄虛作假等違反學(xué)術(shù)規(guī)范的行為,本人愿意接受學(xué)校按有關(guān)規(guī)定給予的處理,并承擔(dān)相應(yīng)責(zé)任。 學(xué)生(簽名): 日期: 年 月 日目 錄1.前言11.1課題背景、目的與意義11.2 國(guó)內(nèi)外的發(fā)展現(xiàn)狀21.3 論文的主要內(nèi)容以及章節(jié)
3、結(jié)構(gòu)22.Android平臺(tái)開(kāi)發(fā)概述32.1 Android系統(tǒng)概述32.2 Android系統(tǒng)架構(gòu)32.3 Android應(yīng)用程序組件43.系統(tǒng)需求分析73.1 需求分析概述73.2功能模塊要求分析83.3運(yùn)行環(huán)境要求分析94、總體設(shè)計(jì)94.1系統(tǒng)設(shè)計(jì)94.2游戲模塊設(shè)計(jì)114.3類功能的描述124.4數(shù)獨(dú)游戲所需的開(kāi)發(fā)模式134.5游戲體系框架設(shè)計(jì)135、系統(tǒng)實(shí)現(xiàn)145.1數(shù)獨(dú)游戲流程框架145.2數(shù)獨(dú)算法的實(shí)現(xiàn)145.3游戲初始化界面模塊165.4 游戲菜單模塊206、系統(tǒng)運(yùn)行與調(diào)試226.1游戲測(cè)試概述226.2測(cè)試環(huán)境237、總結(jié)與期望26參考文獻(xiàn):27致 謝28基于安卓系統(tǒng)的游戲開(kāi)
4、發(fā)與實(shí)現(xiàn)學(xué)生:XX(指導(dǎo)老師:XXX)(XX大學(xué)信息工程學(xué)院)摘要:當(dāng)今世界,人類越來(lái)越離不開(kāi)智能手機(jī)所提供的方便與快捷,它改變了人類傳統(tǒng)單一的紙張化通信模式,單一的音頻通話模式以及枯燥的娛樂(lè)活動(dòng)。在Android系統(tǒng)誕生之前,智能手機(jī),這個(gè)新鮮事物已經(jīng)大大豐富了人們的業(yè)余生活,并得到了廣大手機(jī)用戶的青睞和認(rèn)同。因此,各大手機(jī)廠商瞄準(zhǔn)當(dāng)下機(jī)遇,和巨大市場(chǎng)潛能,紛紛研發(fā)了各種智能手機(jī)操作系統(tǒng),目的就是在于搶占這個(gè)市場(chǎng)的制高點(diǎn)。Android系統(tǒng)因此就是在這個(gè)風(fēng)云際會(huì)的歷史背景舞臺(tái)下誕生的。當(dāng)今手機(jī)行業(yè)蓬勃發(fā)展的快速發(fā)展,日益流行的Android系統(tǒng)使得越來(lái)越多的手機(jī)用戶開(kāi)始轉(zhuǎn)向Android系統(tǒng)
5、,如地圖、音樂(lè)、新聞等推出的Android應(yīng)用程序的出現(xiàn)成為安卓開(kāi)發(fā)軟件市場(chǎng)的新型客源;開(kāi)發(fā)者可以根據(jù)不同階層不同年齡需求制定出個(gè)性化的手機(jī)應(yīng)用游戲,因此深受年輕用戶追捧,豐富青少年業(yè)余生活。由此可以看出,Android的游戲的發(fā)展前景是光明的。關(guān)鍵詞:安卓 手機(jī)軟件 游戲Based on the platform Android game development and designStudent: XX(Faculty Adviser:XXX)Abstract:Todays world, more and more inseparable from human convenience an
6、d fast smartphones offer, it has changed the traditional single sheet of human communication mode , single mode and audio calls boring entertainment. Before the birth of the Android system , smart phones, this new thing has been greatly enriched peoples leisure life , Therefore, the major mobile pho
7、ne manufacturers targeting current opportunities and huge market potential , have developed a variety of smart phone operating system .The rapid development of todays booming mobile phone industry , the increasingly popular Android system makes more and more mobile phone users turning to the Android
8、 system , where there maps, music, news and other Android applications launched Android software development market has become a new source ; developers can develop according to the different needs of different age classes of personalized mobile application game, so sought after by young users . It
9、can be seen that it will development prospects are bright.Key words: Android mobile software games1.前言1.1課題背景、目的與意義基于Linux的開(kāi)源和自由的操作系統(tǒng)Android,它的主要作用是應(yīng)用于移動(dòng)設(shè)備,比如智能手機(jī)以及智能平板電腦,此系統(tǒng)由谷歌公司和開(kāi)放手機(jī)聯(lián)盟公司主導(dǎo)和開(kāi)發(fā)。在此之前,此款系統(tǒng)尚未有一個(gè)統(tǒng)一的中文稱呼,而在中國(guó)大陸,“安卓”或者“安致”被越來(lái)越多的人使用和熟知并接受。Andy Rubin,最初作為手機(jī)的主要開(kāi)發(fā)支持Android操作系統(tǒng),2005年8月由谷歌收購(gòu)注資。
10、 兩年后的2007年,谷歌公司與84家硬件制造商合作,并與軟件開(kāi)發(fā)商以及電信運(yùn)營(yíng)商共同形成開(kāi)放手機(jī)聯(lián)盟,聯(lián)合開(kāi)發(fā)Android系統(tǒng)。與此同時(shí),谷歌通過(guò)以Apache開(kāi)源許可證的授權(quán)方式,并同時(shí)發(fā)布了Android源代碼。2008年10月,作為Android第一款智能手機(jī)面世,隨后,Android系統(tǒng)平臺(tái)擴(kuò)展到其他領(lǐng)域,比如電視、平板電腦、游戲機(jī)、智能化管理平臺(tái)等等。2011年第一季度,在獨(dú)霸全球手機(jī)系統(tǒng)市場(chǎng)多年之久的Symbian Android的市場(chǎng)份額撼動(dòng)其霸主地位,首次位居世界第一的市場(chǎng)份額。根據(jù)在2013年第四季度市場(chǎng)報(bào)告顯示,手機(jī)的全球市場(chǎng)份額中Android的平臺(tái)已經(jīng)達(dá)到了78.1
11、%的占有率 。在2013年9月24日這一天,谷歌開(kāi)發(fā)的Android操作系統(tǒng)迎來(lái)了五歲的生日,而如今,采用這一系統(tǒng)的全球智能設(shè)備的數(shù)量已經(jīng)達(dá)到了十億臺(tái)。數(shù)獨(dú)游戲,又稱“九宮格”游戲,最早起源地是中國(guó),它是一種中國(guó)古代的算術(shù)游戲,它通過(guò)運(yùn)用紙和筆,進(jìn)行一種邏輯演算。玩家在一個(gè)9*9的棋盤面上,根據(jù)現(xiàn)有已知的數(shù)字,推理出剩下的所有空格處得數(shù)字,使得每一行,每一列以及每一個(gè)3*3的小盤面上的數(shù)字均只能含有1-9中所有數(shù)字中的一個(gè),而且在這這3*3小盤面中不能出現(xiàn)這九個(gè)數(shù)字的二次重復(fù)使用,所以答案是唯一的。由于這種游戲操作簡(jiǎn)單,而且可玩性極高,能鍛煉人們的思維能力,有助于挖掘大腦潛能,因此而風(fēng)靡全球。
12、如今,手機(jī)行業(yè)在21世紀(jì)蓬勃發(fā)展迅速,隨著日益流行的Android系統(tǒng)的出現(xiàn),越來(lái)越多的手機(jī)用戶開(kāi)始轉(zhuǎn)向Android系統(tǒng),它是基于開(kāi)源的Linux為基礎(chǔ)的操作系統(tǒng),其特有的個(gè)性化,實(shí)用性和良好的擴(kuò)展性,受到外界行業(yè)的較高評(píng)價(jià)和追捧支持。而數(shù)獨(dú)游戲,由于其操作簡(jiǎn)單,無(wú)需特定語(yǔ)言的基礎(chǔ),同時(shí)也起到了人類大腦思維發(fā)展中的作用,正因如此,數(shù)獨(dú)如此迅速風(fēng)靡全球。在Android平臺(tái)上運(yùn)行的游戲深受大家的追捧。現(xiàn)如今,基于Android平臺(tái)上的的游戲不僅可以運(yùn)行在智能手機(jī)上,我們還可以將其放在平板電腦上運(yùn)行。1.2 國(guó)內(nèi)外的發(fā)展現(xiàn)狀(1) 以專業(yè)化、大規(guī)?;较虬l(fā)展隨著越來(lái)越多的平臺(tái)和日益增加的顯示芯片
13、對(duì)Android的大力支持,硬件性能將不再成為制約專業(yè)游戲的開(kāi)發(fā)的瓶頸。在越來(lái)越多的領(lǐng)域里,都有了Android的滲入,比如在PC,XBOX360,PSP等游戲平臺(tái)上占據(jù)了都將迅速滲透進(jìn)Android以及其他移動(dòng)平臺(tái),這使得游戲發(fā)展往更加專業(yè)化的發(fā)展方向前進(jìn)。(2) 以網(wǎng)絡(luò)化方向發(fā)展隨著各個(gè)平臺(tái)對(duì)WIFI網(wǎng)絡(luò)、無(wú)線通信網(wǎng)絡(luò)、藍(lán)牙網(wǎng)絡(luò)都有了良好的支持,游戲?qū)⑹且粋€(gè)更好的創(chuàng)新型和個(gè)性化的用戶體驗(yàn)。在線網(wǎng)絡(luò)游戲,多人游戲,與其他玩家聯(lián)機(jī)對(duì)戰(zhàn),將進(jìn)一步加強(qiáng)游戲的附著力水平,并且容易通過(guò)道具來(lái)控制生成的盈利模式。這將有助于網(wǎng)絡(luò)的未來(lái)進(jìn)一步升級(jí),加快發(fā)展進(jìn)程。(3) 以時(shí)間片化、休閑化方向發(fā)展移動(dòng)設(shè)備的便
14、攜性使得休閑游戲?qū)?huì)得到快速發(fā)展。移動(dòng)設(shè)備可以把分散時(shí)間的合理利用是促進(jìn)游戲可以向時(shí)間片化發(fā)展,也就是說(shuō),一個(gè)游戲可以在任何時(shí)候開(kāi)始,而結(jié)束是可以在任何時(shí)間任何地點(diǎn),以用戶的時(shí)間片來(lái)運(yùn)行分散的優(yōu)勢(shì)。即使在其他家用電子設(shè)備,休閑游戲,也可以為用戶帶來(lái)的以家庭為單位更多的樂(lè)趣。1.3 論文的主要內(nèi)容以及章節(jié)結(jié)構(gòu)整篇論文共分為六個(gè)部分,主要內(nèi)容安排如下:第一章 前言。在這一章節(jié)里,主要介紹本篇論文的課題背景、包括目的以及意義。這其中包括了課題的背景資料簡(jiǎn)介、國(guó)內(nèi)外目前的發(fā)展現(xiàn)狀和未來(lái)發(fā)展趨勢(shì)、深入系統(tǒng)地介紹了本次課題研究和編寫(xiě)的價(jià)值及意義所在。第二章 Android平臺(tái)開(kāi)發(fā)概述。這一部分是主要介紹了
15、Android手機(jī)的發(fā)展歷程,以及闡述現(xiàn)狀、這其中包括詳細(xì)介紹了Android的功能、Android系統(tǒng)和架構(gòu)的獨(dú)到之處以及Android的體系框架。第三章 系統(tǒng)需求分析,是對(duì)數(shù)獨(dú)游戲的前期規(guī)劃進(jìn)行在功能,安全性,需求各方面的詳細(xì)分析與探討,以便制作出符合用戶最好的系統(tǒng)。第四章 數(shù)獨(dú)游戲的總體設(shè)計(jì)。是對(duì)該款數(shù)獨(dú)游戲的相關(guān)模塊,相關(guān)功能的策劃以及系統(tǒng)架構(gòu)的實(shí)現(xiàn)進(jìn)行深入剖析和規(guī)劃設(shè)計(jì)。第五章 數(shù)獨(dú)游戲的詳細(xì)設(shè)計(jì)(包括程序代碼的實(shí)現(xiàn))。這一部分主要是介紹了游戲的界面的繪制、游戲菜單的編寫(xiě),鍵盤事件的建立,數(shù)獨(dú)游戲的邏輯處理以及運(yùn)行調(diào)試,檢驗(yàn),找出問(wèn)題所在,及時(shí)解決。第六章 系統(tǒng)調(diào)試與運(yùn)行,這一環(huán)節(jié),
16、是針對(duì)數(shù)獨(dú)游戲代碼實(shí)現(xiàn)后進(jìn)行后期模擬環(huán)境檢驗(yàn),在調(diào)試過(guò)程中檢驗(yàn)代碼的可靠性,安全性,是否達(dá)到預(yù)期效果以及實(shí)現(xiàn)既定要求。同時(shí)在發(fā)現(xiàn)問(wèn)題的過(guò)程中,調(diào)整思路和改變代碼,力求達(dá)到最佳運(yùn)行效果。第七章 總結(jié)和展望。對(duì)該數(shù)獨(dú)游戲的今后發(fā)展進(jìn)行改進(jìn)和優(yōu)化調(diào)整,并對(duì)整篇課題論文進(jìn)行深入總結(jié)和回顧,并對(duì)未來(lái)展望。2.Android平臺(tái)開(kāi)發(fā)概述2.1 Android系統(tǒng)概述Android是由Google谷歌公司研發(fā)的一款手機(jī)操作系統(tǒng),它是基于Linux平臺(tái)的智能手機(jī)操作系統(tǒng),谷歌的目標(biāo)是將其打造成為基于移動(dòng)互聯(lián)網(wǎng)終端的真正開(kāi)放式的移動(dòng)終端平臺(tái),不但要求可以使用移動(dòng)手機(jī)所需的各類工作軟件,同時(shí)并在專利方面保證不侵犯
17、他人的權(quán)利,以此促進(jìn)移動(dòng)互聯(lián)網(wǎng)的進(jìn)步和創(chuàng)新。谷歌公司開(kāi)發(fā)的Android,和開(kāi)放手機(jī)的聯(lián)盟合作是由包括全球30余家手機(jī)移動(dòng)應(yīng)用開(kāi)發(fā)龍頭企業(yè)在內(nèi)得以組成。谷歌公司和運(yùn)營(yíng)商不僅達(dá)成合作伙伴關(guān)系,并保持與設(shè)備制造商和開(kāi)發(fā)商長(zhǎng)期合作,目的是為了利用其優(yōu)勢(shì)互補(bǔ)從而建立成熟的移動(dòng)軟件平臺(tái),其最大特點(diǎn)是標(biāo)準(zhǔn)化,開(kāi)放性的優(yōu)勢(shì)。 Android是谷歌的未來(lái)業(yè)務(wù)戰(zhàn)略的一部分,其目的是為了能夠在任何地點(diǎn)在任何時(shí)間提供有效信息 4 。結(jié)合相關(guān)書(shū)籍以及有關(guān)文獻(xiàn)資料,我們對(duì)Android有了個(gè)初步的認(rèn)識(shí),并基本掌握了如何去搭建配置Android的有關(guān)環(huán)境和編寫(xiě)調(diào)試配置是否成功的HelloWorld的測(cè)驗(yàn)程序。同時(shí)我們需要
18、知道在基于Android平臺(tái)的一個(gè)項(xiàng)目里,要清楚明白哪些文件夾和文件包含相應(yīng)的作用。下一節(jié),我們將從另一個(gè)深層次去分析Android的整體架構(gòu):2.2 Android系統(tǒng)架構(gòu)要想了解Android系統(tǒng)構(gòu)架的主要組成部分,可以通過(guò)下面這張示意圖清楚掌握:圖1 Android系統(tǒng)架構(gòu)(來(lái)源:android sdk)可以很清楚地看到,Android的系統(tǒng)架構(gòu)分為五個(gè)部分,依次是:Linux Kernel、Android Runtime、Libraries、Application Framework、Applications。下面將詳細(xì)介紹這5個(gè)部分。2.3 Android應(yīng)用程序組件現(xiàn)在我們根據(jù)組件
19、的高低,依次來(lái)剖析各個(gè)部分。雖然SDK在這方面已經(jīng)為我們?cè)O(shè)想到面面俱到,但是我們還是需要通過(guò)自己的深入研究,通過(guò)自己的見(jiàn)解,沿著自底向上分析各層架構(gòu),才有助于我們進(jìn)一步了解Android。2.3.1、Linux Kernel(Linux內(nèi)核)Android基于Linux 2.6提供核心系統(tǒng)服務(wù),包括:內(nèi)存管理、安全、網(wǎng)絡(luò)堆棧、進(jìn)程管理和驅(qū)動(dòng)模型。Linux Kernel同樣可以作為抽象層放置在硬件和軟件之間,它通過(guò)隱藏相關(guān)具體硬件細(xì)節(jié),與此同時(shí),它也能為上層提供相應(yīng)的統(tǒng)一服務(wù)。Android系統(tǒng)平臺(tái)是建立在Linux內(nèi)核之上,在人們狹義觀念里,Android系統(tǒng)指的就是Linux內(nèi)核及以上的各
20、層,但是從運(yùn)行這個(gè)角度來(lái)剖析,Android系統(tǒng)是對(duì)Linux的完全依賴,如果沒(méi)有Linux的支撐,Android也就無(wú)法生存下去。Android基于Linux的最大價(jià)值是在于它強(qiáng)大的可移植性,Linux可以在任何系統(tǒng)中運(yùn)行,就是因?yàn)槠淇梢赃\(yùn)行在各式各樣的系統(tǒng)芯片構(gòu)架和硬件中,與此同時(shí),依附于它的Android系統(tǒng),也得以遺傳了它強(qiáng)大的可移植性的重要特性。對(duì)于計(jì)算機(jī)專業(yè)的同學(xué)來(lái)說(shuō),學(xué)過(guò)計(jì)算機(jī)網(wǎng)絡(luò)這門專業(yè)課之后,我們都會(huì)對(duì)OSI/RM有所了解,大概了解分層的意義在于:它能使得下層提供服務(wù)而為上層提供服務(wù)的同時(shí),它也能為上層提供統(tǒng)一的服務(wù),與此同時(shí),屏蔽本層和下層的相關(guān)差異,若本層及以下層發(fā)生了相
21、應(yīng)變化,卻不會(huì)將影響波及到上層。好比Linux是一座橋梁,它讓行走在上面的Android得以實(shí)現(xiàn)與各級(jí)底層硬件連接起來(lái),使得它們無(wú)需直接耦合,正因如此,降低了移植的復(fù)雜性和高難度。,各層都能提供固定的SAP(Service Access Point),用專業(yè)話來(lái)說(shuō)可以是各層各司其職,從而達(dá)到高內(nèi)聚、低耦合。當(dāng)然本次畢業(yè)設(shè)計(jì)只是做簡(jiǎn)單的關(guān)于數(shù)獨(dú)游戲的應(yīng)用開(kāi)發(fā),所以對(duì)于Linux Kernel層,我們就不需要進(jìn)行深入研究。2.3.2、Android Runtime(運(yùn)行時(shí))Android系統(tǒng)中的運(yùn)行時(shí)(Runtime),目的就是為了實(shí)現(xiàn)Java在運(yùn)行階段的二次編譯提供支持。Android有一個(gè)集合
22、,是關(guān)于核心庫(kù)。它能為Java編程語(yǔ)言核心類庫(kù)提供相關(guān)的可用性較高的功能。Java的虛擬機(jī)Dalvik和Java的核心類庫(kù)共同構(gòu)成了Android 的運(yùn)行時(shí)?;贏ndroid系統(tǒng)的每一個(gè)應(yīng)用程序,在自己的進(jìn)程中都是根據(jù)Dalvik虛擬機(jī)實(shí)例得以運(yùn)行。Dalvik虛擬機(jī)設(shè)計(jì)成:多個(gè)虛擬機(jī)可以在一個(gè)設(shè)備中有效地運(yùn)行。 Dalvik虛擬機(jī)可以執(zhí)行的文件格式是。Dex格式。是一種壓縮格式,專為Dalvik的設(shè)計(jì),非常適合這類高速系統(tǒng)具有有限內(nèi)存和處理器。 JVM是基于堆棧是一個(gè)眾多虛擬機(jī)中的一個(gè),而Dalvik的虛擬機(jī)是基于在寄存器的車道上。事實(shí)上,這兩種架構(gòu)各有優(yōu)缺點(diǎn),相對(duì)一般,將需要更多的指令基
23、于棧的機(jī)器,但機(jī)器基于寄存器的指令是更大的。 dx是一套Java工具。將java.class轉(zhuǎn)換成 DEX格式。因?yàn)樗饕袝r(shí)是必要的,以便優(yōu)化處理,會(huì)使文件的大小將會(huì)增加至1-4倍,而且會(huì)以O(shè)DEX結(jié)尾。2.3.3、Libraries(核心類庫(kù))對(duì)于C/C+庫(kù)的集合,這些是包含在Android里它能為Android系統(tǒng)中的各個(gè)組件提供幫助并可以使用。Android應(yīng)用程序框架(application framework)將這些功能曝光于開(kāi)發(fā)人員,是他們得以了解。下面列出一些核心庫(kù): 系統(tǒng)C庫(kù)這是繼承了標(biāo)準(zhǔn)C系統(tǒng)庫(kù)(libc)的BSD衍生。是作為基于嵌入式Linux系統(tǒng)設(shè)備而制定的庫(kù) 媒體庫(kù)基于
24、PacketVideo的OpenCORE。該庫(kù)可以支持目前當(dāng)今時(shí)下常用的許多音頻、視頻格式的播放和錄制,同時(shí)也支持包括了靜態(tài)圖像文件,例如:AMR、PG、MPEG4、MP3、AAC、J PNG、H.264 界面管理管理訪問(wèn)不同應(yīng)用包括了2D和3D圖形層的界面訪問(wèn) LibWebCore這是一種Web瀏覽器引擎的新型模式,它可以來(lái)對(duì)Android 瀏覽器進(jìn)行驅(qū)動(dòng),同時(shí)可以調(diào)用內(nèi)嵌的web視圖。 SGL是一種基本的可隱藏于2D相關(guān)圖形引擎 3D庫(kù)這個(gè)是基于OpenGL ES 1.0 APIs,目的是在于對(duì)該庫(kù)中的硬件3D進(jìn)行優(yōu)化加速,這其中高度化的3D軟件光柵加速也包含在內(nèi)。 FreeType位圖和
25、矢量字體的渲染繪制 SQLite是一個(gè)強(qiáng)大,輕量級(jí)的并且適用于所有應(yīng)用程序的關(guān)系數(shù)據(jù)庫(kù)引擎2.3.4、Application Framework(框架層)在Android系統(tǒng)平臺(tái)中,最重要的核心部分非框架層莫屬,Android系統(tǒng)的設(shè)計(jì)思想也涵蓋其中,在此之前,很多平臺(tái)的打造都是基于Linux內(nèi)核而建立的。但是Android做到了超越以往任何一款移動(dòng)平臺(tái)并因此堪稱成功典范。由多個(gè)系通服務(wù)(System Service)共同所組成的框架層,這其中涵蓋了組件管理服務(wù)、通話管理服務(wù)、服務(wù)電源管理服務(wù)、窗口信息服務(wù)、地理信息等相關(guān)服務(wù)。通過(guò)系統(tǒng)核心進(jìn)程(System Core Process)將這些服
26、務(wù)都是寄宿在其中。當(dāng)程序運(yùn)行時(shí),每一個(gè)服務(wù)都會(huì)占據(jù)一個(gè)獨(dú)立線程,發(fā)送消息以及傳輸數(shù)據(jù)是通過(guò)進(jìn)程相互間的通信機(jī)制(Inter-Process Communication,IPC)這個(gè)橋梁渠道而得以實(shí)現(xiàn)。1開(kāi)發(fā)人員將核心應(yīng)用程序的框架的使用,是基于應(yīng)用程序的體系結(jié)構(gòu)的簡(jiǎn)化性,可以避免不必要的重復(fù)累贅。通過(guò)任何相關(guān)的應(yīng)用程序都能發(fā)布它的相關(guān)功能,同時(shí)可以在其他任何應(yīng)用程序使用這些功能(但是需要服從框架執(zhí)行的相關(guān)安全限制)。所有的相關(guān)應(yīng)用程序其實(shí)是一組服務(wù)以及系統(tǒng),這其中包括: 視圖(View)這是一種擴(kuò)展性的視圖集合,具有良好的豐富性。對(duì)于構(gòu)建應(yīng)用程序來(lái)說(shuō),必不可少。列表、文本框、網(wǎng)格、按鈕都包含在
27、其中,同時(shí)還包括了內(nèi)嵌的網(wǎng)頁(yè)瀏覽器 內(nèi)容的提供者(Content Providers)通過(guò)應(yīng)用程序訪問(wèn)其他相關(guān)應(yīng)用程序(比如備忘錄)中的相關(guān)數(shù)據(jù),同時(shí)也能進(jìn)行數(shù)據(jù)共享。 資源管理器(Resource Manager)這其中包含了可以訪問(wèn)非代碼的資源,比如本地化字符串以及布局文件或者是圖形。 通知管理器(NotificationManager)這個(gè)管理器,可以在狀態(tài)欄上以自定義式警告的模式對(duì)所有應(yīng)用程序進(jìn)行通知功能的自定義顯示。 活動(dòng)管理器(ActivityManager)這是用來(lái)對(duì)應(yīng)用程序的生命周期進(jìn)行有效管理和控制。2.3.5、Applications(應(yīng)用層)基于java語(yǔ)言來(lái)開(kāi)發(fā)的And
28、roid的眾多應(yīng)用程序中,對(duì)于游戲,對(duì)大規(guī)模的運(yùn)算分析和圖像處理的需要是必不可少,正因如此,開(kāi)源C/C+類庫(kù)因此發(fā)揮其強(qiáng)大的作用。通過(guò)java語(yǔ)言編寫(xiě)的程序代碼,或許會(huì)出現(xiàn)一些執(zhí)行效率過(guò)低或者是移植成本過(guò)高的問(wèn)題。所以,開(kāi)發(fā)人員會(huì)根據(jù)C/C+來(lái)作為實(shí)現(xiàn)底層模塊的基礎(chǔ),同時(shí)利用Android提供的交叉編譯工具生成的類庫(kù)將Java Native Interface(JNI)接口與上層Java實(shí)現(xiàn)進(jìn)行交互的方式以此添加到應(yīng)用中去。與此同時(shí),開(kāi)發(fā)人員將框架層進(jìn)行規(guī)避,直接調(diào)用Android系統(tǒng)中的特定類庫(kù),由C/C+的一些接口構(gòu)成的NDK,開(kāi)發(fā)人員可以用它來(lái)實(shí)現(xiàn)更高效率的特定調(diào)用功能的系統(tǒng)。13.系統(tǒng)
29、需求分析3.1 需求分析概述軟件開(kāi)發(fā)完成的進(jìn)度好壞以及該怎么去評(píng)判,這就是需求分析的重要關(guān)鍵之所在。現(xiàn)實(shí)情況卻大相徑庭,由于有些用戶不了解計(jì)算機(jī)的相關(guān)專業(yè)知識(shí),同時(shí)開(kāi)發(fā)人員對(duì)部分相關(guān)業(yè)務(wù)的不了解,不精通,以及受到固定思維的影響,用戶和開(kāi)發(fā)人員往往對(duì)某一個(gè)相同問(wèn)題有著不同的理解,這會(huì)對(duì)系統(tǒng)的相關(guān)功能的實(shí)現(xiàn)造成很大困擾。因此,開(kāi)發(fā)者和需求用戶之間應(yīng)搭建溝通橋梁,建立有效的溝通渠道,最好將開(kāi)發(fā)者置身于相關(guān)業(yè)務(wù)領(lǐng)域,了解客戶真正需求,才能確保開(kāi)發(fā)出的產(chǎn)品達(dá)到客戶最佳預(yù)期效果和實(shí)際需要。3.1.1功能需求分析此次數(shù)獨(dú)游戲程序設(shè)計(jì)一款小游戲,是基于Android平臺(tái)之下設(shè)計(jì)并與之實(shí)現(xiàn)的,最后將在Andro
30、id模擬器中其進(jìn)行調(diào)試運(yùn)行。該游戲簡(jiǎn)單容易上手而且活躍性強(qiáng),具有較強(qiáng)的益智性,可以鍛煉人們的記憶能力,以及腦力開(kāi)發(fā),提高人類的數(shù)學(xué)思維能力和強(qiáng)大的運(yùn)算能力,同時(shí)也有一定的娛樂(lè)性,讓人愉悅身心的同時(shí),通過(guò)益智游戲從而提高大腦的啟發(fā)和鍛煉。尤其對(duì)青少年思維,腦力,意志都有很好的鍛煉,起到事半功倍的作用。使得智能手機(jī)與游戲軟件對(duì)青少年未來(lái)教育有指南針?biāo)频膸椭椭笇?dǎo)性作用。針對(duì)Android手機(jī),此款數(shù)獨(dú)游戲在設(shè)計(jì)上具有以下幾種功能:1、重來(lái)功能設(shè)置重來(lái)功能目的在于實(shí)現(xiàn)用戶輸入錯(cuò)誤答案,并且因?yàn)橐馔獠铄e(cuò)無(wú)法解開(kāi)此題而想要重新開(kāi)始本題目。2、下一關(guān)功能設(shè)置下一關(guān)功能目的在于是實(shí)現(xiàn)用戶完成一關(guān)游戲后可以進(jìn)
31、入下一關(guān)游戲界面。3、解題功能設(shè)置解題功能主要實(shí)現(xiàn)用戶解答不出此題時(shí)候系統(tǒng)提示答案。4、重出題功能設(shè)置重出題功能主要實(shí)現(xiàn)用戶因?yàn)楦鞣矫嬖虿幌虢獯鸨绢}或者實(shí)在解不開(kāi)此題,想要切換到另一題目。5、難易程度選擇功能設(shè)置難易程度選擇功能目的在于實(shí)現(xiàn)用戶根據(jù)自己的實(shí)際水平來(lái)選擇適合自己難度的題目,便于提高用戶的興趣和積極性。這其中分為:簡(jiǎn)單,中等,困難三個(gè)難度。6、退出功能設(shè)置退出功能目的在于實(shí)現(xiàn)可以退出游戲界面,返回模擬器初始界面。3.1.2安全性需求分析由于此款游戲不涉及用戶個(gè)人隱私以及任何注冊(cè)要求,打開(kāi)軟件即可操作使用,不會(huì)涉及用戶隱私泄漏等問(wèn)題。用戶主要是年輕的手機(jī)用戶群,玩家只需要在操作手機(jī)
32、界面進(jìn)行點(diǎn)擊安裝運(yùn)行就能夠進(jìn)行游戲的操作,能熟練上手,通俗易懂。不涉及任何暴力情節(jié),或者不良信息,對(duì)玩家沒(méi)有任何主觀性的安全問(wèn)題。數(shù)獨(dú)游戲3.2功能模塊要求分析退出模塊關(guān)于模塊幫助模塊游戲菜單模塊游戲主模塊圖2數(shù)獨(dú)游戲功能模塊根據(jù)對(duì)數(shù)獨(dú)游戲功能的分析和歸納,可以大體分為游戲主模塊,游戲菜單模塊,幫助模塊,關(guān)于模塊。退出模塊。后面將會(huì)逐一介紹這幾個(gè)模塊的特點(diǎn)與功能。3.3運(yùn)行環(huán)境要求分析(1) 硬件資源要求裝載了Android系統(tǒng)的智能手機(jī)。(2) 軟件資源要求本機(jī)操作系統(tǒng): Windows XP。需要安裝的相關(guān)安裝包和環(huán)境配置版本:jAndroid sdkkJDK:jdk-7u51-windo
33、ws-i586。leclipse-java-kepler-SR1-win32.zip4、總體設(shè)計(jì)4.1系統(tǒng)設(shè)計(jì)數(shù)獨(dú)是通過(guò)運(yùn)用外界工具紙、筆進(jìn)行演算推理,是一種簡(jiǎn)單邏輯數(shù)字推理游戲。參與的玩家只需要根據(jù)99盤面上的已知數(shù)字,推理出所有剩余空缺空格的數(shù)字,使得其最后結(jié)果滿足每一行、每一列和每一個(gè)粗線宮內(nèi)的數(shù)字均含一到九,而且不能重復(fù)。4.1.1游戲的功能簡(jiǎn)介“九宮格”是數(shù)獨(dú)游戲的前身,它起源于中國(guó),發(fā)源于中國(guó),而現(xiàn)如今的數(shù)獨(dú)游戲面盤是個(gè)9*9的九個(gè)小格子。在運(yùn)行游戲時(shí)候,系統(tǒng)會(huì)隨機(jī)產(chǎn)生一個(gè)新的棋局,這總共81個(gè)格子中,會(huì)有一部分的格子中給明了相應(yīng)的數(shù)字,并以此為條件,進(jìn)行相應(yīng)空白處格子的填寫(xiě)。這其
34、中就是需要運(yùn)用到邏輯運(yùn)算推理。然后玩家需根據(jù)已知條件和規(guī)則要在空白空格處填入1到9的數(shù)字。并且不得重復(fù)出現(xiàn),只有在滿足上述游戲約束條件之后才能視為通過(guò)此局游戲。通過(guò)上述分析即可如下所示闡明運(yùn)行步驟:1、 啟動(dòng)游戲后,一開(kāi)始便是進(jìn)入第一關(guān)卡的游戲。2、當(dāng)玩家點(diǎn)擊“Menu”,即可進(jìn)入菜單界面,如圖所示:圖12“Menu”按鈕3、當(dāng)游戲玩家選擇“解題”按鈕的時(shí)候,系統(tǒng)會(huì)彈出提示框,提示游戲玩家是否真的要集體,再隨后根據(jù)玩家的確認(rèn)選擇進(jìn)行下一步操作,也就是公布正確答案。4、當(dāng)游戲玩家將游戲界面上的空白格子全部填寫(xiě)完畢的時(shí)候,數(shù)獨(dú)系統(tǒng)會(huì)自動(dòng)檢驗(yàn)判斷所填寫(xiě)的數(shù)字是否滿足數(shù)獨(dú)游戲不重復(fù)的要求,當(dāng)有錯(cuò)誤的時(shí)
35、候,游戲界面始終會(huì)停止在這一關(guān)卡;只有當(dāng)空白處得數(shù)字全部填寫(xiě)正確的時(shí)候,才會(huì)在游戲界面最頂端提示“通過(guò)了”進(jìn)入下一關(guān)卡。如圖所示:圖13 第一關(guān)通過(guò)的提示界面5、當(dāng)游戲玩家無(wú)法解出此關(guān)卡的數(shù)度游戲時(shí)候,選擇“下一關(guān)”,就會(huì)進(jìn)入下一關(guān)的游戲。 6、游戲玩家選擇“重出題”,會(huì)將數(shù)度游戲的空白處自動(dòng)打亂,重新出題目。 7、在菜單界面中單擊“退出”即可退出數(shù)獨(dú)游戲界面。4.1.2系統(tǒng)模塊的劃分三大部分模塊的劃分,是根據(jù)之前的需求分析的要求采用模塊化程序設(shè)計(jì)而得出:用戶的功能模塊新游戲游戲保存和讀取退出圖14用戶功能模塊UI游戲菜單棋盤界面其他UI圖15 UI界面數(shù)據(jù)處理的模塊填充數(shù)字的驗(yàn)證游戲運(yùn)算邏輯
36、鍵盤數(shù)字的生成圖16系統(tǒng)模塊劃分如圖所示,實(shí)線連接的是用戶可見(jiàn)的模塊,這些模塊是用戶能通過(guò)鼠標(biāo)就可以操作的基本模塊。而UI模塊,主要是為了呈現(xiàn)給用戶的界面。虛線連接的是用戶不可見(jiàn)的模塊,也可以稱為數(shù)據(jù)處理模塊(內(nèi)部實(shí)現(xiàn)的模塊)。4.1.3模塊內(nèi)部關(guān)系的說(shuō)明每一個(gè)模塊的內(nèi)部之間的關(guān)系都是靠?jī)?nèi)部的數(shù)據(jù)來(lái)實(shí)現(xiàn)互通連接的,下面的流程圖以此來(lái)介紹每個(gè)模塊之間的聯(lián)系。用戶按鍵事件經(jīng)過(guò)修改內(nèi)部數(shù)據(jù)數(shù)據(jù)AI繪圖數(shù)據(jù)的綁定觸發(fā)圖17模塊之間的聯(lián)系在游戲的內(nèi)核中,包括了所有游戲的有關(guān)信息,全部類成員的相關(guān)數(shù)據(jù),而它的各個(gè)模塊,是類的方法函數(shù)用于相應(yīng)的按鍵事件。繪圖功能(UI):是為了給游戲玩家呈現(xiàn)出9*9的棋盤界
37、面,顯示出游戲的相關(guān)信息以及游戲菜單等,這些都需要XMAL來(lái)實(shí)現(xiàn)。只有游戲玩家點(diǎn)擊按鍵時(shí)候,才會(huì)觸發(fā)UI的繪圖功能,與此同時(shí),后臺(tái)的編程代碼會(huì)處理相應(yīng)的按鍵事件。AI功能的實(shí)現(xiàn):主要負(fù)責(zé)游戲內(nèi)部的數(shù)據(jù)處理,是數(shù)獨(dú)游戲的核心,幾乎所有模塊功能都與此有著密不可分的聯(lián)系,這其中還包括了數(shù)獨(dú)填充以及數(shù)獨(dú)邏輯,數(shù)獨(dú)驗(yàn)證等。其實(shí),AI模塊是由很多松散的方法組成,各個(gè)函數(shù)實(shí)現(xiàn)了單一的功能,便于修改以及程序移植。4.2游戲模游戲主要界面重來(lái)下一題重新出題解題難易程度退出塊設(shè)計(jì)圖18游戲主要模塊4.2.1游戲初始化模塊這是游戲的初始化狀態(tài),需要達(dá)到的效果是簡(jiǎn)潔干凈大方,能吸引玩家興趣,同時(shí),操作界面清楚,容易讓
38、人上手,簡(jiǎn)潔明了。所以該數(shù)獨(dú)游戲在打開(kāi)同時(shí),直接進(jìn)入游戲第一關(guān)卡,去除一些不必要的開(kāi)機(jī)動(dòng)畫(huà)。4.2.2游戲進(jìn)程模塊這個(gè)游戲模塊可以根據(jù)不同經(jīng)驗(yàn)和能力的玩家制定出難易程度相對(duì)不同的游戲級(jí)別和玩法,這樣能迎合各級(jí)玩家的游戲水準(zhǔn)和要求,使得新老玩家都能有興趣使用此游戲,并迅速上手。所以該數(shù)獨(dú)游戲設(shè)計(jì)了三個(gè)游戲難度,初級(jí),中級(jí),高級(jí)三個(gè)方向。4.2.3游戲菜單模塊此模塊設(shè)定了可以解題、本關(guān)游戲重來(lái)、重出題、下一關(guān),退出這五個(gè)按鈕,使得游戲更加有趣,讓玩家有多重選擇,不讓他們因題目難以解開(kāi)而失去興趣,相應(yīng)為玩家考慮,適當(dāng)提供解題幫助或者選擇下一關(guān)游戲。4.3類功能的描述4.3.1共有類主類MyGame:
39、此類是通過(guò)擴(kuò)展和繼承基類Activity以此來(lái)實(shí)現(xiàn)功能的,應(yīng)當(dāng)說(shuō),這是整個(gè)應(yīng)用程序的關(guān)鍵入口。同時(shí),也是主要依據(jù)收到來(lái)自Handle(Handle主要作用是接受子線程發(fā)送的數(shù)據(jù), 并因此由此數(shù)據(jù)配合主線程更新UI,比如:玩家點(diǎn)擊一個(gè) Button按鈕 ,Android平臺(tái)會(huì)分發(fā)事件到Button按鈕上,以此響應(yīng)你的上述操作。)的不同消息,來(lái)實(shí)現(xiàn)切換到不同的界面。4.3.2游戲界面的相關(guān)類(1)視圖MyView類MyView是數(shù)獨(dú)游戲中最主要的類之一,所有的游戲界面、九宮格模型都會(huì)在此類中包含。同時(shí)此類還會(huì)負(fù)責(zé)繪制數(shù)獨(dú)游戲棋盤,數(shù)獨(dú)游戲邏輯等功能。(2)菜單欄目onCreateOptionsMe
40、nu類onCreateOptionsMenu類是數(shù)獨(dú)游戲中的菜單,這其中包括了“重出題”、“重來(lái)”、“解題”、“下一關(guān)”、“難易程度”、“退出”等功能。(3)數(shù)字鍵盤onKeyDown類onKeyDown類是數(shù)獨(dú)游戲中的鍵盤事件,主要功能是記錄游戲玩家鍵盤上輸入的數(shù)字,并將其顯示在數(shù)獨(dú)游戲的棋盤上。4.4數(shù)獨(dú)游戲所需的開(kāi)發(fā)模式Activity,人機(jī)交互的界面,Activity的對(duì)象可以調(diào)用View對(duì)象從而構(gòu)建出豐富多彩的界面。游戲用戶在進(jìn)行相應(yīng)的輸入操作的時(shí)候,是在數(shù)獨(dú)游戲界面上進(jìn)行的。而與此同時(shí),在Activity的對(duì)象中,也會(huì)接收到相關(guān)數(shù)據(jù),并因此通過(guò)Internet對(duì)象中的一個(gè)叫putE
41、xtra的方法存儲(chǔ)至Internet對(duì)象里面去。然后再通過(guò)Activity開(kāi)啟一個(gè)叫Service或Activity的對(duì)象,進(jìn)而就能將Internet中的數(shù)據(jù)從當(dāng)前的Activity對(duì)象傳遞到另一組件中去,隨后進(jìn)行后臺(tái)的數(shù)據(jù)處理和運(yùn)算。若輸入的數(shù)據(jù)需要一個(gè)數(shù)據(jù)庫(kù)來(lái)存入,那么則把此數(shù)據(jù)通過(guò)Handle的對(duì)象搭起一個(gè)新的線程。在這個(gè)新的線程當(dāng)中,將該數(shù)據(jù)寫(xiě)到數(shù)據(jù)庫(kù)里。為了便于了解其開(kāi)發(fā)模式,我們將通過(guò)如下所示的流程圖而展示出來(lái):ActivitySQLiteServiceInternetHandle圖19數(shù)獨(dú)游戲所需的的開(kāi)發(fā)模式上述的流程圖對(duì)數(shù)獨(dú)游戲所需的開(kāi)發(fā)模式進(jìn)行了清晰展現(xiàn),它不僅僅可以將And
42、roid平臺(tái)上的及那些基本組件加以合理的利用,與此同時(shí),在在MVC的三層架構(gòu)中的程序代碼也能更加符合其特性和所需要求。以便有利于程序代碼的閱讀瀏覽以及未來(lái)的游戲功能的擴(kuò)充和加強(qiáng),對(duì)重用的頻繁度和概率性的有顯著的提高。4.5游戲體系框架設(shè)計(jì)公共類My Game游戲界面相關(guān)類MyViewonCreateOptionsMenuonCreateonKeyDown圖20 數(shù)獨(dú)游戲體系框架5、系統(tǒng)實(shí)現(xiàn)5.1數(shù)獨(dú)游戲流程框架圖21游戲流程框架圖5.2數(shù)獨(dú)算法的實(shí)現(xiàn)數(shù)獨(dú)游戲的關(guān)鍵在于,要迅速檢驗(yàn)用戶玩家所填寫(xiě)的數(shù)字是否正確,這一功能的流程圖如下所示:圖22 數(shù)獨(dú)檢驗(yàn)功能流程圖5.2.1算法的基本邏輯在數(shù)獨(dú)中的
43、體現(xiàn)我們將對(duì)數(shù)獨(dú)游戲算法類進(jìn)行解析,這個(gè)類基本上是數(shù)學(xué)邏輯計(jì)算,通過(guò)一定的數(shù)獨(dú)算法產(chǎn)生所需要的特定數(shù)獨(dú)數(shù)組,并為了便于供其他類方便使用而通過(guò)特定的接口來(lái)實(shí)現(xiàn)。二維數(shù)組對(duì)于此類的建立來(lái)說(shuō),是至關(guān)重要的,因?yàn)橐盟鼇?lái)表示所有數(shù)獨(dú)的矩陣。要使在矩陣中的每行,每列,每一小塊的數(shù)字都不重復(fù)。我們理清游戲的游戲要求,便可以理解出該算法的基本思路,其內(nèi)涵在于要從數(shù)字0到9中隨機(jī)任意選取,與此同時(shí),我們還要對(duì)它在這個(gè)9*9的格子中行、列、塊進(jìn)行驗(yàn)證,判斷其是否符合游戲要求。當(dāng)填寫(xiě)符合要求的時(shí)候,就可以繼續(xù)填寫(xiě)下一個(gè),如果不能滿足條件要求的時(shí)候,再次選擇一個(gè)排除剛才那個(gè)數(shù)字的隨機(jī)數(shù),然后再進(jìn)行判斷。當(dāng)所有九個(gè)數(shù)
44、字都還沒(méi)有找到能夠滿足數(shù)字的要求,則返回處理,將最后一個(gè)取出的符合條件要求的數(shù)字進(jìn)行新的重新取值,直到所有的數(shù)字全部填寫(xiě)正確。當(dāng)我們?cè)谇蠼鈹?shù)獨(dú)游戲的同時(shí),則會(huì)運(yùn)用到回溯法,所有的解會(huì)按照一定的結(jié)構(gòu)進(jìn)行排列,然后再進(jìn)行下一次搜索。一般解空間構(gòu)造成一個(gè)樹(shù)狀結(jié)構(gòu),具有深度優(yōu)先搜索的策略,通常情況下會(huì)有以下有兩種方法:1、當(dāng)如果只需要一個(gè)解的時(shí)候,找到了相關(guān)的解即可停止。2、當(dāng)要求出所有的解的時(shí)候,需要進(jìn)行“數(shù)的遍歷”,以致找到所有的解。在我們的意識(shí)里,所謂的回溯法,其實(shí)就是按照一種特定的搜索方法,進(jìn)行組織性,協(xié)調(diào)性,防止其不必要的窮舉式搜索。她的最基本方法就是回溯搜索。本方法適用于一些相當(dāng)大的組合數(shù)
45、的解決方案。在解決空間樹(shù)等問(wèn)題中,按照深度優(yōu)先搜索策略的回溯法是其最優(yōu)解決方案。首先從根節(jié)點(diǎn)開(kāi)始進(jìn)行搜索。當(dāng)?shù)竭_(dá)空間樹(shù)的任意一點(diǎn)。所以需要確定這些結(jié)點(diǎn)里是否包含了該問(wèn)題的與之相關(guān)的解決問(wèn)題的方案。如果沒(méi)有發(fā)現(xiàn)與之相對(duì)應(yīng)的符合要求的結(jié)點(diǎn),就跳過(guò)搜索該結(jié)點(diǎn)的相關(guān)子樹(shù)。并隨后逐層返回到原先的根節(jié)點(diǎn)。否則,就要對(duì)該子樹(shù)進(jìn)行深度優(yōu)先搜索。我們要搜索查找算法中基本思想,這其中的回溯法,就是關(guān)鍵:在已知的一問(wèn)題中,通過(guò)對(duì)題意已經(jīng)劃定好的所有可能的邊界解決區(qū)域(俗稱一種相對(duì)應(yīng)的可能解決),與此同時(shí),我們需要根據(jù)已知條件得到相應(yīng)的約束條件。通過(guò)在根據(jù)搜索的搜索方式時(shí),利用深度搜索中的所有可能的解決方案,使用該方
46、案的第一層找到一個(gè)可能解,這樣的搜索解決方案,會(huì)使得結(jié)果能符合所要求的約束條件。并以此作為出發(fā)點(diǎn),以便找到下一個(gè)的可能解,將搜索范圍擴(kuò)大到第二層。如果在第二層找到的話,就繼續(xù)深入到第三層。按照上述搜索方式繼續(xù)下去,直到找到所有層的全部可能解,則這個(gè)問(wèn)題的就得以完整解決。如果所有可能解在第二層都不滿足約束條件,則需要返回到第一層,放棄其原先的可能解,使用了第一層的下一個(gè)可能的解(即回溯),以此類推,尋找第二層的可能解?;厮莘ǖ膬?yōu)勢(shì)相比于其他的窮舉式的搜索方法,在于它不需要對(duì)所有層的每個(gè)可能解都進(jìn)行遍歷搜索,這樣既費(fèi)時(shí)又費(fèi)力。它的高效性在于能避重就輕,能對(duì)無(wú)法滿足條件的就拋棄該可能解,進(jìn)而對(duì)下一個(gè)
47、可能解進(jìn)行尋找,而無(wú)需其余部分的下層解。如果約束條件在當(dāng)前層次的所有可能解中都沒(méi)有能實(shí)現(xiàn)滿足的時(shí)候,則需要返回到上一層,拋棄原先的可能解,進(jìn)行重新遍歷搜索。根據(jù)上面的分析,總結(jié)出一些數(shù)獨(dú)的游戲規(guī)則推理,以便于我們分析數(shù)獨(dú)問(wèn)題相關(guān)的約束條件:1、每一個(gè)小格子里面的數(shù)值區(qū)間范圍在1-9內(nèi),不能超出這個(gè)區(qū)間;2、每一個(gè)小格子的數(shù)字在當(dāng)前所在行中不得重復(fù),也就是說(shuō)1-9內(nèi)在這一行的9個(gè)空格中只能出現(xiàn)一次;3、每一個(gè)小格子的數(shù)字在當(dāng)前所在列中不得重復(fù),也就是說(shuō)1-9內(nèi)在這一列的出現(xiàn)的次數(shù)只能是一次;4、每一個(gè)小格子的數(shù)字在每一個(gè)3*3的小宮格內(nèi)不能重復(fù)出現(xiàn),也就是說(shuō)在這小方塊中,9個(gè)數(shù)字不允許重復(fù)出現(xiàn)兩
48、次以上。綜上所述,通過(guò)約束條件進(jìn)行篩選的回溯法,在剔除掉那些不可能的解后,留下的就是該問(wèn)題的至少一個(gè)以上的解。5.3游戲初始化界面模塊5.3.1游戲界面的實(shí)現(xiàn)在建立數(shù)獨(dú)數(shù)據(jù)之前,程序需要一個(gè)9*9的數(shù)據(jù)例如:786391452531642897249578631895426713317859246624137985152964378978213564463785129 這樣的81個(gè)數(shù)字要依次從第一行開(kāi)始從左往右按順序排列在9*9的九宮格內(nèi)。我們需要設(shè)置一個(gè)二維數(shù)組int99,以便存儲(chǔ)數(shù)據(jù)。數(shù)據(jù)隨機(jī)變?yōu)?是根據(jù)游戲玩家的不同選擇而造成的。根據(jù)不同級(jí)別要求,因此我設(shè)計(jì)了兩個(gè)數(shù)組,oldData保存
49、原有數(shù)據(jù),而data保存當(dāng)前數(shù)據(jù),對(duì)于原有數(shù)據(jù)不能進(jìn)行修改和清除,對(duì)oldData中為0的數(shù)據(jù)可以進(jìn)行修改和清除將方法“easyData”設(shè)定為final關(guān)鍵字,目的是不允許它有子類,既不能繼承。圖23 游戲界面實(shí)現(xiàn)代碼5.3.2在onDraw方法中繪制數(shù)據(jù)onDraw(),是為重寫(xiě)繪制方法,在onDraw()方法中,主要是繪制游戲界面所需要的9*9的九宮格數(shù)組,游戲界面背景顏色,游戲所填寫(xiě)數(shù)字的顏色,以及每個(gè)小格子的背景顏色。程序?qū)崿F(xiàn)代碼片段如下所示:繪制相關(guān)界面,這其中包括棋盤背景、九宮格的水平細(xì)線以及垂直線:圖24 繪制界面的實(shí)現(xiàn)代碼繪制數(shù)據(jù):圖25繪制數(shù)據(jù)的實(shí)現(xiàn)代碼5.3.3編寫(xiě)按鍵事
50、件在onKeyDown類中,設(shè)置了KeyCode ,KeyEvent 和event三個(gè)變量,目的是通過(guò)KeyEvent.KeyCode來(lái)判斷玩家在鍵盤上輸入的數(shù)字是幾,并通過(guò)無(wú)返回值方法setData來(lái)在棋盤上顯示出相應(yīng)的數(shù)字,其中,1-9是放置鍵盤上的輸入數(shù)據(jù),而0則是代表清除數(shù)據(jù)。程序代碼片段如下:圖26鍵盤事件在setData這個(gè)方法中,原有數(shù)據(jù)為零的可以清除和放置數(shù)據(jù)。5.3.4檢測(cè)游戲填充結(jié)果根據(jù)數(shù)獨(dú)游戲的游戲規(guī)則,游戲玩家需要填充81個(gè)空格之后,必須要同時(shí)滿足每行,每一列的每個(gè)數(shù)字都不得重復(fù)出現(xiàn)兩次以上,這其中包括小九宮格內(nèi)的3*3的九個(gè)數(shù)字也必須不能相同。并將其作為后期游戲結(jié)果檢
51、測(cè)的重要條件,因此編寫(xiě)chkGameOver檢查是否完成游戲。首先是檢查數(shù)獨(dú)游戲程序是否結(jié)束:圖27 chkGameOver方法其次顯示游戲標(biāo)題,提示玩家目前關(guān)卡數(shù):圖28 setGameTitle方法行檢測(cè):首先對(duì)各行進(jìn)行檢測(cè),提供了檢測(cè)的行內(nèi)的九個(gè)數(shù)字是否有重復(fù)數(shù)據(jù)的方法“is over()”,該方法遍歷這一行中所有的九個(gè)數(shù)字,當(dāng)遍歷到某個(gè)數(shù)字時(shí),檢測(cè)該數(shù)字后面的數(shù)字是否出現(xiàn)了重復(fù)。舉個(gè)例子,例如:當(dāng)我們檢測(cè)到第4個(gè)數(shù)字是9時(shí),則檢測(cè)第5-9個(gè)數(shù)字是否出現(xiàn)過(guò)9這個(gè)數(shù)字,若是出現(xiàn)重復(fù),則會(huì)停止檢測(cè),游戲失敗,所以此功能既可以既可以避免重復(fù)檢測(cè)的浪費(fèi),同時(shí)也能避免遺漏的精確。圖29 行檢測(cè)實(shí)現(xiàn)
52、代碼列檢測(cè):列檢測(cè)的代碼類似于對(duì)行的數(shù)據(jù)檢測(cè),但是以此同時(shí)還需要對(duì)每行進(jìn)行檢測(cè),因此數(shù)獨(dú)游戲程序設(shè)計(jì)了對(duì)行數(shù)據(jù)的檢測(cè)方法isOver (),該檢測(cè)方法的代碼如下:圖30 列檢測(cè)實(shí)現(xiàn)代碼3*3小九宮格的檢測(cè)方法:通過(guò)上述剖析,我們除了要對(duì)九宮格中的行與列進(jìn)行數(shù)據(jù)重復(fù)檢測(cè)以及驗(yàn)證結(jié)果之外,我們還需要對(duì)每一個(gè)3*3的小九宮格內(nèi)的所填寫(xiě)的數(shù)字進(jìn)行重復(fù)檢測(cè)和檢驗(yàn)正確性,這是因?yàn)閿?shù)獨(dú)游戲的約束條件所致,為了避免出現(xiàn)重復(fù)現(xiàn)象而不符合數(shù)獨(dú)游戲規(guī)則。檢測(cè)的原理其實(shí)與行,列檢測(cè)相同,只是對(duì)9*9的大數(shù)組進(jìn)行細(xì)分,但是需要計(jì)算出九宮格內(nèi)數(shù)字的所在位置。變量i和j指定了檢測(cè)九宮格的位置,數(shù)獨(dú)單元格中一共有3*3個(gè)九宮
53、格,用以下程序設(shè)計(jì)完成九宮格內(nèi)對(duì)重復(fù)數(shù)字的檢測(cè):圖31檢測(cè)小九宮格代碼5.4 游戲菜單模塊5.4.1基本功能完成,添加菜單功能建立一個(gè)onCreateOptionsMenu類,這其中設(shè)置“重出題”、“重來(lái)”、“解題”、“下一關(guān)”、“難易程度”和“退出”,并使用super關(guān)鍵字來(lái)訪問(wèn)和調(diào)用onCreateOptionsMenu類的Menu成員變量。圖32 菜單功能5.4.2添加菜單事件:當(dāng)玩家點(diǎn)擊屏幕菜單上的任意一個(gè)按鈕時(shí)候,會(huì)調(diào)用該類來(lái)處理菜單事件,在“下一關(guān)”界面中實(shí)現(xiàn)起來(lái)比較簡(jiǎn)單,只是需要判斷游戲玩家是否真的是需要進(jìn)入下一關(guān)即可。當(dāng)玩家點(diǎn)擊“退出”按鈕時(shí),會(huì)向Activity發(fā)送一個(gè)Han
54、dle消息,通知控制器切換屏幕。圖33 添加菜單事件在菜單事件中,還根據(jù)不同按鈕功能設(shè)定了以下幾種私有方法:1、showAll()此方法是有關(guān)解題的方法她將使用easyData中相應(yīng)關(guān)卡的數(shù)據(jù),并將它依次顯示在棋盤上,以此來(lái)實(shí)現(xiàn)解題功能。2、msg()此方法的作用在于對(duì)話框里的有關(guān)信息將通過(guò)此方法來(lái)顯示。3、 selHard()此方法是用來(lái)調(diào)整難易程度,根據(jù)不同選擇,棋盤上的空白格子數(shù)也會(huì)隨之發(fā)生變化。4、 closeGame()此方法的目的在于達(dá)到實(shí)現(xiàn)對(duì)游戲界面的退出功能的實(shí)現(xiàn)化和作用化。圖34 菜單功能實(shí)現(xiàn)6、系統(tǒng)運(yùn)行與調(diào)試6.1游戲測(cè)試概述當(dāng)游戲軟件創(chuàng)建好之后,必須要進(jìn)行實(shí)戰(zhàn)檢驗(yàn),要對(duì)現(xiàn)
55、實(shí)中所檢驗(yàn)出的結(jié)果進(jìn)行評(píng)估,以便分析其目前狀態(tài)是否達(dá)到了預(yù)期目標(biāo)和理想設(shè)計(jì)標(biāo)準(zhǔn)。以此同時(shí),我們還需要進(jìn)行有效的調(diào)試和操作,通過(guò)不斷調(diào)整和解決所發(fā)現(xiàn)的相關(guān)問(wèn)題,解決軟件的缺陷和不足。以此提高產(chǎn)品的質(zhì)量和性能。作為軟件測(cè)試的重要組成部分,游戲測(cè)試是軟件測(cè)試的所有常用的功能,但是游戲本身具有一定的特殊性,此外,游戲主要是測(cè)試包括兩部分:對(duì)于在測(cè)試這個(gè)環(huán)節(jié),相對(duì)于整個(gè)軟件開(kāi)發(fā)過(guò)程來(lái)說(shuō),這是一個(gè)很重要的一個(gè)環(huán)節(jié),它關(guān)系到整個(gè)軟件的生命周期的預(yù)測(cè)以及存活性。在所有過(guò)程中的初始化操作就是要求程序員對(duì)每個(gè)階段的集中性檢測(cè),以此來(lái)確保相應(yīng)的各個(gè)模塊都能達(dá)到預(yù)期目標(biāo),各司其職。 (1)對(duì)游戲的性能測(cè)試當(dāng)下所流行的
56、各種游戲,都是在一定程度、上結(jié)合社會(huì)發(fā)展要求,對(duì)現(xiàn)實(shí)世界進(jìn)行一種虛擬化,角色化的模擬境況。與此同時(shí),他還會(huì)包含了一部分人類發(fā)展到一定階段所出現(xiàn)的各種特性。它也涉及了一部分人體工程學(xué)中的易操作性和娛樂(lè)性等相關(guān)特點(diǎn)由于游戲在一定的程度上是模擬現(xiàn)實(shí)世界的一種虛擬境況,所以他不僅僅包含了人類文明社會(huì)的一部分特性,與此同時(shí),還會(huì)涉及到操作簡(jiǎn)單可玩性,豐富的娛樂(lè)性等一些特點(diǎn)。因此,我將從三個(gè)部分來(lái)闡述游戲的相關(guān)測(cè)試環(huán)節(jié):對(duì)游戲情節(jié)的相關(guān)測(cè)試:這是針對(duì)游戲的主要相關(guān)故事情節(jié)的主線進(jìn)行鋪路和全方位測(cè)試,要對(duì)情節(jié)與相關(guān)游戲人物和任務(wù)環(huán)境進(jìn)行評(píng)估。對(duì)游戲世界的平衡測(cè)試:能力平衡和經(jīng)濟(jì)平衡是在游戲世界的平衡性得到了集中體現(xiàn),公平競(jìng)爭(zhēng)性是測(cè)試平衡性的目的所在和基本保證。對(duì)游戲文化的測(cè)試:人物的歷史背景塑造,以及角色搭配,游戲場(chǎng)景搭建,游戲關(guān)卡主題的相關(guān)設(shè)計(jì)都是對(duì)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二手車輛買賣合同范本
- 加盟造價(jià)公司合同范本
- 內(nèi)部房屋轉(zhuǎn)讓合同范本
- 公司贊助會(huì)議合同范本
- 公交廣告合同范本
- 農(nóng)村房屋確權(quán)合同范本
- 維修電機(jī)合同范本模板
- 企業(yè)流程咨詢合同范本
- 中介學(xué)車合同范本
- 上班帶薪化妝合同范本
- 房屋租給賣煙花的合同
- 十堰2024年湖北十堰市茅箭區(qū)教育局所屬學(xué)校招聘教師134人筆試歷年典型考題及考點(diǎn)附答案解析
- 小白兔拔蘿卜(無(wú)背景音樂(lè))
- 人音版六年級(jí)下冊(cè)音樂(lè)教案及反思
- 《陸上風(fēng)電場(chǎng)工程概算定額》NBT 31010-2019
- 展會(huì)展中營(yíng)銷方案
- 四年級(jí)上冊(cè)豎式計(jì)算100題及答案
- 2024屆遼寧省沈陽(yáng)市名校中考四?;瘜W(xué)試題含答案解析
- 2024年新高考改革方案政策
- 2024年4月自考00431教學(xué)設(shè)計(jì)試題
- 2024年許昌職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)及答案解析
評(píng)論
0/150
提交評(píng)論