基于Android的抓老鼠游戲論文_第1頁
基于Android的抓老鼠游戲論文_第2頁
基于Android的抓老鼠游戲論文_第3頁
基于Android的抓老鼠游戲論文_第4頁
基于Android的抓老鼠游戲論文_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、.1基于Android的“抓住小老鼠游戲開發(fā)電子與信息工程學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)5王星指導(dǎo)教師:少卡【摘要】如今隨著智能手機(jī)的快速普及,智能手機(jī)操作系統(tǒng)市場(chǎng)變的越來越受歡迎, Android操作系統(tǒng)更是以83.6%的市場(chǎng)占有率穩(wěn)居移動(dòng)操作系統(tǒng)市場(chǎng)之首。因此,在未來的一段時(shí)間,基于Android操作系統(tǒng)的應(yīng)用軟件將仍具有廣闊的開展前景。本設(shè)計(jì)是一款?yuàn)蕵返囊嬷穷愑螒?,采用面向?qū)ο蟮脑O(shè)計(jì)模式,利用Android技術(shù)進(jìn)展開發(fā)。游戲主要有設(shè)置音效、分享應(yīng)用、進(jìn)展游戲、查看排行榜、新手入門等功能。相比傳統(tǒng)游戲,游戲玩法新穎,界面美觀,更具趣味性?!娟P(guān)鍵詞】Android;游戲;APP目錄 TOC o 1

2、-3 h z u HYPERLINK l _Toc4500716541.背景與意義 PAGEREF _Toc450071654 h 1HYPERLINK l _Toc4500716551.1.游戲開發(fā)背景 PAGEREF _Toc450071655 h 1HYPERLINK l _Toc4500716561.1.1.游戲產(chǎn)業(yè)的開展 PAGEREF _Toc450071656 h 1HYPERLINK l _Toc4500716571.1.2.Android游戲的開展 PAGEREF _Toc450071657 h 1HYPERLINK l _Toc4500716581.2.游戲開發(fā)意義 PAG

3、EREF _Toc450071658 h 1HYPERLINK l _Toc4500716592.系統(tǒng)分析 PAGEREF _Toc450071659 h 2HYPERLINK l _Toc4500716602.1.可行性分析 PAGEREF _Toc450071660 h 2HYPERLINK l _Toc4500716612.2.需求分析 PAGEREF _Toc450071661 h 2HYPERLINK l _Toc4500716623.概要設(shè)計(jì) PAGEREF _Toc450071662 h 3HYPERLINK l _Toc4500716633.1.系統(tǒng)主流程圖設(shè)計(jì) PAGEREF

4、 _Toc450071663 h 3HYPERLINK l _Toc4500716643.2.功能模塊設(shè)計(jì) PAGEREF _Toc450071664 h 3 HYPERLINK l _Toc450071665 4.詳細(xì)設(shè)計(jì) PAGEREF _Toc450071665 h 4HYPERLINK l _Toc4500716664.1.文件構(gòu)造與用途 PAGEREF _Toc450071666 h 4HYPERLINK l _Toc4500716674.2.游戲主要類分析與設(shè)計(jì) PAGEREF _Toc450071667 h 6HYPERLINK l _Toc4500716684.2.1.主界面

5、PAGEREF _Toc450071668 h 6HYPERLINK l _Toc4500716694.2.2.游戲界面 PAGEREF _Toc450071669 h 7HYPERLINK l _Toc4500716704.2.3.幫助界面 PAGEREF _Toc450071670 h 10 HYPERLINK l _Toc450071671 類和record界面 PAGEREF _Toc450071671 h 10HYPERLINK l _Toc4500716724.2.5.PlayMusic類 PAGEREF _Toc450071672 h 12HYPERLINK l _Toc4500

6、716735.系統(tǒng)測(cè)試 PAGEREF _Toc450071673 h 12HYPERLINK l _Toc4500716745.1.系統(tǒng)開發(fā)工具及運(yùn)行測(cè)試環(huán)境 PAGEREF _Toc450071674 h 12HYPERLINK l _Toc4500716755.2.系統(tǒng)測(cè)試結(jié)果及運(yùn)行截圖 PAGEREF _Toc450071675 h 12 HYPERLINK l _Toc450071676 6.總結(jié)與展望 PAGEREF _Toc450071676 h 14HYPERLINK l _Toc4500716776.1.系統(tǒng)總結(jié) PAGEREF _Toc450071677 h 14HYPER

7、LINK l _Toc4500716786.2.系統(tǒng)展望 PAGEREF _Toc450071678 h 14HYPERLINK l _Toc450071679致 PAGEREF _Toc450071679 h 15HYPERLINK l _Toc450071680參考文獻(xiàn) PAGEREF _Toc450071680 h 15.1背景與意義游戲開發(fā)背景游戲產(chǎn)業(yè)的開展游戲產(chǎn)業(yè)作為文化產(chǎn)業(yè)的一局部,屬于我國新興的高新技術(shù)產(chǎn)業(yè)之一。游戲產(chǎn)業(yè)本身雖然屬于互動(dòng)數(shù)字容產(chǎn)業(yè)也屬于休閑產(chǎn)業(yè),同時(shí)又是一個(gè)橫跨互聯(lián)網(wǎng)、計(jì)算機(jī)、軟件、消費(fèi)電子等諸多領(lǐng)域的綜合體。游戲產(chǎn)業(yè)的滲透力巨大,影響著相當(dāng)多的相關(guān)產(chǎn)業(yè)。國外的游

