![益智拼圖游戲設(shè)計(jì)畢業(yè)論文_第1頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-4/21/5e5fefa0-03b7-49c9-ba7a-40b5718e22d1/5e5fefa0-03b7-49c9-ba7a-40b5718e22d11.gif)
![益智拼圖游戲設(shè)計(jì)畢業(yè)論文_第2頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-4/21/5e5fefa0-03b7-49c9-ba7a-40b5718e22d1/5e5fefa0-03b7-49c9-ba7a-40b5718e22d12.gif)
![益智拼圖游戲設(shè)計(jì)畢業(yè)論文_第3頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-4/21/5e5fefa0-03b7-49c9-ba7a-40b5718e22d1/5e5fefa0-03b7-49c9-ba7a-40b5718e22d13.gif)
![益智拼圖游戲設(shè)計(jì)畢業(yè)論文_第4頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-4/21/5e5fefa0-03b7-49c9-ba7a-40b5718e22d1/5e5fefa0-03b7-49c9-ba7a-40b5718e22d14.gif)
![益智拼圖游戲設(shè)計(jì)畢業(yè)論文_第5頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-4/21/5e5fefa0-03b7-49c9-ba7a-40b5718e22d1/5e5fefa0-03b7-49c9-ba7a-40b5718e22d15.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、畢 業(yè) 論 文 設(shè)計(jì)(論文)題目: 基于android 益智拼圖游戲設(shè)計(jì) 學(xué)生姓名: 陳 斌 指導(dǎo)教師: 李莉 講師 二級(jí)學(xué)院: 信息技術(shù)學(xué)院 專業(yè): 計(jì)算機(jī)科學(xué)與技術(shù) 班級(jí):08計(jì)算機(jī)科學(xué)與技術(shù)(2) 學(xué)號(hào): 0805110219 提交日期: 2012年 04月 27日 答辯日期: 2012年 05月 12日金陵科技學(xué)院學(xué)士學(xué)位論文 目錄目 錄摘 要iiabstractiii1 緒 論11.1 課題開發(fā)的背景11.2 課題意義12 android架構(gòu)與開發(fā)平臺(tái)搭建22.1 android的系統(tǒng)架構(gòu)22.2 window下android開發(fā)環(huán)境的搭建43 流程介紹與概要設(shè)計(jì)53.1 游戲流程介
2、紹53.2 系統(tǒng)概要設(shè)計(jì)63.2.1 界面布局模塊63.2.2 難度選擇模塊63.2.3 圖片選擇模塊73.2.4 步數(shù)和時(shí)間模塊73.2.5 游戲?qū)崿F(xiàn)模塊74 系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)84.1 界面布局實(shí)現(xiàn)84.1.1 選擇界面布局84.1.2 游戲界面布局94.2 游戲功能實(shí)現(xiàn)114.2.1 難度選擇114.2.2 圖片選擇124.2.3 步數(shù)和時(shí)間設(shè)置134.2.4 拼圖的實(shí)現(xiàn)145 系統(tǒng)測(cè)試175.1 android仿真器介紹175.2 功能模塊測(cè)試175.3 出現(xiàn)的錯(cuò)誤及解決方案206 總結(jié)與展望21參考文獻(xiàn)22附 錄23致 謝33iv金陵科技學(xué)院學(xué)士學(xué)位論文 摘要基于android益智拼
3、圖游戲設(shè)計(jì)摘 要隨著移動(dòng)設(shè)備的日益普及,使用android技術(shù)開發(fā)手機(jī)軟件受到越來(lái)越多人的青睞。在此背景下,本課題開發(fā)了一款android平臺(tái)下的手機(jī)游戲益智拼圖。本文首先對(duì)android的研究背景,系統(tǒng)架構(gòu)以及開發(fā)環(huán)境進(jìn)行介紹,然后就玩家對(duì)游戲的需求進(jìn)行一定的分析,最后運(yùn)用android技術(shù)實(shí)現(xiàn)拼圖游戲的開發(fā),并合理布局游戲界面,使游戲界面更加美觀和人性化,實(shí)現(xiàn)了游戲的基本功能,最終可以讓玩家享受拼圖游戲的樂(lè)趣。關(guān)鍵詞:android;拼圖游戲;activity;架構(gòu) 金陵科技學(xué)院學(xué)士學(xué)位論文 abstractthe development and features of androidab
4、stractkey words: android;jigsaw puzzle game;activity;sturcture金陵科技學(xué)院學(xué)士學(xué)位論文 第1章 緒論1 緒 論1.1 課題開發(fā)的背景隨著嵌入式技術(shù)的發(fā)展,手持終端設(shè)備也迅速發(fā)展起來(lái),目前,全球手機(jī)用戶數(shù)已超過(guò)了pc機(jī)用戶數(shù),其中智能手機(jī)的比例越來(lái)越高。智能手機(jī)是指像電腦一樣可以通過(guò)下載、安裝軟件來(lái)拓展基本功能的手機(jī),一般具有智能手機(jī)操作系統(tǒng)。相較于非智能手機(jī),它功能更強(qiáng),處理速度更快?;趌inux的android手機(jī)操作系統(tǒng),由于具有開源、免費(fèi)的特性,迅速得到廣大愛好者及廠商的支持。目前,移動(dòng)應(yīng)用軟件中的手機(jī)游戲開發(fā)是一項(xiàng)非常熱門
5、的技術(shù)。android系統(tǒng)對(duì)第三方軟件是開放的,這促進(jìn)了第三方軟件的發(fā)展。android系統(tǒng)以linux 2.6為核心,其安全機(jī)制比較完善,增強(qiáng)了手機(jī)使用的安全性。android平臺(tái)已經(jīng)形成由 google牽頭,oha組織參與,系統(tǒng)支持商和服務(wù)供應(yīng)商完善搭配的運(yùn)作機(jī)制,為android平臺(tái)的快速發(fā)展提供了堅(jiān)實(shí)的基礎(chǔ)。由于android構(gòu)建在開源代碼的框架之上,并且提供了強(qiáng)大的sdk庫(kù)和開放的理念,所以它為廣大的沒有任何移動(dòng)應(yīng)用程序開發(fā)經(jīng)驗(yàn)的新手開辟了一條開發(fā)完美移動(dòng)應(yīng)用程序的康莊大道。而富有經(jīng)驗(yàn)的移動(dòng)開發(fā)人員現(xiàn)在也可以方便地?cái)U(kuò)展到android平臺(tái)上來(lái),利用它獨(dú)特的功能來(lái)改進(jìn)現(xiàn)有產(chǎn)品或者開發(fā)其
6、他新穎產(chǎn)品。1.2 課題意義android軟件在一兩年的時(shí)間內(nèi)已經(jīng)迅速發(fā)展,在各類型應(yīng)用系統(tǒng)中都有令用戶滿意的成果,本課題研究的就是基于此背景下android手機(jī)的一款益智拼圖游戲。通過(guò)該游戲的設(shè)計(jì),將自己學(xué)到的java,android方面的理論知識(shí)應(yīng)用于實(shí)踐,提高自己的動(dòng)手能力。在設(shè)計(jì)的過(guò)程中,不斷的修補(bǔ)知識(shí)方面的漏洞,加深自己對(duì)程序設(shè)計(jì)的理解,為將來(lái)從事軟件開發(fā)事業(yè)打下基礎(chǔ)。5金陵科技學(xué)院學(xué)士學(xué)位論文 第2章 android架構(gòu)與開發(fā)平臺(tái)搭建2 android架構(gòu)與開發(fā)平臺(tái)搭建2.1 android的系統(tǒng)架構(gòu)android的系統(tǒng)架構(gòu)和其操作系統(tǒng)一樣,采用了分層的架構(gòu)。從圖2.1中可以看出,
7、android分為四個(gè)層,從高層到低層分別是應(yīng)用程序?qū)印?yīng)用程序框架層、系統(tǒng)運(yùn)行庫(kù)層和linux核心層。圖2.1 android系統(tǒng)架構(gòu)圖(1) 應(yīng)用程序android會(huì)同一系列核心應(yīng)用程序包一起發(fā)布,該應(yīng)用程序包包括email客戶端,sms短消息程序,日歷,地圖,瀏覽器,聯(lián)系人管理程序等。所有的應(yīng)用程序都是使用java語(yǔ)言編寫的。(2) 應(yīng)用程序框架開發(fā)人員也可以完全訪問(wèn)核心應(yīng)用程序所使用的api框架。該應(yīng)用程序的架構(gòu)設(shè)計(jì)簡(jiǎn)化了組件的重用;任何一個(gè)應(yīng)用程序都可以發(fā)布它的功能塊并且任何其它的應(yīng)用程序都可以使用其所發(fā)布的功能塊(不過(guò)得遵循框架的安全性限制)。同樣,該應(yīng)用程序重用機(jī)制也使用戶可以方
8、便的替換程序組件。隱藏在每個(gè)應(yīng)用后面的是一系列的服務(wù)和系統(tǒng), 其中包括;豐富而又可擴(kuò)展的視圖(views):可以用來(lái)構(gòu)建應(yīng)用程序,它包括列表(lists),網(wǎng)格(grids),文本框(text boxes),按鈕(buttons),甚至可嵌入的web瀏覽器。內(nèi)容提供器(content providers):使得應(yīng)用程序可以訪問(wèn)另一個(gè)應(yīng)用程序的數(shù)據(jù)(如聯(lián)系人數(shù)據(jù)庫(kù)),或者共享它們自己的數(shù)據(jù)。資源管理器(resource manager):提供非代碼資源的訪問(wèn),如本地字符串,圖形,和布局文件(layout files)。通知管理器(notification manager):使得應(yīng)用程序可以在狀態(tài)
9、欄中顯示自定義的提示信息?;顒?dòng)管理器(activity manager):用來(lái)管理應(yīng)用程序生命周期并提供常用的導(dǎo)航回退功能。(3) 系統(tǒng)運(yùn)行庫(kù)1) 程序庫(kù)android包含一些c/c+庫(kù),這些庫(kù)能被android系統(tǒng)中不同的組件使用。它們通過(guò) android應(yīng)用程序框架為開發(fā)者提供服務(wù)。以下是一些核心庫(kù):系統(tǒng)c庫(kù):一個(gè)從bsd繼承來(lái)的標(biāo)準(zhǔn)c系統(tǒng)函數(shù)庫(kù)(libc), 它是專門為基于embedded linux的設(shè)備定制的。媒體庫(kù):基于packetvideo opencore,該庫(kù)支持多種常用的音頻、視頻格式回放和錄制,同時(shí)支持靜態(tài)圖像文件。編碼格式包括mpeg4,h.264,mp3,aac,am
10、r,jpg,png。surface manager:對(duì)顯示子系統(tǒng)的管理,并且為多個(gè)應(yīng)用程序提供了2d和3d圖層的無(wú)縫融合。libwebcore:一個(gè)最新web瀏覽器引擎用,支持android瀏覽器和一個(gè)可嵌入的web視圖。sgl:底層的2d圖形引擎。3d libraries:基于opengl es 1.0 apis實(shí)現(xiàn);該庫(kù)可以使用硬件3d加速(如果可用)或者使用高度優(yōu)化的3d軟加速。freetype:位圖(bitmap)和矢量(vector)字體顯示。sqlite:一個(gè)對(duì)于所有應(yīng)用程序可用,功能強(qiáng)勁的輕型關(guān)系型數(shù)據(jù)庫(kù)引擎。2) android 運(yùn)行庫(kù)android包括了一個(gè)核心庫(kù),該核心庫(kù)提
11、供了java編程語(yǔ)言核心庫(kù)的大多數(shù)功能。每一個(gè)android應(yīng)用程序都在它自己的進(jìn)程中運(yùn)行,都擁有一個(gè)獨(dú)立的dalvik虛擬 機(jī)實(shí)例。dalvik被設(shè)計(jì)成一個(gè)設(shè)備可以同時(shí)高效地運(yùn)行多個(gè)虛擬系統(tǒng)。dalvik虛擬機(jī)執(zhí)行(.dex)的dalvik可執(zhí)行文件,該格式文件針對(duì)小內(nèi)存使用做了優(yōu)化。同時(shí)虛擬機(jī)是基于寄存器的,所有的類都經(jīng)由java編譯器編譯,然后通過(guò)sdk的dx工具轉(zhuǎn)化成.dex格式由虛擬機(jī)執(zhí)行。dalvik虛擬機(jī)依賴于linux內(nèi)核的一些功能,比如線程機(jī)制和底層內(nèi)存管理機(jī)制。(4) linux內(nèi)核android的核心系統(tǒng)服務(wù)依賴于linux 2.6內(nèi)核,如安全性,內(nèi)存管理,進(jìn)程管理,網(wǎng)絡(luò)
12、協(xié)議棧和驅(qū)動(dòng)模型。linux內(nèi)核也同時(shí)作為硬件和軟件棧之間的抽象層。2.2 window下android開發(fā)環(huán)境的搭建為了在pc主機(jī)上得到android的開發(fā)環(huán)境,我們選擇在windows操作系統(tǒng)中進(jìn)行對(duì)android開發(fā)環(huán)境的搭建,具體步驟如下:(1)jdk安裝首先下載jdk,按照提示安裝成功后,最重要的是進(jìn)行環(huán)境變量的配置,步驟如下:我的電腦屬性高級(jí)環(huán)境變量系統(tǒng)變量中添加以下環(huán)境變量:java_home值為:c:program filesjavajdk1.6.020(安裝jdk的目錄)classpath值為:;%java_home%libtoolsjar;%java_home%libdt
13、jar;%java _home%bin;path值:添加c:program filesjavajdk1.6.020bin;(2)eclipse安裝可下載一個(gè)綠色版的eclipse,無(wú)需安裝,和安裝版一樣都能為android開發(fā)提供功能。(3)android sdk安裝在androiddevelopers下載androidsdkr07windowszip,下載完成后解壓到任意路徑。運(yùn)行sdk manager.exe,出現(xiàn)如圖以下界面,點(diǎn)擊available package。選擇希望安裝的sdk及其文檔或者其它包,點(diǎn)擊installation selected、accept all、install
14、 accepted,開始下載安裝所選包。下載完成后出現(xiàn)如下圖的所有androidsdkr07windows文件夾內(nèi)容;(4)adt安裝adt實(shí)際上是一個(gè)工具,它可以連接sdk和eclipse,幫助eclipse找到sdk打開eclipse界面,進(jìn)入進(jìn)入菜單中的“help” “installnewsoftware”,點(diǎn)擊add按鈕彈出對(duì)話框要求輸入name和location,完成之后,選擇window preferences;在左邊的面板選擇android,然后在右側(cè)點(diǎn)擊browse;并選中sdk路徑,本機(jī)為;d:yjshandroidandroidsdkr07windows;點(diǎn)擊apply、o
15、k。配置完成。(5)創(chuàng)建avd為使android應(yīng)用程序可以在模擬器上運(yùn)行,必須創(chuàng)建avd,步驟如下:在eclipse中,選擇windows android sdk and avd manager,點(diǎn)擊左側(cè)面板的virtual devices,再右側(cè)點(diǎn)擊new,填入name,選擇target的api,sdcard大小任意,skin隨便選,hardware目前保持默認(rèn)值,點(diǎn)擊createavd即可完成創(chuàng)建avd。金陵科技學(xué)院學(xué)士學(xué)位論文 第3章 流程介紹與概要設(shè)計(jì) 3 流程介紹與概要設(shè)計(jì)3.1 游戲流程介紹根據(jù)拼圖游戲的游戲規(guī)則,本設(shè)計(jì)擬出游戲的大致流程如圖3.1所示: 圖3.1 拼圖游戲流程圖
16、3.2 系統(tǒng)概要設(shè)計(jì)本設(shè)計(jì)參考了拼圖游戲流程圖(圖3.1)按照自頂向下的設(shè)計(jì)方式將拼圖游戲分為以下模塊進(jìn)行設(shè)計(jì),如圖3.2所示:圖3.2 拼圖游戲模塊3.2.1 界面布局模塊由于本課題的題材是一款游戲,對(duì)于游戲的界面以及一些基本控件有必要介紹一下。本系統(tǒng)一共有兩個(gè)界面:一個(gè)選擇界面,一個(gè)游戲界面,基本的控件有文本框,下拉列表,網(wǎng)格視圖,按鈕,圖片視圖等。下面簡(jiǎn)單介紹下它們的作用:文本框主要是用來(lái)顯示一些文本,這些文本基本是描述文本框所在位置的功能。下拉列表主要用在了難度選擇部分,當(dāng)玩家點(diǎn)擊難度時(shí),會(huì)出現(xiàn)下拉列表。網(wǎng)格視圖主要用于圖片選擇部分,利用網(wǎng)格視圖將圖片一一列出,供玩家選擇圖片進(jìn)行游戲。
17、按鈕是兩個(gè)界面的鏈接樞紐,在第一個(gè)選擇界面按下確定按鈕,會(huì)跳轉(zhuǎn)到游戲界面。在游戲界面也設(shè)置了一個(gè)按鈕,主要是給玩家提供“重新游戲”的機(jī)會(huì)。圖片視圖只要用來(lái)顯示圖片,在游戲界面用圖片視圖顯示圖片,供玩家游戲。3.2.2 難度選擇模塊拼圖游戲的難度在于圖片被分割后的塊數(shù),數(shù)量越多,自然難度就越大。(1)難度最小的是將其設(shè)置為3*3 當(dāng)難度設(shè)置為3*3時(shí),系統(tǒng)將圖片分割為3行3列,也就是將圖片分成了9塊。(2)難度最大的是將其設(shè)置為4*4當(dāng)難度設(shè)置為4*4時(shí),系統(tǒng)將圖片分割成4行4列,也就是將圖片分成了16塊。(3)難度中等的設(shè)置有兩種:3*4 和4*3 當(dāng)難度設(shè)置為3*4時(shí),系統(tǒng)將圖片分割成3行4
18、列,即分成了12塊。當(dāng)難度設(shè)置為4*4時(shí),系統(tǒng)將圖片分割成4行3列,同樣分成了12塊。3.2.3 圖片選擇模塊圖片選擇步驟相當(dāng)簡(jiǎn)單,只要在選擇界面的圖片選擇區(qū)域,從9張圖片中鼠標(biāo)單擊1張玩家感興趣的圖片即可。3.2.4 步數(shù)和時(shí)間模塊拼圖游戲過(guò)程中,為了增加趣味性,玩家每移動(dòng)一次圖塊,步數(shù)加一,知道游戲全部位置正確,游戲結(jié)束,統(tǒng)計(jì)最后步數(shù);從游戲開始,時(shí)間模塊開始計(jì)時(shí),直到游戲結(jié)束,時(shí)間停止,并顯示玩家完成游戲所花的時(shí)間。3.2.5 游戲?qū)崿F(xiàn)模塊在完成上述的圖片選擇,難度選擇后就可以開始正式的拼圖游戲。玩家選擇“play”后,圖片會(huì)根據(jù)玩家選擇的難度隨機(jī)分解圖片。在本設(shè)計(jì)中,原圖分割后右下角設(shè)
19、置為空白塊,為圖塊的移動(dòng)提供可能。玩家用鼠標(biāo)點(diǎn)擊與空白塊相鄰的圖塊,并將選中的圖片往空白塊拖動(dòng),這樣就完成了空白塊與選中圖片的位置的互換。這樣子循環(huán)往復(fù),知道全部圖塊位置正確,游戲就結(jié)束了。23金陵科技學(xué)院學(xué)士學(xué)位論文 第4章 系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn) 4 系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)4.1 界面布局實(shí)現(xiàn)本設(shè)計(jì)有兩個(gè)界面:選擇界面和游戲界面。界面的設(shè)計(jì)主要運(yùn)用android的繪圖技術(shù),圖形的繪制通常是在view類中完成的,同時(shí)也會(huì)用到各種控件,如:textview,button,spinner,gridview,imageview。當(dāng)然說(shuō)到控件,容器就不得不提了,兩者是息息相關(guān)的。本設(shè)計(jì)中用到了最常用的lin
20、earlayout容器,控件的布局也用到了相對(duì)布局,絕對(duì)布局等。4.1.1 選擇界面布局選擇界面在main.xml文件中布局,界面效果如圖4.1.1 :圖4.1.1 選擇界面該界面采用linearlayout布局,在linearlayout標(biāo)簽中完成界面設(shè)置。布局設(shè)置:設(shè)置布局排列方式為豎直排列,寬和高的值為填滿,背景顏色為黑色。代碼如下:android:orientation=vertical android:layout_width=fill_parent android:layout_height=fill_parent下面給出構(gòu)成該界面的一些基本控件的設(shè)置代碼:設(shè)置文本框的高和寬根據(jù)內(nèi)
21、容調(diào)整,文本內(nèi)容從values文件夾中的strings.xml文件中讀取,內(nèi)容為“等級(jí)”: android:layout_width=wrap_content android:layout_height=wrap_content android:text=string/level style=style/font_20_white_bold/ 設(shè)置下拉列表的高和寬根據(jù)內(nèi)容調(diào)整: android:layout_width=wrap_content android:layout_height=wrap_content設(shè)置文本框高根據(jù)內(nèi)容調(diào)整,寬為填滿,文本內(nèi)容取自values文件夾下strings
22、.xml文件,內(nèi)容為選擇圖片區(qū): android:layout_width=fill_parent android:layout_height=wrap_content android:text=string/selectpicturearea style=style/font_20_white_bold android:background=color/slategray 設(shè)置網(wǎng)格視圖寬和高為填滿: android:layout_width=fill_parent android:layout_height=fill_parent設(shè)置按鈕屬性,寬和高為根據(jù)內(nèi)容調(diào)整,按鈕內(nèi)容取自values文
23、件夾的strings.xml文件,內(nèi)容為“確定”:android:layout_width=wrap_content android:layout_height=wrap_content android:text=string/confirm style=style/btn_font_17_black android:layout_gravity=center”4.1.2 游戲界面布局游戲界面在jigsaw.xml文件中布局,界面效果如圖4.1.2:圖4.1.2 游戲界面該界面同樣采用linearlayout布局,在linearlayout標(biāo)簽中進(jìn)行基本設(shè)置。布局設(shè)置:高和寬為填滿,排列方式為
24、豎直排列,背景顏色為黑色。代碼如下: android:layout_width=fill_parent android:layout_height=fill_parent android:orientation=vertical android:background=color/black下面給出游戲界面其他控件的設(shè)置內(nèi)容和相關(guān)代碼:設(shè)置文本框的高和寬根據(jù)內(nèi)容調(diào)整,文本框的內(nèi)容取自strings.xml,內(nèi)容為“預(yù)覽”,位置居中: android:layout_width=wrap_content android:layout_height=wrap_content android:text=
25、string/preview style=style/font_20_white_bold android:layout_gravity=center 設(shè)置圖片框高和寬根據(jù)內(nèi)容調(diào)整,圖片取自drawable文件下的pingtu_6 : android:layout_width=wrap_content android:layout_height=wrap_content android:src=drawable/pingtu_6設(shè)置文本框高和寬根據(jù)內(nèi)容調(diào)整,文本框內(nèi)容取自strings.xml中的level2,內(nèi)容為“等級(jí)”: android:layout_width=wrap_content
26、 android:layout_height=wrap_content android:text=string/level2 style=style/font_20_white_bold設(shè)置文本框高和寬根據(jù)內(nèi)容調(diào)整,文本框內(nèi)容取自strings.xml中的stepnum,內(nèi)容為“步數(shù)”: android:layout_width=wrap_content android:layout_height=wrap_content android:text=string/stepnum style=style/font_20_white_bold設(shè)置文本框高和寬根據(jù)內(nèi)容調(diào)整,文本框內(nèi)容取自string
27、s.xml中的time,內(nèi)容為“時(shí)間”: android:layout_width=wrap_content android:layout_height=wrap_content android:text=string/time style=style/font_20_white_bold設(shè)置按鈕高和寬根據(jù)內(nèi)容調(diào)整,文本框內(nèi)容取自strings.xml中的play,內(nèi)容為“play” android:layout_width=wrap_content android:layout_height=wrap_content android:text=string/play android:text
28、size=14dip4.2 游戲功能實(shí)現(xiàn)游戲代碼具體運(yùn)行流程是這樣的:游戲啟動(dòng)后,啟動(dòng)mainactivity,接著加載main.xml初始化選擇界面,在完成難度選擇和圖片選擇后,點(diǎn)擊“確定”按鈕,運(yùn)行mainactivity類中的監(jiān)聽器btnonclicklistener跳轉(zhuǎn)在jigsawactivity,并加載jigsaw.xml文件初始化游戲界面,然后根據(jù)界面上的內(nèi)容進(jìn)行游戲。整個(gè)設(shè)計(jì)過(guò)程中主要完成以下功能:難度選擇,圖片選擇,步數(shù)和計(jì)時(shí)功能,拼圖功能。4.2.1 難度選擇在選擇界面點(diǎn)擊“等級(jí)”后的下拉列表,跳出下拉列表框,供玩家選擇難度,在 mainactivity中導(dǎo)入mainimp
29、l類和imain類用于實(shí)現(xiàn)難度選擇。mainimpl類中定義了 getleveladapter方法,使用list()將四種難度等級(jí)存入列表,以供選擇。getleveladapter方法的代碼如下:public arrayadapter getleveladapter(context context) list list=new arraylist();string level=context.getresources().getstringarray(r.array.levelarray);for(string str:level)list.add(str);arrayadapter city
30、arrayadapter=new arrayadapter(context,android.r.layout.simple_spinner_item,list);cityarrayadapter.setdropdownviewresource(android.r.layout.simple_spinner_dropdown_item);return cityarrayadapter;在mainactivity中給難度選擇定義兩個(gè)監(jiān)聽器itemclicklistener,玩家單擊下拉列表,就會(huì)啟動(dòng)itemclicklistener,玩家點(diǎn)擊四個(gè)難度中的一種后又會(huì)啟動(dòng)另一個(gè)監(jiān)聽器 itemsele
31、ctedlistener。玩家選擇完,選擇的難度將會(huì)傳回activity。監(jiān)聽器的簡(jiǎn)單代碼如下: private class itemselectedlistener implements onitemselectedlistenerpublic void onitemselected(adapterview adapterview, view view, int position,long rowid) pictureindex=position;public void onnothingselected(adapterview arg0) 4.2.2 圖片選擇選擇界面會(huì)列舉出9種圖片供玩家
32、選擇。圖片列舉功能是由mainactivity中的 showgridview方法和getallitemsforlistview方法完成的。showgridview方法獲取屏幕大小,根據(jù)screenwidt和screenheight自動(dòng)調(diào)整圖片大小,保證界面的美觀。而getallitemsforlistview方法生成動(dòng)態(tài)數(shù)組imageitem,并且傳入數(shù)據(jù),將圖片一一列舉出來(lái)。玩家點(diǎn)擊一張圖片并按下“確定”按鈕時(shí),將選擇的圖片同時(shí)傳遞給jigsawactivity。代碼如下:private void showgridview()displaymetrics dm = new displayme
33、trics(); dm = this.getapplicationcontext().getresources().getdisplaymetrics(); picturegridview.setcolumnwidth(screenwidth-10*4)/3);simpleadapter saimageitems = new simpleadapter(this, getallitemsforlistview(),r.layout.grid_item,new string imageview,new int r.id.griditem_imgview);picturegridview.seta
34、dapter(saimageitems);picturegridview.setselector(r.drawable.menuitemshape);列出9張圖片,并選擇一張圖片進(jìn)行游戲是在getallitemsforlistview()方法中實(shí)現(xiàn)的,在該方法中生成了動(dòng)態(tài)數(shù)組imageitem,將各個(gè)圖片的序號(hào)傳入了數(shù)組中。public listmap getallitemsforlistview() listmap imageitem = new arraylistmap();for (int i=0;ipicturearray.length;i+) hashmap tempmap = ne
35、w hashmap();tempmap.put(imageview,picturearrayi);/ imageitem.add(tempmap);return imageitem;4.2.3 步數(shù)和時(shí)間設(shè)置在jigsawactivity的initcontrols分別給stepnumtv和timetv做出定義。玩家點(diǎn)擊界面上的“play”按鈕,啟動(dòng)onclick方法,該方法開始給步數(shù)和時(shí)間賦初值。關(guān)于時(shí)間設(shè)置,還給出了時(shí)間的分秒設(shè)置。這是在timeparser方法中實(shí)現(xiàn)的,每過(guò)60秒,分鐘加1。游戲過(guò)程中圖片移動(dòng)一次,步數(shù)加1。具體實(shí)現(xiàn)如下:在游戲過(guò)程中,秒數(shù)一直在加一,這一實(shí)現(xiàn)體現(xiàn)在game
36、runable 類中的run方法中。當(dāng)然在秒數(shù)加1之前要先判斷是否為游戲狀態(tài),代碼為:public void run() while(isgaming) try second+; message msg=new message();msg.what=time_message;mhandler.sendmessage(msg);thread.sleep(1000); / catch (interruptedexception e) e.printstacktrace();步數(shù)和時(shí)間的運(yùn)行都是handlemessage方法中實(shí)現(xiàn),在該方法中通過(guò)switchcase語(yǔ)句實(shí)現(xiàn)判斷。public voi
37、d handlemessage(android.os.message msg)switch(msg.what)case time_message:break;case init_message:break;super.handlemessage(msg);4.2.4 拼圖的實(shí)現(xiàn)在jigsawactivity中進(jìn)行游戲時(shí)首先要解決的問(wèn)題就是圖片的隨機(jī)分割問(wèn)題。該問(wèn)題的解決方案在jigsawview類中,jigsawactivity只是導(dǎo)入了該類。在該類中定義了相當(dāng)多的變量,具體如下:private bitmap obitamp;/初始化切割后的圖片輸數(shù)組private int row=2;/行p
38、rivate int col=2;/列private int cutbitmapwidht;/切割后每張位圖的寬private int cutbitmapheight;/切割后每張位圖的高private float x,y;/當(dāng)然觸發(fā)的x,y坐標(biāo)private int offsetw,offseth;/偏移量寬度高度private int maxrectw,maxrecth;/最大矩形寬,高private pointf downpoint=new pointf();/觸發(fā)的坐標(biāo)點(diǎn)private pointf currpoint=new pointf();/當(dāng)前坐標(biāo)點(diǎn)private int st
39、ep=0;/步數(shù)private boolean isgameing=false;/是否游戲中該問(wèn)題的解決涉及到隨機(jī)和分割兩個(gè)算法。關(guān)于隨機(jī)的問(wèn)題,算法中使用了randomgenerated 方法,該方法隨機(jī)生成0-n范圍內(nèi)不重復(fù)的數(shù)字,不包含n。在math類中有定義的random方法,因此只需要調(diào)用以下。代碼如下:private void randomgenerated(int n)vector vector=new vector();int num=new intn;for(int i=0;in;i+)int radom = (int)(math.random()*n); radom = (
40、int)(math.random()*n);while(vector.contains(radom)radom = (int)(math.random()*n);vector.add(radom);numi=radom;for(int i=0;icol;i+)for(int j=0;jrow;j+)picture picture=new picture();picture.value=numi*row+j; pictruearrayji=picture;system.out.println(pictruearrayji.value);cutbitmap(mbitmap);分割圖片是通過(guò)cutb
41、itmap方法實(shí)現(xiàn)的,定義了cutbitmaowidth,cutbitmapheight變量表示分割后圖片的寬和高,并根據(jù)難度選擇的行數(shù)和列數(shù)初始化分割后的圖片數(shù)數(shù)組。具體代碼如下:private void cutbitmap(bitmap srcbitamp)cutbitmapwidht=srcbitamp.getwidth()/row; /分割后每張位圖的寬。cutbitmapheight=srcbitamp.getheight()/col; /分割后每張位圖的高。offsetw=cutbitmapwidht; /偏移量寬度。offseth=cutbitmapheight; /偏移量高度。
42、obitamp=new bitmaprow*col; /初始化切割后的圖片數(shù)數(shù)組。for(int i=0;icol;i+)for(int j=0;jrow;j+)obitampi*row+j=bitmap.createbitmap(srcbitamp, cutbitmapwidht*j, cutbitmapheight*i, cutbitmapwidht, cutbitmapheight);for(int i=0;icol;i+)for(int j=0;jrow;j+)if(i=(col-1)&(j=(row-1)pictruearrayji.bitamp=null; elsepictruea
43、rrayji.bitamp=obitamppictruearrayji.value;用randomgenerated 方法解決了圖片隨機(jī)分割的問(wèn)題之后,接著就是游戲的運(yùn)行即交換圖片功能的實(shí)現(xiàn)。首先確保鼠標(biāo)點(diǎn)擊并拖動(dòng)圖片有效,然后實(shí)現(xiàn)圖片的交換。為確保鼠標(biāo)點(diǎn)擊和拖動(dòng)有效,定義ontouchevent方法進(jìn)行活動(dòng)的判斷,該方法中定義了x,y兩個(gè)變量表示坐標(biāo),來(lái)顯示鼠標(biāo)點(diǎn)擊的位置。ontouchevent方法中定義了如下兩個(gè)變量:x=event.getx();y=event.gety();通過(guò)如下語(yǔ)句實(shí)現(xiàn)判斷鼠標(biāo)的活動(dòng):按下(motionevent.action_down),離開(motioneve
44、nt.action_up),移動(dòng)(motionevent.action_move)。if(!(x=maxrectw)&(y=maxrecth)return false;switch(event.getaction()case motionevent.action_down: case motionevent.action_up: case motionevent.action_move: return super.ontouchevent(event);交換圖片的動(dòng)作由swappicture方法實(shí)現(xiàn),交換代碼簡(jiǎn)單如下: int value;value=picture1.value; pictu
45、re1.value=picture2.value; picture2.value=value; 金陵科技學(xué)院學(xué)士學(xué)位論文 第5章 系統(tǒng)測(cè)試 5 系統(tǒng)測(cè)試5.1 android仿真器介紹仿真器是在計(jì)算機(jī)中運(yùn)行的一個(gè)虛擬的移動(dòng)裝置,用它來(lái)設(shè)計(jì)、調(diào)試應(yīng)用。adt是一個(gè)用于開發(fā)android應(yīng)用的eclipse插件,它方便了我們的開發(fā)。例如,它讓我們方便從eclipse內(nèi)部訪問(wèn)ddms工具(可用于截屏,管理port-forwarding,設(shè)斷點(diǎn),查看線程和進(jìn)程信息)ddms(dalvik debug monitor service)和dalvik虛擬機(jī)集成,將在ide和模擬器起到一個(gè)轉(zhuǎn)發(fā)服務(wù)。用它能管
46、理仿填器或者設(shè)備的進(jìn)程,并且輔助調(diào)試。你可用它殺死進(jìn)程,選擇某一進(jìn)程去debug,產(chǎn)生trace數(shù)據(jù),查看堆和線程信息等等。aapt(andvoid asset packaging tool),用于創(chuàng)建.apk文件。aidl(andvoid interface description language)用于產(chǎn)生代碼。sqlite3用于訪問(wèn)sqlite數(shù)據(jù)文件。traceview用于查看log信息dx工具用于重寫.class字節(jié)碼到andvoid字節(jié)碼。activitycreator用于產(chǎn)生ant文件的腳本。當(dāng)然,若用eclipse插件就不需要它了。5.2 功能模塊測(cè)試在虛擬器上完成一次拼圖游戲
47、,即可測(cè)試出本設(shè)計(jì)是否已經(jīng)完成。下面給出各個(gè)功能模塊的測(cè)試過(guò)程,若這些功能在模擬器上都能得到體現(xiàn),則說(shuō)明本設(shè)計(jì)基本成功。1) 難度選擇模塊:在選擇界面點(diǎn)擊“等級(jí)”下拉框,選擇一個(gè)難度,按下“確定”按鈕后跳轉(zhuǎn)到游戲界面,在游戲界面的文本框“等級(jí)”下顯示出玩家選擇的難度。界面如下:圖5.2.1 難度選擇模塊2) 圖片選擇模塊:在選擇界面點(diǎn)擊一張圖片,按下“確定”按鈕后跳轉(zhuǎn)到游戲界面,在游戲界面的圖片框中顯示玩家選擇的圖片。界面如下:圖5.2.2 圖片選擇模塊3) 步數(shù)和時(shí)間設(shè)置模塊:在游戲界面,點(diǎn)擊“play”按鈕后,時(shí)間開始自加1秒,每移動(dòng)一個(gè)圖塊,步數(shù)一欄加1 。界面如下:圖5.2.3 步數(shù)和
48、時(shí)間設(shè)置模塊4) 游戲?qū)崿F(xiàn)模塊:在游戲界面,點(diǎn)“play”按鈕后,鼠標(biāo)點(diǎn)擊圖塊并拖動(dòng),能與空白圖塊交換位置。當(dāng)圖片拼成原樣時(shí),彈出窗口提示游戲結(jié)束。界面如下:圖5.2.4 游戲?qū)崿F(xiàn)模塊5.3 出現(xiàn)的錯(cuò)誤及解決方案完成系統(tǒng)的過(guò)程中不可避免的出現(xiàn)了一些問(wèn)題,通過(guò)自我學(xué)習(xí)和他人指導(dǎo),最終解決了這些問(wèn)題。具體錯(cuò)誤和解決方案如下表5.1:表5.1 錯(cuò)誤及解決方案對(duì)照表系統(tǒng)出現(xiàn)的錯(cuò)誤解決方案activity之間的界面跳轉(zhuǎn)無(wú)法實(shí)現(xiàn)在activity.java中給出界面跳轉(zhuǎn)到下一個(gè)activity必須的代碼實(shí)現(xiàn)。各個(gè)控件之間的鏈接出錯(cuò)在同一個(gè)界面中的控件之間的聯(lián)系可以通過(guò)在activity.java中編寫代碼
49、來(lái)實(shí)現(xiàn)。運(yùn)行游戲時(shí),系統(tǒng)報(bào)錯(cuò),無(wú)法正常游戲檢查sdk版本以及仿真器的配置。金陵科技學(xué)院學(xué)士學(xué)位論文 第6章 總結(jié)與展望6 總結(jié)與展望大學(xué)四年學(xué)習(xí)的編程思想和編程技巧,在最后的畢業(yè)設(shè)計(jì)當(dāng)中得到了運(yùn)用。經(jīng)過(guò)此次畢業(yè)設(shè)計(jì),充分認(rèn)識(shí)到了自己編程能力方面的缺陷,感覺到自己的基礎(chǔ)比較薄弱。但在這段時(shí)間里,我不斷地發(fā)現(xiàn)自己的問(wèn)題,并且找出問(wèn)題產(chǎn)生的原因,根據(jù)相關(guān)的方法解決問(wèn)題。幾個(gè)月的努力沒有白費(fèi),終于基本上完成拼圖游戲的功能,雖然還有不少不足,我將不斷的完善它。做一個(gè)完整的系統(tǒng)之前,必須先對(duì)該系統(tǒng)進(jìn)行需求分析,擬好系統(tǒng)需要達(dá)到的功能和系統(tǒng)的所有需求,并且畫出系統(tǒng)的大體設(shè)計(jì)流程圖和框架。做完這些準(zhǔn)備工作,做
50、系統(tǒng)的時(shí)候才會(huì)得心應(yīng)手。想到那里就做到那里,不僅效率不高,還會(huì)影響到系統(tǒng)的可用性。完成系統(tǒng)之后才發(fā)現(xiàn),對(duì)于軟件設(shè)計(jì),要想做到得心應(yīng)手,必須多多練習(xí)。只有寫夠足夠多的代碼,才能真正理解軟件設(shè)計(jì)的思想及運(yùn)用。當(dāng)然要做到這一步,要付出相當(dāng)多的努力,在沒有做到之前,遇到不懂的地方就要多參考資料,請(qǐng)教別人。金陵科技學(xué)院學(xué)士學(xué)位論文 參考文獻(xiàn)參考文獻(xiàn)1 (美)eric jbaucle軟件設(shè)計(jì)從程序設(shè)計(jì)到體系結(jié)構(gòu)m李仁發(fā)等譯北京: 電子工業(yè)出版社,20072 孔令德畢業(yè)設(shè)計(jì)案例教程從系統(tǒng)開發(fā)到論文寫作m北京:國(guó)防工業(yè)出版社,20073 (美)威爾頓,麥可匹克javascript入門經(jīng)典(第3版)m北京 施宏斌譯北京:清華大學(xué)出版社,20094 e2ecloud工作室深入淺出google androidm北京:人民郵電出社,2009085 余志龍等android sdk開發(fā)范例大全m北京:人民郵電出版社20096 姚尚朗,靳巖googleand
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《戰(zhàn)略品牌傳播》課件
- 《CI操作常用》課件
- owerPoint幻燈片課件制作技術(shù)
- 感受情節(jié)背后的性格邏輯
- 游學(xué)項(xiàng)目介紹會(huì)模板
- 游戲產(chǎn)品與服務(wù)介紹模板
- 銀行業(yè)RPA實(shí)踐報(bào)告模板
- 市場(chǎng)營(yíng)銷模式的實(shí)效性探析論文
- 家庭醫(yī)生簽約與非簽約居民衛(wèi)生服務(wù)利用差異
- 車速鑒定申請(qǐng)書
- 2025公文寫作考試題庫(kù)(含參考答案)
- 2025年湖南科技職業(yè)學(xué)院高職單招職業(yè)技能測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 2024年安徽省高校分類考試對(duì)口招生語(yǔ)文試卷真題(含答案)
- 2024年安徽省省情知識(shí)競(jìng)賽題庫(kù)及答案
- 2025年南京信息職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 住建局條文解讀新規(guī)JGJT46-2024《施工現(xiàn)場(chǎng)臨時(shí)用電安全技術(shù)標(biāo)準(zhǔn)》
- 簡(jiǎn)易施工方案模板范本
- 高等無(wú)機(jī)化學(xué)理論—原子參數(shù)及元素周期性
- 《神筆馬良》閱讀測(cè)試題(50題)含答案
- 固定資產(chǎn)含答案
- 現(xiàn)代詩(shī)人徐志摩簡(jiǎn)介(課堂PPT)
評(píng)論
0/150
提交評(píng)論