版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
基于Android的五子棋游戲設(shè)計(jì)與實(shí)現(xiàn)
畢業(yè)設(shè)計(jì)(論文)原創(chuàng)性聲明和使用授權(quán)說明原創(chuàng)性聲明本人鄭重承諾:所呈交的畢業(yè)設(shè)計(jì)(論文),是我個人在指導(dǎo)教師的指導(dǎo)下進(jìn)行的研究工作及取得的成果。盡我所知,除文中特別加以標(biāo)注和致謝的地方外,不包含其他人或組織已經(jīng)發(fā)表或公布過的研究成果,也不包含我為獲得及其它教育機(jī)構(gòu)的學(xué)位或?qū)W歷而使用過的材料。對本研究提供過幫助和做出過貢獻(xiàn)的個人或集體,均已在文中作了明確的說明并表示了謝意。作者簽名:日期:指導(dǎo)教師簽名:日期:使用授權(quán)說明本人完全了解大學(xué)關(guān)于收集、保存、使用畢業(yè)設(shè)計(jì)(論文)的規(guī)定,即:按照學(xué)校要求提交畢業(yè)設(shè)計(jì)(論文)的印刷本和電子版本;學(xué)校有權(quán)保存畢業(yè)設(shè)計(jì)(論文)的印刷本和電子版,并提供目錄檢索與閱覽服務(wù);學(xué)??梢圆捎糜坝?、縮印、數(shù)字化或其它復(fù)制手段保存論文;在不以贏利為目的前提下,學(xué)??梢怨颊撐牡牟糠只蛉績?nèi)容。作者簽名:日期:
學(xué)位論文原創(chuàng)性聲明本人鄭重聲明:所呈交的論文是本人在導(dǎo)師的指導(dǎo)下獨(dú)立進(jìn)行研究所取得的研究成果。除了文中特別加以標(biāo)注引用的內(nèi)容外,本論文不包含任何其他個人或集體已經(jīng)發(fā)表或撰寫的成果作品。對本文的研究做出重要貢獻(xiàn)的個人和集體,均已在文中以明確方式標(biāo)明。本人完全意識到本聲明的法律后果由本人承擔(dān)。作者簽名: 日期:年月日學(xué)位論文版權(quán)使用授權(quán)書本學(xué)位論文作者完全了解學(xué)校有關(guān)保留、使用學(xué)位論文的規(guī)定,同意學(xué)校保留并向國家有關(guān)部門或機(jī)構(gòu)送交論文的復(fù)印件和電子版,允許論文被查閱和借閱。本人授權(quán)大學(xué)可以將本學(xué)位論文的全部或部分內(nèi)容編入有關(guān)數(shù)據(jù)庫進(jìn)行檢索,可以采用影印、縮印或掃描等復(fù)制手段保存和匯編本學(xué)位論文。涉密論文按學(xué)校規(guī)定處理。作者簽名: 日期:年月日導(dǎo)師簽名:日期:年月日
注意事項(xiàng)1.設(shè)計(jì)(論文)的內(nèi)容包括:1)封面(按教務(wù)處制定的標(biāo)準(zhǔn)封面格式制作)2)原創(chuàng)性聲明3)中文摘要(300字左右)、關(guān)鍵詞4)外文摘要、關(guān)鍵詞5)目次頁(附件不統(tǒng)一編入)6)論文主體部分:引言(或緒論)、正文、結(jié)論7)參考文獻(xiàn)8)致謝9)附錄(對論文支持必要時)2.論文字?jǐn)?shù)要求:理工類設(shè)計(jì)(論文)正文字?jǐn)?shù)不少于1萬字(不包括圖紙、程序清單等),文科類論文正文字?jǐn)?shù)不少于1.2萬字。3.附件包括:任務(wù)書、開題報(bào)告、外文譯文、譯文原文(復(fù)印件)。4.文字、圖表要求:1)文字通順,語言流暢,書寫字跡工整,打印字體及大小符合要求,無錯別字,不準(zhǔn)請他人代寫2)工程設(shè)計(jì)類題目的圖紙,要求部分用尺規(guī)繪制,部分用計(jì)算機(jī)繪制,所有圖紙應(yīng)符合國家技術(shù)標(biāo)準(zhǔn)規(guī)范。圖表整潔,布局合理,文字注釋必須使用工程字書寫,不準(zhǔn)用徒手畫3)畢業(yè)論文須用A4單面打印,論文50頁以上的雙面打印4)圖表應(yīng)繪制于無格子的頁面上5)軟件工程類課題應(yīng)有程序清單,并提供電子文檔5.裝訂順序1)設(shè)計(jì)(論文)2)附件:按照任務(wù)書、開題報(bào)告、外文譯文、譯文原文(復(fù)印件)次序裝訂
指導(dǎo)教師評閱書指導(dǎo)教師評價:一、撰寫(設(shè)計(jì))過程1、學(xué)生在論文(設(shè)計(jì))過程中的治學(xué)態(tài)度、工作精神□優(yōu)□良□中□及格□不及格2、學(xué)生掌握專業(yè)知識、技能的扎實(shí)程度□優(yōu)□良□中□及格□不及格3、學(xué)生綜合運(yùn)用所學(xué)知識和專業(yè)技能分析和解決問題的能力□優(yōu)□良□中□及格□不及格4、研究方法的科學(xué)性;技術(shù)線路的可行性;設(shè)計(jì)方案的合理性□優(yōu)□良□中□及格□不及格5、完成畢業(yè)論文(設(shè)計(jì))期間的出勤情況□優(yōu)□良□中□及格□不及格二、論文(設(shè)計(jì))質(zhì)量1、論文(設(shè)計(jì))的整體結(jié)構(gòu)是否符合撰寫規(guī)范?□優(yōu)□良□中□及格□不及格2、是否完成指定的論文(設(shè)計(jì))任務(wù)(包括裝訂及附件)?□優(yōu)□良□中□及格□不及格三、論文(設(shè)計(jì))水平1、論文(設(shè)計(jì))的理論意義或?qū)鉀Q實(shí)際問題的指導(dǎo)意義□優(yōu)□良□中□及格□不及格2、論文的觀念是否有新意?設(shè)計(jì)是否有創(chuàng)意?□優(yōu)□良□中□及格□不及格3、論文(設(shè)計(jì)說明書)所體現(xiàn)的整體水平□優(yōu)□良□中□及格□不及格建議成績:□優(yōu)□良□中□及格□不及格(在所選等級前的□內(nèi)畫“√”)指導(dǎo)教師:(簽名)單位:(蓋章)年月日
評閱教師評閱書評閱教師評價:一、論文(設(shè)計(jì))質(zhì)量1、論文(設(shè)計(jì))的整體結(jié)構(gòu)是否符合撰寫規(guī)范?□優(yōu)□良□中□及格□不及格2、是否完成指定的論文(設(shè)計(jì))任務(wù)(包括裝訂及附件)?□優(yōu)□良□中□及格□不及格二、論文(設(shè)計(jì))水平1、論文(設(shè)計(jì))的理論意義或?qū)鉀Q實(shí)際問題的指導(dǎo)意義□優(yōu)□良□中□及格□不及格2、論文的觀念是否有新意?設(shè)計(jì)是否有創(chuàng)意?□優(yōu)□良□中□及格□不及格3、論文(設(shè)計(jì)說明書)所體現(xiàn)的整體水平□優(yōu)□良□中□及格□不及格建議成績:□優(yōu)□良□中□及格□不及格(在所選等級前的□內(nèi)畫“√”)評閱教師:(簽名)單位:(蓋章)年月日教研室(或答辯小組)及教學(xué)系意見教研室(或答辯小組)評價:一、答辯過程1、畢業(yè)論文(設(shè)計(jì))的基本要點(diǎn)和見解的敘述情況□優(yōu)□良□中□及格□不及格2、對答辯問題的反應(yīng)、理解、表達(dá)情況□優(yōu)□良□中□及格□不及格3、學(xué)生答辯過程中的精神狀態(tài)□優(yōu)□良□中□及格□不及格二、論文(設(shè)計(jì))質(zhì)量1、論文(設(shè)計(jì))的整體結(jié)構(gòu)是否符合撰寫規(guī)范?□優(yōu)□良□中□及格□不及格2、是否完成指定的論文(設(shè)計(jì))任務(wù)(包括裝訂及附件)?□優(yōu)□良□中□及格□不及格三、論文(設(shè)計(jì))水平1、論文(設(shè)計(jì))的理論意義或?qū)鉀Q實(shí)際問題的指導(dǎo)意義□優(yōu)□良□中□及格□不及格2、論文的觀念是否有新意?設(shè)計(jì)是否有創(chuàng)意?□優(yōu)□良□中□及格□不及格3、論文(設(shè)計(jì)說明書)所體現(xiàn)的整體水平□優(yōu)□良□中□及格□不及格評定成績:□優(yōu)□良□中□及格□不及格教研室主任(或答辯小組組長):(簽名)年月日教學(xué)系意見:系主任:(簽名)年月日摘要現(xiàn)代科技的飛躍發(fā)展,3G智能手機(jī)為我們帶來了很多便利,給我們提供了一個高效的平臺,在社會各界得到越來越廣泛的應(yīng)用。因此,本文圍繞一個“基于Android平臺的五子棋游戲設(shè)計(jì)與開發(fā)”程序的設(shè)計(jì)和應(yīng)用系統(tǒng)的開發(fā)課題為背景,詳細(xì)介紹了在Android平臺上以Java為語言編寫游戲的過程。五子棋游戲的開發(fā)不僅是一個簡單游戲的編寫過程,更重要的是在系統(tǒng)分析和設(shè)計(jì)階段所做的工作。該程序在設(shè)計(jì)過程中嚴(yán)格遵循軟件工程學(xué)的方法,用分階段的生命周期計(jì)劃嚴(yán)格管理,并主要講述了程序的總體設(shè)計(jì)、詳細(xì)設(shè)計(jì)階段,對程序進(jìn)行需求迭代,不斷修正和改進(jìn),利用SQlite、SharedPreferences等數(shù)據(jù)存儲功能,直到形成一個完善的可行性系統(tǒng).界面美觀、大方,方便的操作與良好的視覺感應(yīng)共同構(gòu)成了“基于Android平臺的五子棋游戲設(shè)計(jì)與開發(fā)”的設(shè)計(jì)。關(guān)鍵詞:Android;Java;數(shù)據(jù)存儲;軟件工程;五子棋BackgammongamedesignbasedonAndroidAbstractModerntechnologydevelopsrapidlyinoursociety.Itmakesourlivesmoreconvinientandprovidesanefficientplatformforus.Recently,the3GSmartphonebecomesmoreandmorepopular.Therefore,mythesiswilltalkabouttheprogressofthegameswhichisprogramedbytheJavalanguage.MypaperisbasedonthetasksontheprogramdesignandtheapplicationsystemwhichisbasedontheQuintetgamedesignanddevelopmentbuiltontheAndroid.ThedevelopmentoftheQuintetgameisnotjustaprogressofprograming.What’smore,weneedtopaymoreattentiontotheworkontheperiodofsystematicanalysisanddesign.Theprogramfollowsthesoftwareengineeringstrictlyandnarratesthemajordesignandsection.Thisprogrammailytalkabouttheperiodofthesystemdesignandthedetaileddesign.Andalsoitwillstudyonthebugfixingandimprovements.ByusingthesomefuctiongofdataloggingsuchastheSQlite,SharedPreferences,itbuildapracticablesystem.TheniceandexpertinterfaceandgoodvisualintroductionformthedesignwhichisbasedonthedesigninganddevelopmentofAndroidplatformQuintetgame.Keywords:Android;Java;Datastorage;softwareengineering;backgammon目錄摘要 iAbstract ii1緒論 11.1課題研究的背景 11.2國內(nèi)發(fā)展?fàn)顩r 11.3相關(guān)知識的介紹 21.3.1開發(fā)工具簡介 21.3.2數(shù)據(jù)存儲簡介 31.4系統(tǒng)運(yùn)行配置 31.5論文主要工作 32Android的系統(tǒng)研究 52.1Android的構(gòu)架 52.1.1Android構(gòu)架綜述 52.1.2Android應(yīng)用程序框架層 62.1.3Android應(yīng)用程序?qū)?72.1.4應(yīng)用程序組件 72.2Android嵌入有米廣告 83需求分析 103.1功能需求 103.2性能需求 103.3可行性研究 103.3.1經(jīng)濟(jì)可行性 103.3.2技術(shù)可行性 114概要設(shè)計(jì) 124.1系統(tǒng)功能結(jié)構(gòu)及流程圖 124.2數(shù)據(jù)存儲設(shè)計(jì) 125詳細(xì)設(shè)計(jì) 145.1主界面詳細(xì)設(shè)計(jì) 145.2游戲開始模塊詳細(xì)設(shè)計(jì) 155.2.1背景音樂和音效、嵌入廣告 155.2.2三大難度算法的設(shè)計(jì)及輸贏的判斷 155.3游戲說明模塊詳細(xì)設(shè)計(jì) 195.4最高紀(jì)錄模塊詳細(xì)設(shè)計(jì) 195.5游戲設(shè)置模塊詳細(xì)設(shè)計(jì) 206游戲的實(shí)現(xiàn) 226.1背景音樂和音效的實(shí)現(xiàn) 226.2嵌入廣告的實(shí)現(xiàn) 236.3三大難度的實(shí)現(xiàn) 236.3.1簡單 236.3.2中等 246.3.3較難 256.4游戲輸贏判斷的實(shí)現(xiàn) 26結(jié)論 28參考文獻(xiàn) 29致謝 30外文文獻(xiàn) 311緒論1.1課題研究的背景隨著計(jì)算機(jī)與網(wǎng)絡(luò)技術(shù)的日益發(fā)達(dá),同時也進(jìn)入了高效的信息化時代,說起手機(jī),沒有一個人會感到陌生。近幾年來一個名詞一直影響著許許多多的手機(jī)用戶,它就是智能手機(jī)。智能手機(jī)憑借其強(qiáng)大的功能吸引住了許多用戶的眼球,因?yàn)橛辛藦V大的用戶基礎(chǔ),智能手機(jī)也風(fēng)靡一時。說起智能手機(jī),除了他有一顆強(qiáng)大的CPU和其他一些較高配置的硬件外,其真正的智能還要?dú)w功于其不可缺少的智能操作系統(tǒng)。隨著3G的到來,無線帶寬越來越高,使得更多內(nèi)容豐富的應(yīng)用程序部署在手機(jī)上成為可能,比如視頻通話、視頻點(diǎn)播、移動互聯(lián)網(wǎng)等。為了承載這些數(shù)據(jù)應(yīng)用及快速部署,手機(jī)功能將越來越智能越來越開放。手機(jī)游戲也就應(yīng)運(yùn)而生,每個手機(jī)上都有手機(jī)游戲,游戲是人們娛樂的一種方式。Android平臺下的手機(jī)游戲更是受顧客的親睞,手機(jī)游戲不僅玩起來比較方便,還有助于開發(fā)我們的思維,使大家在娛樂的同時也增長了見識,拓展了思維。五子棋對自己的思維及協(xié)調(diào)能力有益,能使我們注意力集中,耐心也有明顯的提升,培養(yǎng)我們的邏輯思維能力,對智力以及記憶力都很有幫助。1.2國內(nèi)發(fā)展?fàn)顩r隨著3G時代的到來,在這個新的研究領(lǐng)域中,我國在世界上處于較為領(lǐng)先的地位,我國電信業(yè)正處在高速發(fā)展的階段,特別是新業(yè)務(wù)、新服務(wù)在打造品牌、創(chuàng)建市場的時期,對電信產(chǎn)業(yè)的結(jié)構(gòu)調(diào)整必須充分的考慮成本。由我國自主研發(fā)并獲政府支持的TD-SCDMA制式技術(shù),在頻譜利用率、對業(yè)務(wù)支持具有靈活性等獨(dú)特優(yōu)勢。這種全稱為TimeDivision-SynchronousCDMA(時分同步CDMA)的技術(shù),其空中接口采用了四種多址技術(shù):TDMA,CDMA,F(xiàn)DMA,SDMA(智能天線)。綜合利用四種技術(shù)資源分配時在不同角度上的自由度,得到可以動態(tài)調(diào)整的最優(yōu)資源分配??朔筛采w半徑隨用戶數(shù)目的增加而收縮造成的呼吸效應(yīng)和當(dāng)手機(jī)靠近基站功率必定過剩而且形成有害的電磁輻射所造成的遠(yuǎn)近效應(yīng),并且實(shí)現(xiàn)了動態(tài)信道分配。而分別由歐洲和美韓所倡導(dǎo)的WCDMA和CDMA2000也各具優(yōu)勢。我過擁有龐大的手機(jī)用戶群體,為游戲產(chǎn)業(yè)的發(fā)展奠定了良好的用戶基礎(chǔ)。手機(jī)游戲的真正生命力,是成為最終吸引用戶的關(guān)鍵所在。通過色彩艷麗的畫面或奇特的游戲名稱來吸引用戶。3G手機(jī)游戲開發(fā)周期相對比較短,資金投入小,用戶廣泛統(tǒng)一;載體方便,很容易在市場上推廣;如需收費(fèi),也合理方便。游戲可以鍛煉思維及協(xié)調(diào)能力,能使我們注意力和耐心有所提高,培養(yǎng)我們的邏輯思維能力,對智力以及記憶力都很有幫助。1.3相關(guān)知識的介紹本游戲采用當(dāng)前很熱的Android系統(tǒng),以Java語言為基礎(chǔ)的2D手機(jī)游戲。用戶游戲界面通過手機(jī)終端來實(shí)現(xiàn),較強(qiáng)的人際交互。這樣就大大簡化了用戶的操作,該游戲?yàn)槊赓M(fèi)游戲,用戶可以放心使用。此外,本系統(tǒng)采用了SharedPreferences作為應(yīng)用程序的數(shù)據(jù)存儲,用來存儲簡單的配置信息,簡單快捷,占用系統(tǒng)資源少。背景音樂采用媒體播放功能實(shí)現(xiàn),控制也比較方便。1.3.1開發(fā)工具簡介本系統(tǒng)的開發(fā)環(huán)境是JDK1.6+MyEclipse8.5+AndroidSDK,使用的語言是Java語言。JDK(JavaDevelopmentKit)是SunMicrosystems公司為Java開發(fā)人員設(shè)計(jì)的產(chǎn)品。從Java誕生以來,JDK已經(jīng)成為使用最廣泛JavaSDK。JDK是整個Java的核心內(nèi)容,包括了Java運(yùn)行環(huán)境,Java工具和Java基礎(chǔ)的類庫三部分。從Sun的JDK1.5開始,提供了一些非常實(shí)用的功能,其版本也不斷更新,運(yùn)行效率得到了非常大的提高。MyEclipse企業(yè)級工作平臺(MyEclipseEnterpriseWorkbench,簡稱MyEclipse)是對EclipseIDE的擴(kuò)展,應(yīng)用程序服務(wù)器的整合方面極大的提高工作效率。它是功能豐富的Java集成開發(fā)環(huán)境,包括了完備的編碼、調(diào)試、測試和發(fā)布功能,完整支持HTML,Struts,Spring,CSS,Javascript,SQL,Hibernate。AndroidSDK是軟件開發(fā)工具包(softwaredevelopmentkit)。被軟件開發(fā)工程師用于為特定的軟件包、軟件框架、硬件平臺、操作系統(tǒng)等建立應(yīng)用軟件工具的集合。因此AndroidSDK是Android專屬的開發(fā)工具包。其授權(quán)協(xié)議為Apache,開發(fā)語言為Java、需要Android操作系統(tǒng)的支持。1.3.2數(shù)據(jù)存儲簡介SharedPreferences存儲方式,它是Android提供的用來存儲一些簡單配置信息的一種機(jī)制,例如:登錄用戶名和密碼。其采用了Map數(shù)據(jù)結(jié)構(gòu)來存儲數(shù)據(jù),以鍵值的方式存儲,可以簡單的讀取與寫入。最高紀(jì)錄則用此存儲方式進(jìn)行存儲。SQlite存儲方式,它是Android平臺上集成的一個嵌入式關(guān)系型數(shù)據(jù)庫。SQLite3支持
NULL、INTEGER、REAL(浮點(diǎn)數(shù)字)、TEXT(字符串文本)和BLOB(二進(jìn)制對象)數(shù)據(jù)類型,雖然它支持的類型雖然只有五種,但實(shí)際上sqlite3也接受varchar(n)、char(n)、decimal(p,s)
等數(shù)據(jù)類型,只不過在運(yùn)算或保存時會轉(zhuǎn)成對應(yīng)的五種數(shù)據(jù)類型。
SQLite最大的特點(diǎn)是你可以保存任何類型的數(shù)據(jù)到任何字段中,無論這列聲明的數(shù)據(jù)類型是什么。例如:可以在Integer字段中存放字符串,或者在布爾型字段中存放浮點(diǎn)數(shù),或者在字符型字段中存放日期型值。但有一種情況例外:定義為INTEGERPRIMARYKEY的字段只能存儲64位整數(shù),當(dāng)向這種字段中保存除整數(shù)以外的數(shù)據(jù)時,將會產(chǎn)生錯誤。另外,
SQLite
在解析CREATETABLE
語句時,會忽略
CREATETABLE
語句中跟在字段名后面的數(shù)據(jù)類型信息。1.4系統(tǒng)運(yùn)行配置操作系統(tǒng):Android2.1以上。開發(fā)包:JDK1.6、AndroidSDK。數(shù)據(jù)存儲:SharedPreferences、SQlite。1.5論文主要工作此游戲主要是采用Android的View框架編寫,部分框架運(yùn)用Android中的其他組件。主要運(yùn)用了算法來實(shí)現(xiàn)對棋局的分析,棋盤輸贏的判定。UI方面:此游戲當(dāng)進(jìn)入游戲的界面時,調(diào)用的是一個用相對布局-AbsoluteLayout的XML布局文件。其中包括了一個IamgeView和4個Button.分別實(shí)現(xiàn)了不同的功能。第一個Button是進(jìn)入新游戲,點(diǎn)擊按鈕進(jìn)入新游戲,來選擇對手。第二個Button是幫助,用了一個TextView來說明怎樣來進(jìn)行游戲。第三個Button是游戲的關(guān)于,用了一個AlertDialog來介紹了一下游戲的這個游戲的好處。第四個Button是游戲的退出按鈕。在游戲中,我用畫線來不滿了整個的手機(jī)屏幕,在上面用了TextView來進(jìn)行了文字的說明和提示。本篇論文,主要目的是為了探討更加深入的理解Android,為移動終端上的游戲軟件的打造提供一個思路
2Android的系統(tǒng)研究2.1Android的構(gòu)架2.1.1Android構(gòu)架綜述Android是一個包括操作系統(tǒng),中間件以及一些重要應(yīng)用程序的專門針對移動設(shè)備的層次結(jié)構(gòu)的軟件集。作為一個層次結(jié)構(gòu)的軟件集,一定有一個層次的系統(tǒng)構(gòu)架,下圖為Android的構(gòu)架圖: 圖2.1Android系統(tǒng)構(gòu)架從圖2.1中明顯的可以看出該系統(tǒng)從下到上包括Linux內(nèi)核層、Libraries和運(yùn)行時環(huán)境層、應(yīng)用程序框架層、應(yīng)用程序?qū)铀膶咏Y(jié)構(gòu)。在Android的最下層的操作系統(tǒng)基于Linux2.6內(nèi)核,往上的中間件包括Libraries和運(yùn)行時環(huán)境層和應(yīng)用程序框架層兩個層次,最上層則是應(yīng)用程序?qū)印?在Android構(gòu)架中,可以很明顯的看到,底層的Linux內(nèi)核則采用的是C語言,libraries采用C或者C++,但是應(yīng)用程序?qū)?、?yīng)用程序框架層和運(yùn)行時環(huán)境中的Android核心庫采用Java語言編寫,也就是說Android雖然底層用的是C或者C++但是應(yīng)用程序的開發(fā)則用的是Java。Google采用這樣的模式可能是因?yàn)橄鄬τ贑或者C++,Java的開發(fā)周期更短的緣故,這樣的話就能在短時間內(nèi)為Android提供大量的應(yīng)用軟件。我們知道,作為一個智能手機(jī)平臺,只有擁有了大量的源源不斷的應(yīng)用程序作為支持,才能受人們的歡迎,從而才能占領(lǐng)市場。之前Nokia的s60第三版就是一個很好的例子,因此NokiaS60v3的系統(tǒng)才被世人所熟知,并且曾經(jīng)在智能手機(jī)行業(yè)占有很大的市場。而另一個例子就是Linux系統(tǒng),在所有操作系統(tǒng)中,穩(wěn)定性和性能上能夠和Linux抗衡的系統(tǒng)不多吧,但是在智能手機(jī)市場上為什么Linux卻可以說是一敗涂地,其原因也和其第三方應(yīng)用少是脫不了關(guān)系的。2.1.2Android應(yīng)用程序框架層應(yīng)用程序框架層是處于AndroidRuntime和庫函數(shù)層于應(yīng)用程序?qū)又g,該層使用開發(fā)語言的是Java語言。應(yīng)用程序框架是能夠讓開發(fā)者完全訪問核心應(yīng)用程序所使用的API(ApplicationProgrammingInterface,應(yīng)用程序編程接口),該框架能夠讓組件軟件重用的工做簡單化。同時該框架中的任何一個功能模塊都是等價的,任何一個應(yīng)用程序都可以發(fā)布其功能模塊,該功能模塊可以替代當(dāng)前的任意一個功能模塊,但前提是必須遵循框架的安全限制,另外,其他的任意應(yīng)用程序能夠使用這個發(fā)布的功能模塊。這樣的設(shè)計(jì)就使Android的構(gòu)件重用率提高了。在每一個應(yīng)用程序背后,應(yīng)用程序框架為其提供了一系列的服務(wù)。這些服務(wù)包括:①一個豐富并且可擴(kuò)展的視圖,通過這個視圖我們可以使用它提供的一些包括按鈕、文本框、列表、網(wǎng)格等甚至可嵌入的web瀏覽器的應(yīng)用程序來構(gòu)造我們的應(yīng)用程序。②內(nèi)容提供器(contentproviders),有了內(nèi)容提供器,一個應(yīng)用程序可以共享它自己的數(shù)據(jù)或者訪問另外一個應(yīng)用程序中共享的數(shù)據(jù)。③資源管理器(resourcemanager),使用資源管理器,我們在應(yīng)用程序中能夠訪問到一些如圖形、布局文件等一些非代碼資源。④通知管理器(notificationmanager),給程序員提供了一個可以在程序狀態(tài)欄中顯示自定義提示信息的管理器。⑤活動管理器(activitymanager),提供常用導(dǎo)航功能用來管理應(yīng)用程序生命周期的服務(wù)。通過這些應(yīng)用程序框架層提供的服務(wù)程序員能夠方便的開發(fā)一個界面優(yōu)秀功能強(qiáng)大易于共享的的應(yīng)用程序。2.1.3Android應(yīng)用程序?qū)討?yīng)用程序?qū)影巳缑芾?、Googlemaps、瀏覽器等本地應(yīng)用程序(nativeapps),如QQ、MSN、QuickOffice等第三方應(yīng)用程序(thirdpartapps),以及developerapps。同樣,該層的應(yīng)用程序也都使用Java語言進(jìn)行開發(fā)的。2.1.4應(yīng)用程序組件
Android的一個主要特點(diǎn)是,一個應(yīng)用程序可以利用其他應(yīng)用程序的元素(假設(shè)這些應(yīng)用程序允許的話)。例如,如果你的應(yīng)用程序需要顯示一個圖像的滾動列表,且其他應(yīng)用程序已經(jīng)開發(fā)了一個合適的滾動條并可以提供給別的應(yīng)用程序用,你可以調(diào)用這個滾動條來工作,而不用自己開發(fā)一個。你的應(yīng)用程序不用并入其他應(yīng)用程序的代碼或鏈接到它。相反,當(dāng)需求產(chǎn)生時它只是啟動其他應(yīng)用程序塊。
對于這個工作,當(dāng)應(yīng)用程序的任何部分被請求時,系統(tǒng)必須能夠啟動一個應(yīng)用程序的進(jìn)程,并實(shí)例化該部分的Java對象。因此,不像其他大多數(shù)系統(tǒng)的應(yīng)用程序,Android應(yīng)用程序沒有一個單一的入口點(diǎn)(例如,沒有main()函數(shù))。相反,系統(tǒng)能夠?qū)嵗瓦\(yùn)行需要幾個必要的組件。有四種類型的組件:
活動(Activities)
服務(wù)(Services)
廣播接收者(Broadcast
receivers)
內(nèi)容提供者(Content
providers)
然而,并不是所有的應(yīng)用程序都必須包含上面的四個部分,你的應(yīng)用程序可以由上面的一個或幾個來組建。當(dāng)你決定使用以上哪些組件來構(gòu)建Android應(yīng)用程序時,你應(yīng)該將它們列在AndroidManifest.xml文件中,在這個文件中你可以聲明應(yīng)用程序組件以及它們的特性和要求。關(guān)于AndroidManifest.xml在Android開發(fā)之旅:HelloWorld項(xiàng)目的目錄結(jié)構(gòu)的1.6、AndroidManifest.xml簡單介紹了一下,可以參考一下。
2.2Android嵌入有米廣告優(yōu)蜜科技是業(yè)界領(lǐng)先的移動信息服務(wù)提供商,擁有國內(nèi)領(lǐng)先的手機(jī)廣告平臺-有米廣告,總部設(shè)在廣州,并在北京、美國加州設(shè)有分公司。優(yōu)蜜科技擁有國內(nèi)頂尖的運(yùn)營和研發(fā)團(tuán)隊(duì),管理層匯集高盛、美林證券、百度等知名企業(yè)精英,公司自成立以來,一直全心專注于移動互聯(lián)網(wǎng)研究,與中國移動、中國電信等知名企業(yè)的緊密合作,更是凸顯了優(yōu)蜜科技超越同行的非凡價值?!皟?yōu)蜜”的“優(yōu)”體現(xiàn)我們“服務(wù)客戶,用戶第一,創(chuàng)造價值”的經(jīng)營理念,“蜜”表示公司內(nèi)部要像蜜蜂一樣各盡其職,團(tuán)結(jié)一致,為公司的發(fā)展和持續(xù)領(lǐng)跑不懈努力。優(yōu)蜜科技擁有全國最大的手機(jī)應(yīng)用廣告平臺——有米傳媒手機(jī)廣告平臺(以下簡稱有米廣告)。有米廣告擁有自主核心技術(shù)及完整知識產(chǎn)權(quán),在用戶特征識別、客戶端防作弊、廣告精準(zhǔn)投放、廣告智能投放等關(guān)鍵領(lǐng)域遠(yuǎn)遠(yuǎn)領(lǐng)先同業(yè)。有米廣告以7億手機(jī)用戶為廣告受眾,不僅為數(shù)以萬計(jì)的企業(yè)廣告主提供精準(zhǔn)的產(chǎn)品營銷和品牌推廣服務(wù),還為應(yīng)用開發(fā)者創(chuàng)造出源源不斷的收益。截至2010年5月5日,有米廣告的市場占有率超過98%?!坝忻住笔菄鴥?nèi)領(lǐng)先的移動應(yīng)用廣告平臺。該平臺稱是國內(nèi)首家移動應(yīng)用廣告平臺,話說也是,在國內(nèi)基本上無線廣告都是wap廣告,即在wap網(wǎng)站上面投放廣告。這種廣告投放方式,在客戶端上表現(xiàn)能力不強(qiáng),除非像iPhone和android手機(jī)這個網(wǎng)絡(luò)功能比較強(qiáng)悍的手機(jī)能做出比較炫的效果,其他手機(jī)平臺基本上都是一條文字描述,然后點(diǎn)擊就跳轉(zhuǎn)到宣傳頁面或是下載頁面。這種形式的廣告,你用手機(jī)上網(wǎng)那是到處都可見到。話說也已經(jīng)習(xí)慣了、免疫了。
有米這個廣告平臺支持在android、Symbian、WindowsMobile和j2me這個四個手機(jī)系統(tǒng)的應(yīng)用程序中嵌入廣告,話說這個四個平臺手機(jī)也覆蓋了國內(nèi)絕大部分的手機(jī)了吧,單純是Symbian手機(jī)就占了60%多了??磥磉@個平臺還真符合國情。不過Symbian大部分手機(jī)都是鍵盤機(jī),不知這個點(diǎn)擊廣告它是如何處理的,畢竟不能單靠展示廣告的費(fèi)用吧,這個CPM太低了!看了它Symbiansdk文檔中的示例圖,好像還提供了一個快捷鍵來專門點(diǎn)擊廣告,看來有米廣告還考慮得真全面。
有米廣告的廣告可以根據(jù)應(yīng)用程序類別、應(yīng)用程序平臺、投放廣告地區(qū)、目標(biāo)移動設(shè)備、性別、年齡段、屏幕分辨率、投放時間、每天最多投放次數(shù)進(jìn)行投放廣告,看來這個平臺的精準(zhǔn)營銷策略做得不錯!
深思一下,有米廣告可以解決這一問題,開發(fā)者可以在自己免費(fèi)的軟件嵌入廣告,這就是一個收入來源,同時,還能提高你繼續(xù)開發(fā)下一個軟件的動力,在這個過程中,也可以提高自己的編程技術(shù)、理解用戶體驗(yàn)的重要性、也能培養(yǎng)自己的商業(yè)眼光。而在這提升的過程中,開發(fā)者根本不需要任何成本。至于用戶,免費(fèi)的軟件中嵌入一些廣告,開始是會比較厭煩,久而久之也就和在wap上投放廣告一樣習(xí)慣了、免疫了。我想,用戶也能理解和體諒開發(fā)者的辛苦。你說,做程序員容易嗎?整天加班、日日夜夜不停得編寫程序。因此,也就有了“程序員是IT界的民工”之說。
對于有米廣告這種移動應(yīng)用廣告平臺,我確實(shí)很看好,我也相信它是移動互聯(lián)網(wǎng)領(lǐng)域的一大趨勢。對于android、Symbian、WM、j2me這個四個手機(jī)平臺的開發(fā)者都可以去試試這個平臺。
3需求分析3.1功能需求五子棋分為五個模塊:開始游戲、游戲說明、最高紀(jì)錄、游戲設(shè)置、退出游戲。1.開始游戲:①.點(diǎn)擊進(jìn)入游戲。2.游戲說明:①.五子棋游戲規(guī)則的說明及操作說明。3.最高紀(jì)錄:①.紀(jì)錄不同難度獲勝的最短時間,可清空。4.游戲設(shè)置:①.音效設(shè)置:開啟/關(guān)閉音效、背景音樂的開/關(guān)。②.難度設(shè)置:簡單,中等,較難。5.退出游戲:①.退出游戲。3.2性能需求1.硬件環(huán)境:PC2.軟件環(huán)境:WindowsXP、Android2.1以上3.3可行性研究3.3.1經(jīng)濟(jì)可行性該軟件為免費(fèi)軟件,不收取任何費(fèi)用。開發(fā)周期相對較短,能有效的利用開發(fā)人員。3.3.2技術(shù)可行性運(yùn)用Android智能手機(jī)的平臺,開發(fā)人員具有一定的Android知識,熟悉的算法基礎(chǔ)。智能手機(jī)擁有扎實(shí)的硬件平臺以及較好的操作系統(tǒng);該游戲能在手機(jī)上正常運(yùn)行;操作簡單,方便,為游戲玩家提供了一個良好的游戲平臺。
4概要設(shè)計(jì)4.1系統(tǒng)功能結(jié)構(gòu)及流程圖根據(jù)系統(tǒng)功能的要求,可以將系統(tǒng)分解成幾個功能模塊來分別設(shè)計(jì)。系統(tǒng)結(jié)構(gòu)如圖4.1所示:Android五子棋Android五子棋開始游戲游戲說明最高紀(jì)錄游戲設(shè)置退出游戲圖4.1系統(tǒng)結(jié)構(gòu)圖4.2數(shù)據(jù)存儲設(shè)計(jì)根據(jù)系統(tǒng)所做的需求分析和系統(tǒng)設(shè)計(jì),SharedPreferences為最有效的存儲方式。它用來存儲一些簡單配置信息的一種機(jī)制,比SQlite更高效。SharedPreferences是Android平臺上一個輕量級的存儲類,主要是保存一些常用的配置比如窗口狀態(tài),一般在Activity中重載窗口狀態(tài)onSaveInstanceState保存一般使用SharedPreferences完成,它提供了Android平臺常規(guī)的Long長整形、Int整形、String字符串型的保存,它是什么樣的處理方式呢?
SharedPreferences類似過去Windows系統(tǒng)上的ini配置文件,但是它分為多種權(quán)限,可以全局共享訪問,android123提示最終是以xml方式來保存,整體效率來看不是特別的高,對于常規(guī)的輕量級而言比SQLite要好不少,如果真的存儲量不大可以考慮自己定義文件格式。xml處理時Dalvik會通過自帶底層的本地XMLParser解析,比如XMLpull方式,這樣對于內(nèi)存資源占用比較好。這種方式應(yīng)該是用起來最簡單的Android讀寫外部數(shù)據(jù)的方法了。他的用法基本上和J2SE(java.util.prefs.Preferences)中的用法一樣,以一種簡單、透明的方式來保存一些用戶個性化設(shè)置的字體、顏色、位置等參數(shù)信息。一般的應(yīng)用程序都會提供“設(shè)置”或者“首選項(xiàng)”的這樣的界面,那么這些設(shè)置最后就可以通過Preferences來保存,而程序員不需要知道它到底以什么形式保存的,保存在了什么地方。當(dāng)然,如果你愿意保存其他的東西,也沒有什么限制。只是在性能上不知道會有什么問題。在Android系統(tǒng)中,這些信息以XML文件的形式保存在
/data/data/PACKAGE_NAME/shared_prefs
目錄下。2個activity之間的數(shù)據(jù)傳遞除了可以通過intent來傳遞,還可以使用SharedPreferences來共享數(shù)據(jù)的方式SharedPreferences用法很簡單.在A中設(shè)置Java代碼Editorsharedata=getSharedPreferences("data",0).edit();sharedata.putString("item","hellogetSharedPreferences");mit();B中獲取Java代碼SharedPreferencessharedata=getSharedPreferences("data",0);Stringdata=sharedata.getString("item",null);Log.v("cola","data="+data);
5詳細(xì)設(shè)計(jì)系統(tǒng)詳細(xì)設(shè)計(jì)是對每個模塊功能的具體設(shè)計(jì),包括界面、功能模塊和設(shè)計(jì)要點(diǎn)等內(nèi)容。5.1主界面詳細(xì)設(shè)計(jì)游戲主界面如圖5.1所示:圖5.1游戲主界面點(diǎn)擊‘開始游戲’時,可直接進(jìn)入游戲;‘游戲說明’為相關(guān)的介紹以及游戲操作;‘最高紀(jì)錄’記錄不同難度等級的最高成績;‘游戲設(shè)置’為設(shè)置游戲背景音樂、音效、以及難度;‘退出游戲’為退出整個游戲。5.2游戲開始模塊詳細(xì)設(shè)計(jì)進(jìn)入游戲后,按照操作可直接玩該五子棋游戲。圖5.2是游戲界面的截圖。圖5.2游戲界面5.2.1背景音樂和音效、嵌入廣告背景音樂和音效對一個游戲來說也是必不可少的。背景音樂開則進(jìn)入游戲開始播放背景音樂,背景音樂關(guān)則相反。嵌入廣告:廣告在游戲中也是一個重要的決定因素,不僅僅可以提高自己的編程技術(shù),還可以增加用戶的體驗(yàn)、也能培養(yǎng)自己的商業(yè)眼光。5.2.2三大難度算法的設(shè)計(jì)及輸贏的判斷本設(shè)計(jì)中難度的設(shè)置是極為重要的階段,不同難度的設(shè)置對玩家要求也各有不同。游戲流程如圖5.3所示。判斷開始判斷開始勝負(fù)莊家勝玩家勝莊家下棋玩家下棋YNYYNN結(jié)束開始圖5.3游戲流程圖三大難度的算法設(shè)計(jì),算法的主體思想分三個步驟:第一步:根據(jù)雙方的當(dāng)前的形勢循環(huán)地假設(shè)性的分別給自己和對方下一子(在某個范圍內(nèi)下子),并判斷此棋子能帶來的形勢上的變化,如能不能沖4,能不能形成莊家或玩家雙3等,第二步:根據(jù)上一步結(jié)果,組合每一步棋子所帶來的所有結(jié)果(如某一步棋子可能形成我方1個活3,1個沖4等),包括莊家和玩家的。第三步:根據(jù)用戶給的規(guī)則對上一步結(jié)果進(jìn)行排序,并選子(有進(jìn)攻形、防守形規(guī)則)。簡單:簡單難度的實(shí)現(xiàn),莊家不防守,在離玩家最近下棋棋子最近的8個位置上的空位上方隨機(jī)下棋。中等:中等難度的實(shí)現(xiàn),莊家只防守,少攻擊。當(dāng)玩家有“三活棋”以及“四沖”時,防守;否則選擇自己最長連棋并且可下棋的空位下棋。流程圖如圖5.4所示:玩家活四玩家活四防守進(jìn)攻YNYYNN玩家四沖莊家活四莊家活三玩家活三莊家四沖YNY、YNY下棋N結(jié)束開始圖5.4中等難度流程圖 較難:較難難度的實(shí)現(xiàn),莊家有強(qiáng)烈的防守,有猛烈的攻擊。雙方都不可以制造活4棋,找雙活3棋子,不行就找半活4,再不行就找單活3,雙活2的攻守模式。流程圖如圖5.5所示:玩家活四玩家活四防守下棋YNYYNN玩家四沖玩家單活三制造活四玩家活三制造雙活三YNY、YNYN制造四沖制造單活三制造雙活二制造單活二NNNYYY開始結(jié)束圖5.5較難難度流程圖莊家與玩家的勝負(fù)判斷:每走一步,調(diào)用判斷方法。其思路為:首先有一個組的集合,就是橫、豎、斜三個方向,每5格一組,這個可以根據(jù)寬高計(jì)算出來。循環(huán)這個集合。如果有同色連接5個,那么為勝同時將五格中已有4個同色并且剩余一格未操作的,放入一個集合內(nèi),若上一步?jīng)]有結(jié)果,那么判斷這個集合,如果有這個集合有兩條以上,并且未操作格坐標(biāo)不為同一個,那么同樣為勝。5.3游戲說明模塊詳細(xì)設(shè)計(jì)游戲說明是游戲中不可或缺的部分,給玩家提供了簡單的游戲玩法和明了的操作。圖5.6是游戲說明界面截圖。圖5.6游戲說明5.4最高紀(jì)錄模塊詳細(xì)設(shè)計(jì)最高紀(jì)錄為紀(jì)錄3個不同難度的最好成績,也可清空最高紀(jì)錄。圖5.7是最高紀(jì)錄截圖,圖5.8是清空最高紀(jì)錄截圖。圖5.7最高紀(jì)錄截圖圖5.8清空最高紀(jì)錄截圖5.5游戲設(shè)置模塊詳細(xì)設(shè)計(jì)游戲設(shè)置模塊分為背景音樂開/關(guān)、音效開/關(guān)、難度選擇。圖5.9是設(shè)置界面截圖,圖5.10是背景音樂開關(guān)截圖,圖5.11是音效開關(guān)截圖,圖5.12是難度選擇截圖。圖5.9設(shè)置界面截圖圖5.10背景音樂開關(guān)截圖圖5.11音效開關(guān)截圖圖5.12難度截圖
6游戲的實(shí)現(xiàn)6.1背景音樂和音效的實(shí)現(xiàn)背景音樂和音效的實(shí)現(xiàn),先創(chuàng)建播放文件,然后通過準(zhǔn)備,播放,停止的模式來播放背景音樂和音效。部分代碼如下:player=MediaPlayer.create(this,R.raw.bmusic);soundplayer=MediaPlayer.create(this,R.raw.soundmusic);if(play){//背景音樂 try{ player.prepare(); }catch(IllegalStateExceptione){ e.printStackTrace(); }catch(IOExceptione){ e.printStackTrace(); } player.start(); }else player.stop();if(sonudplay){//音效 try{ soundplayer.prepare(); }catch(IllegalStateExceptione){ e.printStackTrace(); }catch(IOExceptione){ e.printStackTrace(); } soundplayer.start(); }else soundplayer.stop();6.2嵌入廣告的實(shí)現(xiàn)嵌入廣告的實(shí)現(xiàn),首先對其初始化,然后設(shè)置廣告的基本信息,包括長度、高度、背景等。部分代碼如下:static{//初始化 AdManager.init("f7b9d91818b3bada","58ac2c52e8a5df23",31,false,2.1); } publicvoidyoumi(){ //初始化廣告視圖 AdViewadView=newAdView(this,Color.GRAY,Color.WHITE,100); //設(shè)置監(jiān)聽者(可以不設(shè)置,對獲取廣告沒有影響) adView.setAdListener(this); FrameLayout.LayoutParamsparams=newFrameLayout.LayoutParams( FrameLayout.LayoutParams.FILL_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT); //設(shè)置廣告出現(xiàn)的位置(懸浮于底部) params.bottomMargin=0; params.gravity=Gravity.BOTTOM; //將廣告視圖加入Activity中 addContentView(adView,params); }6.3三大難度的實(shí)現(xiàn)6.3.1簡單簡單難度的實(shí)現(xiàn),只有當(dāng)莊家為活四的時候才進(jìn)攻,其他情況離玩家最近下棋棋子最近的8個位置上的空位上隨機(jī)下棋。部分偽代碼如下:if(莊家下棋){if(莊家活四){ 下棋 } else{ 離玩家最近下棋棋子最近的8個位置上的空位上隨機(jī)下棋 } return;}6.3.2中等中等難度的實(shí)現(xiàn),莊家只防守,少攻擊。當(dāng)玩家有“三活棋”以及“四沖”時,防守;否則選擇自己最長連棋并且可下棋的空位下棋。部分偽代碼如下:if(莊家下棋){ //遍歷玩家的棋子,在玩家的棋中加入合適的棋子,再判斷if(玩家活四){ 防守 return; } elseif(玩家雙活三){ 防守 return; } elseif(玩家四沖){ 防守 return; } else{//遍歷自己的棋子if(莊家活四){ 防守 } elseif(莊家四沖){ 進(jìn)攻 } elseif(莊家活三){ 進(jìn)攻 } else{ 下棋 } } return;}6.3.3較難較難難度的實(shí)現(xiàn),莊家有強(qiáng)烈的防守,有猛烈的攻擊。雙方都不可以制造活4棋,找雙活3棋子,不行就找半活4,再不行就找單活3,雙活2的攻守模式。部分偽代碼如下:if(莊家下棋){ //遍歷玩家的棋子,在玩家的棋中加入合適的棋子,再判斷 if(玩家活四){ 防守 return; } elseif(玩家雙活三){ 防守 return; } elseif(玩家四沖){ 防守 return; } elseif(玩家單活三){ 防守 return; } //遍歷自己的棋子,加入合適一棋子,再判斷 if(制造活四){ 下棋 } elseif(制造雙活三){ 下棋 } elseif(制造四沖){ 下棋 } elseif(制造單活三){ 下棋 } elseif(制造雙活二){ 下棋 } elseif(制造單活二){ 下棋 } return;}6.4游戲輸贏判斷的實(shí)現(xiàn)游戲輸贏的實(shí)現(xiàn),每走一步,調(diào)用判斷方法。其思路為:首先有一個組的集合,就是橫、豎、斜三個方向,每5格一組,這個可以根據(jù)寬高計(jì)算出來。循環(huán)這個集合。如果有同色連接5個,那么為勝同時將五格中已有4個同色并且剩余一格未操作的,放入一個集合內(nèi),若上一步?jīng)]有結(jié)果,那么判斷這個集合,如果有這個集合有兩條以上,并且未操作格坐標(biāo)不為同一個,那么同樣為勝。部分代碼如下:publicbooleanisWin(introw,intcolumn,intcurChess){ booleanisWin=false; if(this.isHorizontalWin(row,column,curChess) ||this.isVerticalWin(row,column,curChess) ||this.isLeftObliqueDownWin(row,column,curChess) ||this.isLeftObliqueUpWin(row,column,curChess)){ isWin=true; } returnisWin; } publicbooleanisHorizontalWin(introw,intcolumn,intcur){ booleanisWin=false; intch=0; for(intx=row;x>=40;x-=30){ if(curChess[x][column]==cur){ ch++; Log.e("iswinch",""+ch); }else break; } for(intx=row+30;x<=280;x+=30){ if(curChess[x][column]==cur){ ch++; Log.e("iswinch",""+ch); }else break; } if(ch>=5) isWin=true; Log.e("iswin",""+isWin); returnisWin;我的五子棋判斷輸贏的算法是比較容易想到的。將判斷方向分為四個方向,即:水平向右,豎直向下,斜向右下,斜向左下。我用一個二維數(shù)組來存放數(shù)據(jù)表達(dá)棋盤交點(diǎn)處的狀態(tài),是否有棋子,是什么棋子。將數(shù)組全部初始化為0,而鼠標(biāo)點(diǎn)擊棋盤后會將對應(yīng)交點(diǎn)數(shù)組里的數(shù)改變。以改變?yōu)?表示放置的是黑子,以改變?yōu)?1表示放置的是白子。然后在水平向右,豎直向下,斜向右下這三個方向從左上方的第一個棋子開始一層層做循環(huán)來判斷是否連成五子。而斜向左下這個方向從右上第一個棋子一層層做循環(huán)來判斷。我覺得這里是最容易出問題的地方,因?yàn)閿?shù)組初始化的位置容易搞錯,還有數(shù)組一不小心就會越界。我覺得我的這個五子棋還不是很完善。如還沒有加入人機(jī)對戰(zhàn),沒有解決小棋盤外還可以落子的問題,還有其實(shí)悔棋的功能還沒有實(shí)現(xiàn)。不過我會在有充分的時間是完善。
結(jié)論經(jīng)過這一段時間的不斷探索,自己對Android的研究,對Android游戲有了進(jìn)一步的了解和學(xué)習(xí)。這段時間的不懈努力,五子棋游戲已經(jīng)完成,達(dá)到了預(yù)期的要求。一個完整的Android五子棋游戲完成了。在本游戲的設(shè)計(jì)與實(shí)現(xiàn)的過程中主要講述了一個較完整的五子棋的系統(tǒng)設(shè)計(jì)部分,包括功能模塊設(shè)計(jì)、廣告設(shè)計(jì)等。系統(tǒng)設(shè)計(jì)為整個游戲構(gòu)建了框架,各個功能模塊實(shí)現(xiàn)各個細(xì)節(jié)部分。難,中,易三種游戲難度的選擇,游戲界面美觀大方,音效以及背景音樂的控制,均已實(shí)現(xiàn)。游戲難度的實(shí)現(xiàn)雖然比較麻煩,但是在自己的不懈努力和指導(dǎo)老師的幫助下,都順利的完成了。系統(tǒng)的詳細(xì)設(shè)計(jì)根據(jù)系統(tǒng)分析階段的結(jié)論將系統(tǒng)具體化,并完成了各個模塊的相關(guān)功能,從而實(shí)現(xiàn)Android五子棋。在這個畢業(yè)設(shè)計(jì)的每個階段都能使我學(xué)到新的東西,雖然也有一些不足之處,但是每一個不足之處都是我值得思考的問題,這將對我以后的發(fā)展很有幫助。隨著3G智能機(jī)的普及,人們對游戲的要求也越來越高,人機(jī)對戰(zhàn)的實(shí)現(xiàn)往往是不夠的?,F(xiàn)在網(wǎng)絡(luò)越來越好,網(wǎng)絡(luò)雙人對戰(zhàn)也是一個很不錯的研究方向。
參考文獻(xiàn)[1](美)威爾頓,麥可匹克.JAVAScript入門經(jīng)典(第3版).施宏斌譯.北京:清華大學(xué)出版社,2009[2](美)BruceEckel.JAVA編程思想[M].陳昊鵬譯.北京:機(jī)械工業(yè)出版社,2007[3](美)ThomasPetchel.《JAVA2游戲編程》.北京:清華大學(xué)出版社,2005[4]張孝祥.JAVA就業(yè)培訓(xùn)教程[M].北京:清華大學(xué)出版社,2003[5]宏偉,何豐泉.《五子棋連珠棋初步》.哈爾濱科技出版社.1999[6]孔令德.畢業(yè)設(shè)計(jì)案例教程—從系統(tǒng)開發(fā)到論文寫作[M].北京國防工業(yè)出版社,2007
[7]吳其慶編著.JAVA程序設(shè)計(jì)實(shí)例教程.北京:冶金工業(yè)出版社,2006
[8]趙文靖編著.JAVA程序設(shè)計(jì)基礎(chǔ)與上機(jī)指導(dǎo).北京:清華大學(xué)出版社,2006
[9]趙毅主編.跨平臺程序設(shè)計(jì)語言——JAVA.西安:西安電子科技大學(xué)出版社,2006
[10]王克宏
著.JAVA技術(shù)教程(基礎(chǔ)篇).北京:高等教育出版社,2002.04
[11]孫燕
主編.JAVA2入門與實(shí)例教程.北京:中國鐵道出版社,2003.01
致謝在撰寫本文過程中,得到了很多老師同學(xué)的幫助,給他們以誠摯的謝意。該設(shè)計(jì)是在趙涓涓老師的指導(dǎo)下完成的。從上學(xué)期的開題、分析到撰稿和修改等整個論文撰寫,趙老師都給予了我細(xì)心的指導(dǎo)和比較全面的建議。在此,我向趙老師表達(dá)崇高的敬意和衷心的感謝!趙老師,您辛苦了!謝謝您。在大學(xué)生活期間,有曾經(jīng)幫助過我的老師們,謝謝你們;謝謝我身邊的同學(xué)和朋友,是你們給我了無微不至的幫助和關(guān)懷,謝謝你們。四年求學(xué)期間是你們給了我?guī)椭?,我才能有今天。每一部分知識的積累都與你們的幫助密不可分,我的今天都是你們給我的!再次感謝所有幫助我的老師和同學(xué)們?。?!謝謝
外文文獻(xiàn)ActivityandTaskDesignThisdocumentdescribescoreprinciplesoftheAndroidapplicationframework,fromahigh-level,user-centricperspectiveusefultointeractionandapplicationdesignersaswellasapplicationdevelopers.Itillustratesactivitiesandtaskswithexamples,anddescribessomeoftheirunderlyingprinciplesandmechanisms,suchasnavigation,multitasking,activityre-use,intents,andtheactivitystack.ThedocumentalsohighlightsdesigndecisionsthatareavailabletoyouandwhatcontroltheygiveyouovertheUIofyourapplication.ThisdocumentdrawsexamplesfromseveralAndroidapplications,includingdefaultapplications(suchasDialer)andGoogleapplications(suchasMaps).YoucantryouttheexamplesyourselfintheAndroidemulatororonanAndroid-powereddevice.Ifyouareusingadevice,notethatyourdevicemaynotofferalloftheexampleapplicationsusedinthisdocument.Applications,Activities,ActivityStackandTasksFourfundamentalconceptsintheAndroidsystemthatarehelpfulforyoutounderstandare:ApplicationsActivitiesActivityStackTasksApplicationsAnAndroidapplicationtypicallyconsistsofoneormorerelated,looselyboundactivitiesfortheusertointeractwith,typicallybundledupinasinglefile(withan.apksuffix).Androidshipswitharichsetofapplicationsthatmayincludeemail,calendar,browser,maps,textmessaging,contacts,camera,dialer,musicplayer,settingsandothers.AndroidhasanapplicationlauncheravailableattheHomescreen,typicallyinaslidingdrawerwhichdisplaysapplicationsasicons,whichtheusercanpicktostartanapplication.ActivitiesActivitiesarethemainbuildingblocksofAndroidapplications.Whenyoucreateanapplication,youcanassembleitfromactivitiesthatyoucreateandfromactivitiesyoure-usefromotherapplications.Theseactivitiesareboundatruntime,sothatnewlyinstalledapplicationscantakeadvantageofalreadyinstalledactivities.Onceassembled,activitiesworktogethertoformacohesiveuserinterface.Anactivityhasadistinctvisualuserinterfacedesignedaroundasingle,well-boundedpurpose,suchasviewing,editing,dialingthephone,takingaphoto,searching,sendingdata,startingavoicecommand,orperformingsomeothertypeofuseraction.Anyapplicationthatpresentsanythingonthedisplaymusthaveatleastoneactivityresponsibleforthatdisplay.WhenusinganAndroiddevice,astheusermovesthroughtheuserinterfacetheystartactivitiesoneaftertheother,totallyoblivioustotheunderlyingbehavior—tothemtheexperienceshouldbeseamless,activityafteractivity,taskaftertask.Anactivityhandlesaparticulartypeofcontent(data)andacceptsasetofrelateduseractions.Eachactivityhasalifecyclethatisindependentoftheotheractivitiesinitsapplicationortask—eachactivityislaunched(started)independently,andtheuserorsystemcanstart,run,pause,resume,stopandrestartitasneeded.Becauseofthisindependence,activitiescanbere-usedandreplacedbyotheractivitiesinavarietyofways.Anactivityisthemostprominentoffourcomponentsofanapplication.Theothercomponentsareservice,contentproviderandbroadcastreceiver.ActivityStackAstheusermovesfromactivitytoactivity,acrossapplications,theAndroidsystemkeepsalinearnavigationhistoryofactivitiestheuserhasvisited.Thisistheactivitystack,alsoknownasthebackstack.Ingeneral,whenauserstartsanewactivity,itisaddedtotheactivitystack,sothatpressingBACKdisplaysthepreviousactivityonthestack.However,theusercannotusetheBACKkeytogobackfurtherthanthelastvisittoHome.Theaddingofanactivitytothecurrentstackhappenswhetherornotthatactivitybeginsanewtask(aslongasthattaskwasstartedwithoutgoingHome),sogoingbackcanlettheusergobacktoactivitiesinprevioustasks.TheusercangettotasksearlierthanthemostrecentHomebyselectingitsrootactivityfromtheapplicationlauncher,ashortcut,orthe"Recenttasks"screen.Activitiesaretheonlythingsthatcanbeaddedtotheactivitystack—views,windows,menus,anddialogscannot.Thatis,whendesigningthenavigation,ifyouhavescreenAandyouwanttheusertobeablegotoasubsequentscreenBandthenusetheBACKkeytogobacktoscreenA,thenthescreenAneedstobeimplementedasanactivity.TheoneexceptiontothisruleisifyourapplicationtakescontroloftheBACKkeyandmanagesthenavigationitself.TasksAtaskisthesequenceofactivitiestheuserfollowstoaccomplishanobjective,regardlessofwhichapplicationstheactivitiesbelongto.Untilanewtaskisexplicitlyspecified(see"InterruptingtheTask"),allactivitiestheuserstartsareconsideredtobepartofthecurrenttask.It'snotablethattheseactivitiescanbeinanyapplication—thatis,allinthesameapplicationorindifferentones.Thatis,ataskthatstartsoutincontactscancontinue,bychoosinganemailaddress,toanemailactivityandthen,byattachingafile,toapicturegallerytopickfrom.Contacts,emailandpicturegalleryareallseparateapplications.Theactivitythatstartsataskiscalledtherootactivity.Itisoften,butnotnecessarily,startedfromtheapplicationlauncher,Homescreenshortcutor"Recenttasks"switcher(alongpressonHomeonsomedevices).Theusercanreturntoataskbychoosingtheiconforitsrootactivitythesamewaytheystartedthetask.Onceinsideatask,theBACKkeygoestopreviousactivitiesinthattask.Theactivitystackismadeupofoneormoretasks.Herearesomeexamplesoftasks:SendatextmessagewithanattachmentViewaYouTubevideoandshareitbyemailwithsomeoneelseInterruptingtheTask-Animportantpropertyofataskisthattheusercaninterruptwhatthey'redoing(theirtask)toperformadifferenttask,thenareabletoreturntowheretheyleftofftocompletetheoriginaltask.Theideaisthatuserscanrunmultipletaskssimultaneouslyandswitchbetweenthem.Therearetwoprimarywaystojumpofftothatothertask—inbothcasestheusershouldbeabletoreturntowheretheywerebeforetheinterruption:Userisinterruptedbyanotification–anotificationappearsandtheuserwantstoactonitUserdecidingtoperformanothertask–userjustpressesHomeandstartsanapplicationOfcourse,thereareexceptionstotherules.Beyondthetwowaysjustmentioned,thereisathirdwaytostartatask,andthatisbystartinganactivitythatdefinesitselfasanewtask.MapsandBrowseraretwoapplicationsthatdothis.Forexample,choosinganad
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 戲劇演出市場細(xì)分-深度研究
- 度假村產(chǎn)業(yè)鏈優(yōu)化升級-深度研究
- 數(shù)據(jù)安全態(tài)勢感知-深度研究
- 2025年廣西國際商務(wù)職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試近5年??及鎱⒖碱}庫含答案解析
- 2025年廣安職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試近5年??及鎱⒖碱}庫含答案解析
- 產(chǎn)業(yè)協(xié)同發(fā)展策略-深度研究
- 2025年廣東工程職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試近5年??及鎱⒖碱}庫含答案解析
- 2025年度拆除工程施工人員培訓(xùn)合同模板4篇
- 2025年山西青年職業(yè)學(xué)院高職單招數(shù)學(xué)歷年(2016-2024)頻考點(diǎn)試題含答案解析
- 2025年度食品加工廠蟲鼠害控制與食品安全保障合同4篇
- 洗浴部前臺收銀員崗位職責(zé)
- 2024年輔警考試公基常識300題(附解析)
- GB/T 43650-2024野生動物及其制品DNA物種鑒定技術(shù)規(guī)程
- 暴發(fā)性心肌炎查房
- 口腔醫(yī)學(xué)中的人工智能應(yīng)用培訓(xùn)課件
- 工程質(zhì)保金返還審批單
- 【可行性報(bào)告】2023年電動自行車項(xiàng)目可行性研究分析報(bào)告
- 五月天歌詞全集
- 商品退換貨申請表模板
- 實(shí)習(xí)單位鑒定表(模板)
- 數(shù)字媒體應(yīng)用技術(shù)專業(yè)調(diào)研方案
評論
0/150
提交評論