8、戲產(chǎn)業(yè)已日趨成熟,而中國的游戲產(chǎn)業(yè)又處于一個(gè)什么樣的階段呢.雖然目前我國游戲產(chǎn)業(yè)的開展仍會(huì)受到許多因素,例如行業(yè)自身的不成熟、國家在IT方面人才培養(yǎng)方案的不完善等等;但另一方面,“游戲這一概念已經(jīng)慢慢滲透到民眾的日常生活中,成為民眾無法擺脫的休閑活動(dòng)。例如現(xiàn)在在電腦客戶端最流行的“英雄聯(lián)盟,還有網(wǎng)頁版的一些游戲“傳奇霸業(yè),以及前段時(shí)間流行的手機(jī)端的“2048等等。即使是一些小游戲也不乏精品,像大名鼎鼎的TOM貓,操控簡單,但趣味性十足,充分利用了手機(jī)本身的特性,而且也注意到了通過手機(jī)聯(lián)系人實(shí)現(xiàn)的好友分享。凡此種種,相較傳統(tǒng)的J2ME游戲,無論是在表現(xiàn)力上,還是在開發(fā)效率、可移植性上,都對(duì)手機(jī)游

9、戲注入了新的理念,重要的是為用戶帶來了全方位的游戲體驗(yàn)。在可玩性和流行性上都占有優(yōu)勢(shì)地位。Android游戲的開展Android一詞的本義指“機(jī)器人,同時(shí)也是Google于2007年11月5日宣布的基于Linu*平臺(tái)的開源手機(jī)操作系統(tǒng)的名稱,該平臺(tái)由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組成。自從Android系統(tǒng)公布以來,開展迅速,版本也有最初的Android1.0更新至如今Android4.4,由于Android系統(tǒng)的開源,使得它成為了商界的寵兒,但是幾年以前,由于Android版本更新的速度過快,導(dǎo)致存在兼容性的問題,因此沒有得到大牌游戲廠商的快速跟進(jìn),但隨著Android版本的穩(wěn)定以及游

10、戲產(chǎn)業(yè)的蓬勃開展,Gameloft、Gamevil、EA等大牌廠商開場(chǎng)進(jìn)入Android平臺(tái),帶來了高端的游戲體驗(yàn),同時(shí),各個(gè)游戲廠家也正在積極的研發(fā)基于Android平臺(tái)的游戲手機(jī)。無論是軟件還是硬件,種種跡象說明,Android平臺(tái)的游戲正在進(jìn)入快速的開展時(shí)期。移動(dòng)設(shè)備的隨身性使是休閑小游戲?qū)⒌玫娇焖俚拈_展。移動(dòng)設(shè)備對(duì)分散時(shí)間的利用促進(jìn)了游戲向時(shí)間片化開展,即一個(gè)游戲可以隨時(shí)開場(chǎng),隨時(shí)完畢,充分利用用戶分散的時(shí)間片來運(yùn)行。即使在其他家用電子設(shè)備上,休閑類的小游戲也可以為以家庭為單位的用戶帶來更多的樂趣,相信不久的將來,游戲可能成為推動(dòng)手機(jī)硬件性能提升的主要?jiǎng)恿Γ矔?huì)是手機(jī)娛樂特性最好的表達(dá)

11、之一。游戲開發(fā)意義現(xiàn)今,各種大大小小的Android游戲都十分流行,按容大概可分為:角色扮演類、搏斗類、冒險(xiǎn)類、體育競(jìng)技類、棋牌類、電影改版類、益智類、模擬類等等。但是傳統(tǒng)游戲創(chuàng)意的匱乏,大多游戲都只是一味的跟風(fēng),看到*個(gè)游戲成功贏得市場(chǎng),便改換場(chǎng)景風(fēng)格,人物造型、故事背景等,其游戲核心一沉不變的思維理念會(huì)使得玩家產(chǎn)生審美疲勞。此次設(shè)計(jì)屬于益智類單機(jī)游戲,能夠在任何環(huán)境、任何時(shí)間娛樂心身、放松心情。此外,在開發(fā)過程中也會(huì)遇到各種技術(shù)性的問題,比方開發(fā)環(huán)境的搭建,各種Android版本的兼容問題等等,通過實(shí)際動(dòng)手開發(fā)本游戲,可以在實(shí)踐當(dāng)中充分的理解和掌握相關(guān)技術(shù)的使用。系統(tǒng)分析可行性分析從“俄羅

12、期方塊到“貪吃蛇,從“2048到“神廟逃亡,再到“消消樂,隨著科技的進(jìn)步,游戲也不局限與游戲機(jī),手機(jī)的普及,使得手機(jī)游戲得以推廣,再加之快節(jié)奏,壓力大的生活,讓人們對(duì)于手機(jī)游戲情有獨(dú)鐘。從游戲的種類來講,越來越豐富,從游戲的創(chuàng)新性、可玩性來講,也更新穎,更有趣,更好玩。本游戲設(shè)計(jì)新穎,玩法簡單,易操作,相信能被群眾承受,得到眾多玩家的認(rèn)同。下面從三方面分析其可行性:技術(shù)可行性:本游戲是采用Eclipse加ADT,加Android SDK進(jìn)展開發(fā),是當(dāng)下比較流行的Android app集成開發(fā)環(huán)境,雖然Google公司最新公布了專業(yè)用于Android app開發(fā)的IDEAndroid Studi

13、o,但是因?yàn)樵撥浖€不穩(wěn)定,所以暫時(shí)不用它。此外,本人在之前有學(xué)習(xí)Android app開發(fā),其中涉及的Android四大組件:activity、service、content provider、broadcast receiver;五大布局: LinearLayout 線性布局,F(xiàn)rameLayout框架布局,AbsoluteLayout絕對(duì)布局,RelativeLayout相對(duì)布局,TableLayout表格布局等根本技術(shù)都比較了解,完全有能力獨(dú)立開發(fā)本游戲。經(jīng)濟(jì)可行性:鑒于本游戲只是用作本人的畢業(yè)設(shè)計(jì),本人目前并不具備企業(yè)級(jí)工程開發(fā)經(jīng)歷,系統(tǒng)的整體UI設(shè)計(jì)和邏輯功能還有待完善,本工程并不

14、能真正用作上線產(chǎn)品,經(jīng)濟(jì)效益不作為重點(diǎn)分析。如果游戲發(fā)布之后,用戶較多,可以開發(fā)后續(xù)版本,拓展游戲模塊,想商業(yè)化開展,在游戲過植入廣告等方式或得經(jīng)濟(jì)效益。操作可行性:本游戲界面簡潔美觀,游戲界面采用SurfaceView控件,反響靈敏,延時(shí)較短,操作簡單,容易上手,兼容Android2.3及以上版本。需求分析本游戲是一個(gè)簡單的益智類游戲,與以往的2048、消消樂等小游戲類似,旨在讓玩家在游戲過程中,感覺到游戲的創(chuàng)新性,可玩性,放松心情,愉悅身心。游戲容及其根本規(guī)則如下:在一個(gè)10*10的圓形矩陣中,100個(gè)圓被著色,其中15個(gè)橙色的圓,代表路障,隨機(jī)著色;位于中心的圓著色為紅色,代表唯一可移動(dòng)

15、的圓,剩下的圓著灰色,灰色代表非路障。奇數(shù)行和偶數(shù)行的圓交織排列,相差半個(gè)圓的位置。這樣紅色的圓可以向六個(gè)方向移動(dòng)。每次只能移動(dòng)相鄰位置,且只能移動(dòng)一步。點(diǎn)擊灰色圓,使其顏色變?yōu)槌壬蔀槁氛?,通過這種方式將紅色圓的六個(gè)方向都設(shè)置為路障,玩家即可獲得勝利。假設(shè)在(3) 之前,紅色圓移動(dòng)到了整個(gè)圓形矩陣邊緣,則玩家輸。游戲整體的設(shè)想如以下描述:啟動(dòng)游戲后會(huì)有一個(gè)動(dòng)畫,動(dòng)畫完畢后會(huì)有一個(gè)簡單的總頁面,上面有四個(gè)按鈕和一個(gè)checkbo*控件,四個(gè)按鈕分別實(shí)現(xiàn)四個(gè)功能,分別是:點(diǎn)擊第一個(gè)按鈕,進(jìn)入游戲主界面。點(diǎn)擊第二個(gè)按鈕,顯示歷史排行榜。點(diǎn)擊第三個(gè)按鈕,實(shí)現(xiàn)分享功能。點(diǎn)擊第四個(gè)按鈕,幫助按鈕,講解

16、游戲規(guī)則。另外的一個(gè)checkbo*控件用來控制游戲中是否有音效效果。從上面的描述中可以根本了解軟件的功能需求:設(shè)計(jì)兩個(gè)主要的Activity頁面,一個(gè)是游戲界面,用于游戲;一個(gè)是主界面,用來與用戶交互。將用戶的成績保存在本地,游戲完畢時(shí),用來與本地成績比照,更新排行榜。如果用戶覺得游戲比較有趣,可以通過一鍵分享該應(yīng)用的下載地址。要另外設(shè)置一個(gè)Activity界面,用來講解游戲的規(guī)則。準(zhǔn)備音效的素材,并且在游戲中玩家可以設(shè)置是否有音效。概要設(shè)計(jì)系統(tǒng)主流程圖設(shè)計(jì)本游戲整體實(shí)現(xiàn)的流程圖如圖3-1所示:運(yùn)行游戲進(jìn)入游戲主界面開場(chǎng)游戲查看成績分享應(yīng)用查看幫助設(shè)置音效返回圖3-1系統(tǒng)主流程圖功能模塊設(shè)計(jì)

17、本游戲的主要功能模塊分為兩大模塊,即游戲模塊和其它模塊。具體詳情如圖3-2所示:顯示得分游戲模塊抓住小老鼠游戲其它模塊進(jìn)展游戲查看幫助更新記錄分享應(yīng)用音效設(shè)置圖3-2系統(tǒng)功能模塊圖游戲模塊:游戲模塊分為兩個(gè)局部,一個(gè)局部是用來及時(shí)更新用戶成績的,記錄用戶在每一次操作后所用的步數(shù),將其同步顯示到游戲界面上;再一局部便是用戶參與人機(jī)交互的主游戲界面,直接參與游戲。游戲成功會(huì)將成績與過往記錄比照,跟新記錄。失敗彈出窗口,提示重新開場(chǎng)游戲或退出。其它模塊:其它模塊主要包括四個(gè)功能:查看幫助:對(duì)于第一次接觸本游戲系統(tǒng)的人,對(duì)于游戲的規(guī)則和主義事項(xiàng)不是很了解,可以通過這個(gè)功能查看幫助,只需要在游戲主界面點(diǎn)

18、擊帶有問號(hào)的按鈕即可。更新記錄:系統(tǒng)對(duì)于用戶的最好成績會(huì)記錄下來,所以在每次游戲成功之后,會(huì)將最新的成績與過往的成績比較,如果最新的成績好,則會(huì)替換過往成績,假設(shè)游戲失敗則不進(jìn)展游戲最好成績記錄的更新,對(duì)于還沒進(jìn)展游戲的玩家,直接查看記錄,會(huì)提示“還未進(jìn)展游戲,請(qǐng)先進(jìn)展游!分享應(yīng)用:假設(shè)玩家想和好友分享這款游戲,可以通過分享功能將該游戲應(yīng)用的下載地址通過一些主流的社交媒體,比方QQ,微信,微博等分享出去。音效設(shè)置:為了增加游戲的趣味性,游戲中增加了音效,不過同時(shí)考慮到用戶體驗(yàn),也增加了選項(xiàng),用戶可以自己選擇是否在游戲總有音效。詳細(xì)設(shè)計(jì)文件構(gòu)造與用途圖4-1應(yīng)用程序文件構(gòu)造圖在程序開發(fā)階段,首先

19、確定“基于Android的抓住小老鼠游戲的工程名為mouse,因?yàn)槭且载堊嚼鲜蟮墓适聻檩d體,所以取這個(gè)名稱,據(jù)程序模塊設(shè)計(jì)的容,建立mouse工程。mouse工程源代碼的構(gòu)造如上圖4-1所示。下面對(duì)文件名稱及其作用做具體說明。首先是src目錄,Android的源碼,所有的java文件都保存這個(gè)目錄下,每個(gè)文件的功能如表4-1所示。表4-1 mouse工程源碼文件用途說明包 名 稱文 件 名說 明.e*ample.fontte*tview_one.java自定義的一個(gè)te*tview控件.e*ample.fontte*tview.java自定義的一個(gè)te*tview控件.e*ample.mous

20、eDot.java定義每個(gè)圓的屬性和方法.e*ample.mouseGame.java游戲界面的Activity.e*ample.mouseHelp.java幫助界面的Activity.e*ample.mouseMain.java系統(tǒng)主界面的Activity.e*ample.mousePlayground.java自定義的SurfaceView控件,被游戲界面的activity調(diào)用。.e*ample.mouseRecord.java顯示以往玩家的最好成績。.e*ample.musicPlayMusic.java用來播放音樂,設(shè)置音效。Android的資源文件都保存在/res的子目錄中,并且為每

21、個(gè)資源分配一個(gè)唯一的資源ID,將資源ID和文件名按靜態(tài)變量的方式一一對(duì)應(yīng),生成R.java文件,保存在/mouse/gen/目錄下的.e*ample.mouse包中,供編程時(shí)調(diào)用。其中、/res/anim目錄中保存的是產(chǎn)生動(dòng)畫效果的*ML文件,/res/drawable/目錄中保存的是圖像文件,/res/values目錄中保存的是用來自定義字符串和顏色的文件,/res/*ml目錄中保存的是*ML格式的數(shù)據(jù)文件,/res/raw目錄中保存存放通用的文件,不會(huì)被編譯成二進(jìn)制文件,按原樣復(fù)制到設(shè)備上,本游戲中存放的是音樂文件。具體每個(gè)資源文件的用途可以參看表4-2:表4-2 mouse工程資源源碼文

22、件用途說明資源目錄文 件 名說 明animslide_from_bottom.*ml畫面從底部彈出動(dòng)畫效果從上至下slide_out_bottom.*ml畫面從底部淡出動(dòng)畫效果從下至上drawable-mdpiaccess.png access1.png access_button.*ml進(jìn)入游戲、查看排行榜、進(jìn)入幫助頁面、分享應(yīng)用這四個(gè)按鈕和設(shè)置音效一個(gè)checkbo*五個(gè)控件的背景圖片和動(dòng)畫判斷是否或得焦點(diǎn)介紹游戲規(guī)則的圖片rank .png rank1 .pngrank_button.*mlhelp.png help1.pnghelp_button.*mlshare .png share

23、1 .pngshare_button.*mlmusic.png music1.pngmusic_button.*ml介紹游戲規(guī)則的圖片layoutmain.*ml主界面布局文件game.*ml游戲界面的布局文件help.*ml幫助界面的布局文件record.*ml顯示記錄的界面布局文件item01.*ml item02.*ml item03.*ml在介紹游戲規(guī)則時(shí),幫助界面的適配器加載事需使用的界面布局文件。rawfail.ogg游戲失敗時(shí)播放init.mp3重新開場(chǎng)游戲時(shí)播放move.wav每點(diǎn)擊一次屏幕播放win.wav游戲取得勝利時(shí)播放valuesdimens.*ml設(shè)置手機(jī)屏幕marg

24、in大小strings.*ml保存字符串的*ML的文件,用于國際化。styles.*ml設(shè)置游戲根本的風(fēng)格。fontgim.ttf字體,用于自定義的控件te*tview中nom.TTCAndroidManifest.*ml配置應(yīng)用權(quán)限和activity游戲主要類分析與設(shè)計(jì)主界面Main.java主界面類,繼承自activity,實(shí)現(xiàn)了OnClickListener和OnCheckedChangeListener兩個(gè)接口,引用的布局文件是main.*ml,主要實(shí)現(xiàn)的功能是分兩個(gè):展示開場(chǎng)游戲時(shí)的動(dòng)畫。首先設(shè)置首頁所有控件默認(rèn)為不可見,然后通過系統(tǒng)API獲得一個(gè)AlphaAnimation對(duì)象,該

25、對(duì)象是設(shè)置淡入淡出動(dòng)畫的對(duì)象,接著通過findViewById(R.id.load_image)的方法獲得首頁圖片loadView,將圖片和動(dòng)畫綁定起來,并且為該動(dòng)畫設(shè)置監(jiān)聽器,監(jiān)聽動(dòng)畫完畢,當(dāng)動(dòng)畫完畢時(shí),再將首頁所有控件設(shè)置為可見。這樣就實(shí)現(xiàn)了進(jìn)入應(yīng)用時(shí)的動(dòng)畫效果。圖4-2設(shè)置首頁控件不可見得到動(dòng)畫對(duì)象得到圖片對(duì)象綁定設(shè)置動(dòng)畫監(jiān)聽器設(shè)置首頁控件可見事件發(fā)生圖4-2 首頁動(dòng)畫實(shí)現(xiàn)流程圖局部核心代碼如下:/ 得到加載動(dòng)畫控件loadView = (ImageView) findViewById(R.id.load_image);/ 設(shè)置透明動(dòng)畫的漸變效果AlphaAnimation animat

26、ion = new AlphaAnimation(0.2f, 1.0f);/ 設(shè)置動(dòng)畫的時(shí)間animation.setDuration(1000);/ 關(guān)聯(lián)組件和動(dòng)畫loadView.setAnimation(animation);在動(dòng)畫完畢的時(shí)候,將進(jìn)入游戲,設(shè)置音效,查看成績,分享應(yīng)用,查看幫助五個(gè)功能的入口集成在一個(gè)界面上,為他們分別設(shè)置監(jiān)聽器。監(jiān)聽事件發(fā)生,觸發(fā)對(duì)用事件,實(shí)現(xiàn)對(duì)應(yīng)的功能。首先通過findViewById(R.id)獲得首頁的五個(gè)控件,分別是四個(gè)button和一個(gè)checkbo*,然后為他們綁定點(diǎn)擊監(jiān)聽事件和選項(xiàng)改變時(shí)的監(jiān)聽事件,當(dāng)相應(yīng)的事件發(fā)生,觸發(fā)相應(yīng)操作。圖4-3獲

27、得控件點(diǎn)擊選項(xiàng)監(jiān)聽有音效無音效點(diǎn)擊監(jiān)聽查看記錄進(jìn)入游戲查看幫助分享應(yīng)用music_cbrank_btlogin_bthelp_btshare_bt是否勾選圖4-3首頁功能實(shí)現(xiàn)流程圖局部核心代碼如下:publicvoid onAnimationEnd(Animation animation) / TODO Auto-generated method stub/ 設(shè)置開場(chǎng)按鈕的監(jiān)聽器login_bt = (ImageButton) findViewById(R.id.login_bt);login_bt.setVisibility(1);login_bt.setOnClickListener(Ma

28、in.this);/ 設(shè)置排行榜按鈕、幫助按鈕、分享按鈕的監(jiān)聽器./ 設(shè)置CheckBo* 監(jiān)聽器music_cb = (CheckBo*) findViewById(R.id.music_cb);music_cb.setVisibility(1);music_cb.setOnCheckedChangeListener(Main.this);String music_set = sp.getString(music_set, on);if (music_set.equals(on) music_cb.setChecked(true); else music_cb.setChecked(fals

29、e);游戲界面Game.java游戲界面類,同樣繼承自activity,引用的布局文件是game.*ml,布局文件中有兩個(gè)控件,一個(gè)是te*tview,用來實(shí)時(shí)展示玩家游戲所用步數(shù),另外的一個(gè)控件Playground是自定義的,繼承自surfaceview,這個(gè)控件尤其重要,因?yàn)樗械挠螒蜻壿嫸级x在了這個(gè)控件中。游戲界面也是有兩個(gè)功能:展示玩家成績,即花了幾步圍住了小老鼠。展示成績的功能涉及到兩個(gè)類,一個(gè)是Game.java,另外一個(gè)是Playground.java。首相將Game.java設(shè)計(jì)成一個(gè)單態(tài)模式的類,對(duì)外提供靜態(tài)的getGame()方法,這樣為外界提供該類唯一的一個(gè)實(shí)例,確保成

30、績顯示的正確;顯示游戲得分的控件te*tview取名為score_tv,顯示得分的方法showScore(String te*t)放在Game.java中,在得到Game類的實(shí)例之后,便可以調(diào)用該方法;在Playground類中有個(gè)move()方法,會(huì)調(diào)用onTouch()方法,每次觸摸屏幕,紅色圓就會(huì)移動(dòng)一步,計(jì)數(shù)器step就會(huì)加1,然后調(diào)用個(gè)getGame().showScore(step);便可以把成績顯示在屏幕上。圖4-4調(diào)用showScore(step) te*t)getGame()Game類onTouch()move()step+Playground類包含調(diào)用包含調(diào)用圖4-4展示成

31、績功能實(shí)現(xiàn)流程圖局部核心代碼如下:/用來展示分?jǐn)?shù)的tvprivate Te*tView score_tv = null;Overrideprotectedvoid onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.game);playground = (Playground)findViewById(R.id.playground);score_tv = (Te*tView) findViewById(R.id.score_tv); /展示分?jǐn)?shù),在pla

32、yground控件中調(diào)用publicvoidshowScore(String te*t) score_tv.setTe*t(te*t);實(shí)現(xiàn)游戲主要邏輯。游戲的邏輯全部定義在playground控件中,其中主要的變量及其方法的功能用途,請(qǐng)參看表4-3:表4-3 mouse工程surface控件詳解變量名或方法名說 明public Playground(Conte*t conte*t, AttributeSet attrs)Playground構(gòu)造方法public void initGame()初始化游戲public void redraw()重新繪制游戲界面public boolean onT

33、ouch(View arg0, MotionEvent e)實(shí)現(xiàn)監(jiān)聽事件接口private void MoveTo(Dot one)紅色圓移動(dòng)之后的處理private void move()紅色圓移動(dòng)的方法核心private Dot getNeighbour(Dot one, int dir)得到相鄰留個(gè)方向的圓private int getDistance(Dot one, int dir)返回固定方向的距離大小private boolean isAtEdge(Dot d)判斷紅色圓是否移動(dòng)到邊界private void lose()游戲失敗private void win()游戲勝利pri

34、vate void record(int step)判斷是否破紀(jì)錄private Dot matri*1010 = null記錄點(diǎn)陣private Dot mouse = null老鼠紅色圓private static int step = 0記錄游戲所用步數(shù)游戲開場(chǎng),在構(gòu)造方法Playground(Conte*t conte*t, AttributeSet attrs)中調(diào)用initGame(),初始化游戲界面;然后為Playground()類設(shè)置OnTouchListener監(jiān)聽器,實(shí)現(xiàn)該接口里面的OnTouch()方法;當(dāng)點(diǎn)擊屏幕時(shí),在判斷點(diǎn)擊位置后,調(diào)用move()方法,移動(dòng)“小老鼠的

35、位置,對(duì)于“小老鼠下一步朝哪個(gè)方向移動(dòng),便是本游戲的核心算法,也是重點(diǎn)和難點(diǎn):eq oac(,1)首先通過調(diào)用getDistance(Dot one, int dir)方法,得到“小老鼠六個(gè)方向中距離最近的可用路徑。如果六個(gè)方向距離都為-1,則表示周圍全是路障,游戲勝利,調(diào)用win()方法,在該方法中會(huì)調(diào)用record()來判斷是否要更新最好成績。eq oac(,2)然后調(diào)用Dot getNeighbour(Dot one, int dir)方法,得到距離最近那條路徑上,與“小老鼠相鄰的那個(gè)圓,設(shè)置它的狀態(tài)為紅色,表示移動(dòng)到此處。eq oac(,3)移動(dòng)之后調(diào)用redraw()重新繪制游戲界面

36、,并且調(diào)用isAtEdge(Dot d)方法,判斷“小老鼠是否移動(dòng)到了點(diǎn)陣Dot matri*1010的邊界處,如果是,調(diào)用lose()方法,如果不是,則繼續(xù)eq oac(,1)。參見圖4-5是初始化游戲initGame ()點(diǎn)擊屏幕,觸發(fā)點(diǎn)擊事件小老鼠移動(dòng) move()距離都為-1getDistance()游戲勝利win()移動(dòng)getNeighbour()計(jì)算六個(gè)方向的距離朝六個(gè)方向中最短距離移動(dòng)重繪界面redraw()是否游戲失敗lose()否已經(jīng)到邊界isAtEdge()圖4-5游戲邏輯實(shí)現(xiàn)流程圖幫助界面Help.java幫助界面類,繼承自activity,引用的布局文件是help.*m

37、l,里面只有一個(gè)控件ViewPager,該空間可以利用適配器裝載多界面,實(shí)現(xiàn)滑動(dòng)切換的想過。本界面實(shí)現(xiàn)的功能只有一個(gè),就是利用滾動(dòng)的圖片介紹游戲的規(guī)則。首先通過資源id獲得需要展示的三圖片view1、view2、view3,并且將他們存儲(chǔ)在一個(gè)數(shù)組列表ArrayList里面,然后在加載頁面是通過PagerAdapter適配器中的getCount()方法獲得所需當(dāng)前窗體界面數(shù),然后將ViewPager控件和適配器綁定,即可實(shí)現(xiàn)三個(gè)界面的滑動(dòng)。圖4-6綁定適配器PagerAdapter顯示成功ViewPager裝載裝入數(shù)組View1View1View1ArrayList適配圖4-6幫助界面實(shí)現(xiàn)流程

38、圖局部核心代碼如下:/ 查找布局文件用LayoutInflater.inflateLayoutInflater inflater = getLayoutInflater();/ 將view裝入數(shù)組pageview = new ArrayList();pageview.add(view1);pageview.add(view2);pageview.add(view3);/ 數(shù)據(jù)適配器PagerAdapter mPagerAdapter = new PagerAdapter() / 獲取所需當(dāng)前窗體界面數(shù)publicint getCount() / TODO Auto-generated meth

39、od stubreturnpageview.size();/ 綁定適配器viewPager.setAdapter(mPagerAdapter);SharedPreferences類和record界面在Android中提供了文件,SQLite、還有Content provider等對(duì)數(shù)據(jù)的處理方式,因?yàn)楸居螒蛳到y(tǒng)是簡單的單機(jī)游戲,除了音效設(shè)置和最高紀(jì)錄需要保存外,并沒有其余數(shù)據(jù)需要保存,所以沒有必要用數(shù)據(jù)庫,這里我們用Android API提供給我們的一個(gè)類叫SharedPreferences,相比以上三種,它的存取性能更加優(yōu)化,也更加方便,對(duì)于類似參數(shù)的數(shù)據(jù)是首選。對(duì)于SharedPrefer

40、ences的操作,首先通過上下文content調(diào)用函數(shù)getSharedPreferences(name, mode)來獲得SharedPreferences,第一個(gè)參數(shù)是文件名,第二個(gè)參數(shù)是模式,得到SharedPreferences后,再調(diào)用.edit()方法,得到SharedPreferences編輯器,便可以調(diào)用putString等方法向里面寫入數(shù)據(jù)了,數(shù)據(jù)以鍵值對(duì)的方式保存,寫入數(shù)據(jù)后,必須調(diào)用editor.mit()方法,寫入的數(shù)據(jù)才可以提交上去,類似數(shù)據(jù)庫。取數(shù)據(jù)時(shí),調(diào)用getString等對(duì)應(yīng)方法。核心代碼如下publicSharedPreferencessp = null;/

41、 得到SharedPreferences,命名為configsp = getSharedPreferences(config, Conte*t.MODE_PRIVATE);/ 利用Editor向sp中寫入數(shù)據(jù)/ 得到sharedpreferces編輯器;Editor editor = sp.edit();if (isChecked) / 將選中狀態(tài)寫入sharedpreference。設(shè)置music = on;editor.putString(music_set, on);/ 類似于事務(wù) ,保證所有參數(shù)同時(shí)提交editor.mit(); else editor.putString(music_

42、set, off);editor.mit();Record.java查看成績界面,繼承自activity,引用的控件很簡單是只有一個(gè)te*tview,為了讓界面美觀些,重寫了te*tview控件,將它的字體換成了自己預(yù)先存放在/assert/font目錄下的gim.ttf,顯示的數(shù)據(jù)是從上文中提到的SharedPreferences中取出來的。圖4-7顯示記錄record.*ml界面跳轉(zhuǎn)查詢記錄從SharedPreferences點(diǎn)擊查看成績按鈕否是否有記錄是提示暫無記錄圖4-7 記錄界面實(shí)現(xiàn)流程圖record.*ml局部代碼如下PlayMusic類該類主要用于加載音樂,播放音樂,里面有ini

43、tSoundPool()和play(int sound, int loop)兩個(gè)方法,前者用來初始化音樂池,后者用來播放音樂。局部核心代碼如下/ ma*Stream : 該參數(shù)是定義最多能同時(shí)播放的多少音效 ,音頻類型,音頻質(zhì)量soundPool = new SoundPool(4, AudioManager.STREAM_MUSIC, 0);/ 加載音頻文件musicHashMap = new HashMap();musicHashMap.put(MUSIC_MOVE, soundPool.load(mConte*t, R.raw.move, 1);musicHashMap.put(MUSI

44、C_WIN, soundPool.load(mConte*t, R.raw.win, 1);musicHashMap.put(MUSIC_FAIL, soundPool.load(mConte*t, R.raw.fail, 1);musicHashMap.put(MUSIC_INIT, soundPool.load(mConte*t, R.raw.init, 1);/ 根據(jù)musicHashMap.get(sound)來獲取-利用load方法加載資源文件返回的id值currStreamId = soundPool.play(musicHashMap.get(sound), volume,vol

45、ume, 1, loop, 1.0f);系統(tǒng)測(cè)試系統(tǒng)開發(fā)工具及運(yùn)行測(cè)試環(huán)境開發(fā)工具:、ADT和Android SDK、Java開發(fā)工具包工程測(cè)試環(huán)境:小米2A;系統(tǒng)測(cè)試結(jié)果及運(yùn)行截圖至此已經(jīng)完成了mouse工程的代碼編寫工作,在這一章節(jié)對(duì)mouse工程進(jìn)展測(cè)試,結(jié)果如下:連接真機(jī)將小米手機(jī)通過數(shù)據(jù)線連接至電腦,同時(shí)勾選允許USB調(diào)試。翻開eclipse中的DDMS,重啟adb,即可將手機(jī)連接至電腦,進(jìn)展測(cè)試啟動(dòng)mouse應(yīng)用程序在工程名mouse上點(diǎn)右鍵,然后選擇“Run As,然后選擇“Android Application。手機(jī)上就會(huì)安裝該應(yīng)用。主界面測(cè)試:包括四個(gè)按鈕的動(dòng)畫和音效的設(shè)置都

46、正常,如圖5-1。圖5-1主界面測(cè)試圖游戲界面測(cè)試:包括初始化游戲界面,游戲輸和贏時(shí)的界面如圖5-2圖5-2游戲界面測(cè)試圖幫助界面的測(cè)試:三個(gè)頁面正常顯示,動(dòng)畫正常,畫面切換流暢 如圖5-3圖5-3幫助界面的測(cè)試分享界面和查看記錄界面的測(cè)試:記錄正常顯示,分享功能正常。 如圖5-4圖5-4分享界面和查看記錄界面測(cè)試圖總結(jié)與展望系統(tǒng)總結(jié)經(jīng)過數(shù)個(gè)月的努力,Android平臺(tái)的抓住小老鼠游戲終于完成了。首先就對(duì)于系統(tǒng)而言,整體畫面還是比較活潑鮮艷的,功能也根本比較齊全,比方實(shí)現(xiàn)了分享,查看規(guī)則,設(shè)置音效等等,尤其是在幫助界面利用ViewPager控件實(shí)現(xiàn)的滾動(dòng)效果,相對(duì)于用枯燥的文字描述,更加形象生

47、動(dòng),易于理解;此外,在游戲界面game.*ml中自定義的Playground繼承自SurfaceView,界面全部是畫筆繪制出來的,且不占用UI主線程,使得響應(yīng)時(shí)間變短,游戲變的流暢;還有對(duì)于常用的設(shè)置Android為我們提供了SharedPreference API用來儲(chǔ)存和共享,我們不需要像以前那樣單單獨(dú)己定義一個(gè)文件進(jìn)展存取,方便實(shí)用;而且游戲本身也十分有趣,符合當(dāng)下人們休閑誤樂的需求。就個(gè)人而言,通過本次畢業(yè)設(shè)計(jì),不僅穩(wěn)固了舊的知識(shí),比方Android環(huán)境的搭建、Intent、Activity、等等,也更加深入的了解了Android的設(shè)計(jì)模式和UI線程,也希望自己能多多實(shí)踐,在實(shí)踐中成

48、長,提高自己的編程意識(shí)和編程水平。系統(tǒng)展望雖然,這款游戲目前運(yùn)行良好,但是我認(rèn)為在代碼的強(qiáng)健性方面做的還不夠好,在整個(gè)工程的構(gòu)思方面也有些缺乏,使得代碼有些冗余、臃腫;此外,游戲的玩法比較單一,還需要豐富,下一步開發(fā)可能會(huì)著重于游戲環(huán)節(jié)的豐富性;并且,本系統(tǒng)是一款單機(jī)游戲,沒有聯(lián)網(wǎng),如果后期二次開發(fā)出的游戲比較豐富的話,可以考慮增加用戶注冊(cè)模塊,由單機(jī)版升級(jí)至聯(lián)網(wǎng)版;最后,如果游戲反響不錯(cuò),可以嘗試向網(wǎng)頁版,iOS系統(tǒng)等不同平臺(tái)推廣開發(fā),做成一個(gè)品牌。致本工程的圓滿完成很大程度上是依靠自己的堅(jiān)持不懈與努力的結(jié)果,但同時(shí)也少不了教師的指導(dǎo)和同學(xué)們的幫助。我要感很多人,因?yàn)檎窃谒麄兊膸椭?,我才可以順利的完成了畢業(yè)設(shè)計(jì)。首先,我要感我的指導(dǎo)教師,他是個(gè)很負(fù)責(zé)任的教師,他對(duì)我進(jìn)展了無私的指導(dǎo)和幫助,在作品設(shè)計(jì)上幫我理清了一些設(shè)計(jì)思路,在論文設(shè)計(jì)上有悉心的幫我進(jìn)展論文的修改。指導(dǎo)教師非常耐心、很負(fù)責(zé)地定期檢查畢業(yè)設(shè)計(jì)進(jìn)度,讓我們能夠如期完成任務(wù)。真心感我的指導(dǎo)教師。其次,我要感我的同學(xué),在我畢業(yè)設(shè)計(jì)制作過程中遇到困難時(shí),他們熱情幫助,給予我很多啟發(fā)和指導(dǎo)。我們相互探討,共同進(jìn)步,這真是一件很愉快又難忘的事情。再次,我要感學(xué)校的全體教師,感你們教給我專業(yè)知識(shí)和做人的道理。由于本人的學(xué)術(shù)水平暫時(shí)相對(duì)有限,因此所作的論文難免有缺乏之處,故此懇請(qǐng)各位教師和學(xué)友批評(píng)和指正并不吝賜教,最后再次感教

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論