




已閱讀5頁(yè),還剩46頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
電子科技大學(xué)畢業(yè)論文(設(shè)計(jì)) 基于安卓系統(tǒng)的游戲開(kāi)發(fā)與設(shè)計(jì)第1章 緒 論1.1課題的背景、目的與意義2007年,google公司推出了android手機(jī)操作系統(tǒng),該系統(tǒng)是基于linux平臺(tái)的開(kāi)源手機(jī)操作系統(tǒng),并且該系統(tǒng)已經(jīng)成為了新3g時(shí)代的主流移動(dòng)智能平臺(tái)之一,根據(jù)調(diào)查,在中國(guó)基于android操作系統(tǒng)的智能手機(jī)在中國(guó)智能手機(jī)總銷(xiāo)量中所占的比例已經(jīng)達(dá)到了52%,越來(lái)越多的手機(jī)用戶在接觸安卓手機(jī)。android是一種以linux為基礎(chǔ)的開(kāi)放源代碼操作系統(tǒng),主要使用于便攜設(shè)備。目前尚未有統(tǒng)一中文名稱,中國(guó)大陸地區(qū)較多人使用“安卓”或“安智”。android操作系統(tǒng)最初由andy runbin開(kāi)發(fā),最初主要支持手機(jī)。2005年由google收購(gòu)注資,并組建開(kāi)發(fā)手機(jī)聯(lián)盟開(kāi)發(fā)改良,逐漸擴(kuò)展到平板電腦及其他領(lǐng)域上。android的主要競(jìng)爭(zhēng)對(duì)手是蘋(píng)果手機(jī)的ios及rim的blackberry os。2011年第一季度,android在全球的市場(chǎng)份額首次超過(guò)塞班系統(tǒng),躍居全球第一。 2012年2月數(shù)據(jù),android占據(jù)全球智能手機(jī)操作系統(tǒng)市場(chǎng)52.5%的份額,中國(guó)市場(chǎng)占有率為68.4%。移動(dòng)互聯(lián)網(wǎng),就是將移動(dòng)通信和互聯(lián)網(wǎng)二者結(jié)合起來(lái),成為一體。在最近幾年里,移動(dòng)通信和互聯(lián)網(wǎng)成為當(dāng)今世界發(fā)展最快、市場(chǎng)潛力最大、前景最誘人的兩大業(yè)務(wù),它們的增長(zhǎng)速度都是任何預(yù)測(cè)家未曾預(yù)料到的,所以移動(dòng)互聯(lián)網(wǎng)可以預(yù)見(jiàn)將會(huì)創(chuàng)造怎樣的經(jīng)濟(jì)神話。伴隨著移動(dòng)互聯(lián)網(wǎng)的快速發(fā)展,智能手機(jī)的快速普及,傳統(tǒng)的制質(zhì)地圖已經(jīng)不能滿足現(xiàn)在市民的便利出行。運(yùn)行在安卓系統(tǒng)平臺(tái)的游戲,運(yùn)行在安卓平臺(tái)的游戲深受大家的喜愛(ài)?,F(xiàn)在,android游戲不但可以運(yùn)行于智能手機(jī),也可以運(yùn)行在平板電腦上。1.2國(guó)內(nèi)外現(xiàn)狀將向?qū)I(yè)化、大規(guī)模化方向發(fā)展 隨著各平臺(tái)對(duì)opengl es支持能力的大力加強(qiáng),使得開(kāi)發(fā)復(fù)雜的3d場(chǎng)景游戲成為可能。更多顯示芯片對(duì)android的支持,硬件性能將不再成為制約專(zhuān)業(yè)化游戲發(fā)展的瓶頸。越來(lái)越多在pc、psp、ps3、xbox360等各游戲平臺(tái)占有領(lǐng)先地位的專(zhuān)業(yè)游戲公司將向android等手機(jī)平臺(tái)領(lǐng)域快速滲透,使得游戲的規(guī)劃更加向?qū)I(yè)化方向發(fā)展。 2. 將向網(wǎng)絡(luò)化方向發(fā)展 隨著各平臺(tái)對(duì)無(wú)線通信網(wǎng)絡(luò)、wifi網(wǎng)絡(luò)、藍(lán)牙網(wǎng)絡(luò)的良好支持,游戲?qū)?chuàng)新出更好的游戲性和用戶本驗(yàn)。網(wǎng)絡(luò)游戲,多人游戲,聯(lián)機(jī)對(duì)戰(zhàn)等將進(jìn)一步強(qiáng)化玩家對(duì)游戲的粘著度,并且容易通過(guò)對(duì)道具等的控制產(chǎn)生營(yíng)利模式。玩家之間對(duì)交互能力的需求也會(huì)促成未來(lái)的游戲向網(wǎng)絡(luò)化發(fā)展進(jìn)程的加快。 3. 將向休閑化、時(shí)間片化方向發(fā)展 移動(dòng)設(shè)備的隨身性使是休閑小游戲?qū)⒌玫娇焖俚陌l(fā)展。移動(dòng)設(shè)備對(duì)分散時(shí)間的利用促進(jìn)了游戲向時(shí)間片化發(fā)展,即一個(gè)游戲可以隨時(shí)開(kāi)始,隨時(shí)結(jié)束,充分利用用戶分散的時(shí)間片來(lái)運(yùn)行。作為時(shí)下最熱門(mén)的手機(jī)系統(tǒng),android游戲擁有廣大的用戶群,所以android游戲的開(kāi)發(fā)也顯得相當(dāng)重要,不僅要有娛樂(lè)性,也需要一定的益智性。方塊拼圖是一個(gè)開(kāi)發(fā)用戶智力的小游戲,每個(gè)關(guān)卡都需要?jiǎng)狱c(diǎn)腦筋,同時(shí)擁有評(píng)星系統(tǒng),可以為用戶帶來(lái)一定的刺激性,不斷的去提高自己的過(guò)關(guān)速度。第2章 系統(tǒng)需求分析2.1 需求概括2.1.1目標(biāo)該游戲簡(jiǎn)單容易上手,更有一定的益智性,可以鍛煉你的記憶能力,也有一定的娛樂(lè)性,其中不同游戲類(lèi)型能讓你感覺(jué)到這個(gè)游戲的多樣性2.1.2用戶類(lèi)型和特征用戶主要是16歲至45歲的手機(jī)用戶群,用戶只需要操作手機(jī)界面就能夠進(jìn)行游戲的操作。2.1.3運(yùn)行環(huán)境(1) 硬件資源裝載了android系統(tǒng)的智能手機(jī)。(2) 軟件資源操作系統(tǒng): windows xp或windows 7。android sdkjdk:jdk1.6。eclipse2.2 android環(huán)境搭建在開(kāi)始android開(kāi)發(fā)之旅啟動(dòng)之前,首先要搭建環(huán)境,然后創(chuàng)建一個(gè)簡(jiǎn)單的helloworld。本文的主題如下:2.2.1環(huán)境搭建1.jdk安裝如果你還沒(méi)有jdk的話,可以去這里下載,接下來(lái)的工作就是安裝提示一步一步走。設(shè)置環(huán)境變量步驟如下:1.我的電腦-屬性-高級(jí)-環(huán)境變量-系統(tǒng)變量中添加以下環(huán)境變量:2.java_home值為: d:program filesjavajdk1.6.0_18(你安裝jdk的目錄)3.classpath值為:.;%java_home%libtools.jar;%java_home%libdt.jar;%java_home%bin;4.th: 在開(kāi)始追加 %java_home%bin;5.note:前面四步設(shè)置環(huán)境變量對(duì)搭建android開(kāi)發(fā)環(huán)境不是必須的,可以跳過(guò)。安裝完成之后,可以在檢查jdk是否安裝成功。打開(kāi)cmd窗口,輸入java version 查看jdk的版本信息。如圖2-1所示: 圖2-1 驗(yàn)證jdk安裝是否成功2.eclipse安裝如果你還么有eclipse的話,可以去這里下載,下載如圖2-2所示的eclipse ide for java developers(92m)的win 32bit版: 圖2-2eclipse下載解壓之后即可使用。3.android sdk安裝在android developers下載android-sdk_r05-windows.zip,下載完成后解壓到任意路徑。運(yùn)行sdk setup.exe,點(diǎn)擊available packages。如果沒(méi)有出現(xiàn)可安裝的包,請(qǐng)點(diǎn)擊settings,選中misc中的force https:/.這項(xiàng),再點(diǎn)擊available packages 。選擇希望安裝的sdk及其文檔或者其它包,點(diǎn)擊installation selected、accept all、install accepted,開(kāi)始下載安裝所選包在用戶變量中新建path值為:android sdk中的tools絕對(duì)路徑(本機(jī)為d:androiddevelopandroid-sdk-windowstools)。如圖2-3所示:圖2-3設(shè)置android sdk的環(huán)境變量“確定”后,重新啟動(dòng)計(jì)算機(jī)。重啟計(jì)算機(jī)以后,進(jìn)入cmd命令窗口,檢查sdk是不是安裝成功。運(yùn)行 android h 如果有圖2-4所示以下的輸出,表明安裝成功:圖2-4驗(yàn)證android sdk是否安裝成功4.adt安裝打開(kāi) eclipse ide,進(jìn)入菜單中的 help - install new software點(diǎn)擊add.按鈕,彈出對(duì)話框要求輸入name和location:name自己隨便取,location輸入/android/eclipse。如圖2-5所示:圖2-5 add site框圖確定返回后,在work with后的下拉列表中選擇我們剛才添加的adt,我們會(huì)看到下面出有developer tools,展開(kāi)它會(huì)有android ddms和android development tool,勾選他們。 如圖2-6所示:圖2-6 install 框圖然后就是按提示一步一步next。完成之后:選擇window preferences.在左邊的面板選擇android,然后在右側(cè)點(diǎn)擊browse.并選中sdk路徑,本機(jī)為:d:androiddevelopandroid-sdk-windows點(diǎn)擊apply、ok。配置完成。5.創(chuàng)建avd為使android應(yīng)用程序可以在模擬器上運(yùn)行,必須創(chuàng)建avd。1、在eclipse中。選擇windows android sdk and avd manager2、點(diǎn)擊左側(cè)面板的virtual devices,再右側(cè)點(diǎn)擊new3、填入name,選擇target的api,sd card大小任意,skin隨便選,hardware目前保持默認(rèn)值4、點(diǎn)擊create avd即可完成創(chuàng)建avd注意:如果你點(diǎn)擊左側(cè)面板的virtual devices,再右側(cè)點(diǎn)擊new ,而target下拉列表沒(méi)有可選項(xiàng)時(shí),這時(shí)候你:點(diǎn)擊左側(cè)面板的available packages,在右側(cè)勾選/android/repository/repository.xml,如圖2-7所示:圖2-7 available packages框圖然后點(diǎn)擊install selected按鈕,接下來(lái)就是按提示做就行了要做這兩步,原因是在1.3、android sdk安裝中沒(méi)有安裝一些必要的可用包(available packages)。2.2.2 helloworld通過(guò)file - new - project 菜單,建立新項(xiàng)目android project。然后填寫(xiě)必要的參數(shù),如圖2-8所示:(注意這里我勾選的是google apis,你可以選你喜歡的,但你要?jiǎng)?chuàng)建相應(yīng)的avd)。圖2-8 hello word框圖相關(guān)參數(shù)的說(shuō)明:project name: 包含這個(gè)項(xiàng)目的文件夾的名稱。 package name: 包名,遵循java規(guī)范,用包名來(lái)區(qū)分不同的類(lèi)是很重要的,我用的是helloworld.test。 activity name: 這是項(xiàng)目的主類(lèi)名,這個(gè)類(lèi)將會(huì)是android的activity類(lèi)的子類(lèi)。一個(gè)activity類(lèi)是一個(gè)簡(jiǎn)單的啟動(dòng)程序和控制程序的類(lèi)。它可以根據(jù)需要?jiǎng)?chuàng)建界面,但不是必須的。 application name: 一個(gè)易讀的標(biāo)題在你的應(yīng)用程序上。 在選擇欄的 use default location 選項(xiàng),允許你選擇一個(gè)已存在的項(xiàng)目。 點(diǎn)擊finish后,點(diǎn)擊eclipse的run菜單選擇run configurations選擇“android application”,點(diǎn)擊在左上角(按鈕像一張紙上有個(gè)“+”號(hào))或者雙擊“android application”, 有個(gè)新的選項(xiàng)“new_configuration”(可以改為我們喜歡的名字)。在右側(cè)android面板中點(diǎn)擊browse,選擇helloworld在target面板的automatic中勾選相應(yīng)的avd,如果沒(méi)有可用的avd的話,你需要點(diǎn)擊右下角的manager,然后新建相應(yīng)的avd。如圖2-9所示:圖2-9 target框圖然后點(diǎn)run按鈕即可,運(yùn)行成功的話會(huì)有android的模擬器界面,如圖2-10所示:圖2-10安卓模擬器界面2.3可行性分析可行性分析是在全面調(diào)查基礎(chǔ)上,針對(duì)新系統(tǒng)的開(kāi)發(fā)是否具備必要性和可能性,對(duì)新系統(tǒng)的開(kāi)發(fā)從技術(shù)、經(jīng)濟(jì)、運(yùn)行的方面進(jìn)行分析和研究,以避免投資失誤,保證新系統(tǒng)開(kāi)發(fā)成功??尚行匝芯康哪康木褪怯米钚〉拇鷥r(jià)在盡可能短的時(shí)間內(nèi)確定問(wèn)題是否能夠解決。這部分將從以下三個(gè)方面進(jìn)行研究:技術(shù)可行性、經(jīng)濟(jì)可行性、操作可行性。1.技術(shù)可行性android游戲需要掌握java開(kāi)發(fā)語(yǔ)言和android系統(tǒng),另外對(duì)于算法也要有所掌握。 2.經(jīng)濟(jì)可行性android游戲需要的硬件資源不大,已有g(shù)oogle提供android系統(tǒng)平臺(tái),只需要一臺(tái)智能手機(jī),手機(jī)客戶端即可體驗(yàn)該游戲帶來(lái)的益智和趣味性。3.操作可行性android游戲的開(kāi)發(fā)需要具備一定的android開(kāi)發(fā)技術(shù)和對(duì)算法技術(shù)的掌握,懂得操作智能手機(jī)。2.4相關(guān)技術(shù)簡(jiǎn)介本系統(tǒng)的用戶為所有使用手機(jī)客戶端的客戶,本系統(tǒng)擁有游戲難度選擇;游戲類(lèi)型選擇;而且還有各種不同的游戲特效,相關(guān)技術(shù)如下:2.4.1 java開(kāi)發(fā)語(yǔ)言它最初被命名為oak,目標(biāo)設(shè)定在家用電器等小型系統(tǒng)的編程語(yǔ)言,來(lái)解決諸如電視機(jī)、電話、鬧鐘、烤面包機(jī)等家用電器的控制和通訊問(wèn)題。由于這些智能化家電的市場(chǎng)需求沒(méi)有預(yù)期的高,sun放棄了該項(xiàng)計(jì)劃。就在oak幾近失敗之時(shí),隨著互聯(lián)網(wǎng)的發(fā)展,sun看到了oak在計(jì)算機(jī)網(wǎng)絡(luò)上的廣闊應(yīng)用前景,于是改造了oak,以“java”的名稱正式發(fā)布。 jjava 編程語(yǔ)言的風(fēng)格十分接近c(diǎn)、c+語(yǔ)言。java是一個(gè)純的面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,它繼承了 c+ 語(yǔ)言面向?qū)ο蠹夹g(shù)的核心,java舍棄了c +語(yǔ)言中容易引起錯(cuò)誤的指針(以引用取代)、運(yùn)算符重載(operator overloading)、多重繼承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的對(duì)象所占據(jù)的內(nèi)存空間,使得程序員不用再為內(nèi)存管理而擔(dān)憂。在 java se 1.5 版本中,java 又引入了泛型編程(generic programming)、類(lèi)型安全的枚舉、不定長(zhǎng)參數(shù)和自動(dòng)裝/拆箱等語(yǔ)言特性。 java 不同于一般的編譯執(zhí)行計(jì)算機(jī)語(yǔ)言和解釋執(zhí)行計(jì)算機(jī)語(yǔ)言。它首先將源代碼編譯成二進(jìn)制字節(jié)碼(bytecode),然后依賴各種不同平臺(tái)上的虛擬機(jī)來(lái)解釋執(zhí)行字節(jié)碼,從而實(shí)現(xiàn)了“一次編譯、到處執(zhí)行”的跨平臺(tái)特性。不過(guò),每次的編譯執(zhí)行需要消耗一定的時(shí)間,這同時(shí)也在一定程度上降低了 java 程序的運(yùn)行效率。但在 j2se 1.4.2 發(fā)布后,java 的執(zhí)行速度有了大幅提升。 與傳統(tǒng)程序不同,sun 公司在推出 java 之際就將其作為一種開(kāi)放的技術(shù)。全球數(shù)以萬(wàn)計(jì)的 java 開(kāi)發(fā)公司被要求所設(shè)計(jì)的 java 軟件必須相互兼容?!癹ava 語(yǔ)言靠群體的力量而非公司的力量”是 sun 公司的口號(hào)之一,并獲得了廣大軟件開(kāi)發(fā)商的認(rèn)同。這與微軟公司所倡導(dǎo)的注重精英和封閉式的模式完全不同。 sun 公司對(duì) java 編程語(yǔ)言的解釋是:java 編程語(yǔ)言是個(gè)簡(jiǎn)單、面向?qū)ο?、分布式、解釋性、健壯、安全與系統(tǒng)無(wú)關(guān)、可移植、高性能、多線程和動(dòng)態(tài)的語(yǔ)言。 java 平臺(tái)是基于 java 語(yǔ)言的平臺(tái)。這樣的平臺(tái)目前非常流行,因此微軟公司推出了與之競(jìng)爭(zhēng)的.net平臺(tái)以及模仿 java 的 c#語(yǔ)言。2.4.2 android開(kāi)發(fā)android的系統(tǒng)架構(gòu)和其它操作系統(tǒng)一樣,采用了分層的架構(gòu)。android分為四個(gè)層,從高層到低層分別是應(yīng)用程序?qū)?、?yīng)用程序框架層、系統(tǒng)運(yùn)行庫(kù)層和linux核心層。 android是以linux為核心的手機(jī)操作平臺(tái),作為一款開(kāi)放式的操作系統(tǒng),隨著android的快速發(fā)展,如今已允許開(kāi)發(fā)者使用多種編程語(yǔ)言來(lái)開(kāi)發(fā)android應(yīng)用程序,而不再是以前只能使用java開(kāi)發(fā)android應(yīng)用程序的單一局面,因而受到眾多開(kāi)發(fā)者的歡迎,成為真正意義上的開(kāi)放式操作系統(tǒng)。 在android中,開(kāi)發(fā)者可以使用java作為編程語(yǔ)言來(lái)開(kāi)發(fā)應(yīng)用程序,也可以通過(guò)ndk使用c/c+作為編程語(yǔ)言來(lái)開(kāi)發(fā)應(yīng)用程序,也可使用sl4a來(lái)使用其他各種腳本語(yǔ)言進(jìn)行編程,還有其他諸如:qt(qt for android)、mono(mono for android)等一些著名編程框架也開(kāi)始支持android編程,甚至通過(guò)monodriod,開(kāi)發(fā)者還可以使用c#作為編程語(yǔ)言來(lái)開(kāi)發(fā)應(yīng)用程序。另外,谷歌還在2009年特別發(fā)布了針對(duì)初學(xué)者的android simple語(yǔ)言,該語(yǔ)言類(lèi)似basic 語(yǔ)言。而在網(wǎng)頁(yè)編程語(yǔ)言方面,javascript,ajaxa,html5,jquery、sencha、dojo、mobl、phonegap等等都已經(jīng)支持android開(kāi)發(fā)。 而在android系統(tǒng)底層方面,android使用c/c+作為開(kāi)發(fā)語(yǔ)言2。 應(yīng)用程序(部分) 早期的android應(yīng)用程序開(kāi)發(fā),通常通過(guò)android sdk(android軟件開(kāi)發(fā)包)下使用java作為編程語(yǔ)言來(lái)開(kāi)發(fā)應(yīng)用程序,但通過(guò)不同的軟件開(kāi)發(fā)包,則使用的編程語(yǔ)言也不同。 例如開(kāi)發(fā)者可以通過(guò)android ndk(android native開(kāi)發(fā)包)使用c語(yǔ)言或者c+語(yǔ)言來(lái)作為編程語(yǔ)言開(kāi)發(fā)應(yīng)用程序。同時(shí)谷歌還推出了適合初學(xué)者編程使用的simple語(yǔ)言,該語(yǔ)言類(lèi)似微軟公司的visual basic語(yǔ)言。此外,谷歌公司還推出了google app inventor開(kāi)發(fā)工具,該開(kāi)發(fā)工具可以快速地構(gòu)建應(yīng)用程序,方便新手開(kāi)發(fā)者。 java開(kāi)發(fā)方面 android支持使用java作為編程語(yǔ)言來(lái)開(kāi)發(fā)應(yīng)用程序,而android的java開(kāi)發(fā)方面從接口到功能,都有層出不窮的變化??紤]到j(luò)ava虛擬機(jī)的效率和資源占用,谷歌重新設(shè)計(jì)了android的java,以便能提高效率和減少資源占用,因而與j2me等不同。如圖2-11 圖2-11 android結(jié)構(gòu)其中activity等同于j2me的midlet,一個(gè) activity 類(lèi)(class)負(fù)責(zé)創(chuàng)建視窗(windows),一個(gè)活動(dòng)中的activity就是在 foreground(前景)模式,背景運(yùn)行的程序叫做service。兩者之間通過(guò)由serviceconnection和aidl連結(jié),達(dá)到復(fù)數(shù)程序同時(shí)運(yùn)行效果。如果運(yùn)行中的 activity 全部畫(huà)面被其他 activity 取代時(shí),該 activity 便被停止(stopped),甚至被系統(tǒng)清除(kill)。 view等同于j2me的displayable,程序人員可以通過(guò) view 類(lèi)與“xml layout”檔將ui放置在視窗上,android 1.5的版本可以利用 view 打造出所謂的 widgets,其實(shí)widget只是view的一種,所以可以使用xml來(lái)設(shè)計(jì)layout,htc的android hero手機(jī)即含有大量的widget。至于viewgroup 是各種layout 的基礎(chǔ)抽象類(lèi)(abstract class),viewgroup之內(nèi)還可以有viewgroup。view的構(gòu)造函數(shù)不需要再activity中調(diào)用,但是displayable的是必須的,在activity 中,要通過(guò)findviewbyid()來(lái)從xml 中取得view,android的view類(lèi)的顯示很大程度上是從xml中讀取的。view 與事件(event)息息相關(guān),兩者之間通過(guò)listener 結(jié)合在一起,每一個(gè)view都可以注冊(cè)一個(gè)event listener,例如:當(dāng)view要處理用戶觸碰(touch)的事件時(shí),就要向android框架注冊(cè)view.onclicklistener。另外還有bitmap等同于j2me的image2。 2.4.3 遞歸算法程序調(diào)用自身的編程技巧稱為遞歸( recursion)。一個(gè)過(guò)程或函數(shù)在其定義或說(shuō)明中有直接或間接調(diào)用自身的一種方法,它通常把一個(gè)大型復(fù)雜的問(wèn)題層層轉(zhuǎn)化為一個(gè)與原問(wèn)題相似的規(guī)模較小的問(wèn)題來(lái)求解,遞歸策略只需少量的程序就可描述出解題過(guò)程所需要的多次重復(fù)計(jì)算,大大地減少了程序的代碼量。遞歸的能力在于用有限的語(yǔ)句來(lái)定義對(duì)象的無(wú)限集合。一般來(lái)說(shuō),遞歸需要有邊界條件、遞歸前進(jìn)段和遞歸返回段。當(dāng)邊界條件不滿足時(shí),遞歸前進(jìn);當(dāng)邊界條件滿足時(shí),遞歸返回。注意:(1) 遞歸就是在過(guò)程或函數(shù)里調(diào)用自身;(2) 在使用遞歸策略時(shí),必須有一個(gè)明確的遞歸結(jié)束條件,稱為遞歸出口4。 第3章 項(xiàng)目設(shè)計(jì)3.1項(xiàng)目總體設(shè)計(jì)根據(jù)前面對(duì)該游戲所提出的需求,我將該系統(tǒng)分為8個(gè)部分,分別是游戲開(kāi)始界面設(shè)計(jì),游戲選關(guān)界面設(shè)計(jì),游戲界面設(shè)計(jì),游戲關(guān)卡評(píng)分功能,游戲排行功能,計(jì)算游戲得分,計(jì)算通關(guān)時(shí)間,游戲音樂(lè)的控制,游戲幫助提示功能。如圖3-1所示:android游戲游戲音樂(lè)游戲進(jìn)程游戲特效游戲開(kāi)始游戲難度選擇游戲菜單 圖3-1安卓游戲框架圖3.2功能模塊設(shè)計(jì)3.2.1游戲開(kāi)始模塊游戲的入口點(diǎn),一個(gè)游戲的入口需要做特別的設(shè)計(jì),這樣才能給人生動(dòng)形象,新穎個(gè)性的感覺(jué),才能引起游戲玩家的興趣。3.2.2游戲難度選擇模塊在這個(gè)模塊中加入了游戲不同難度的設(shè)置,讓新用戶可以很好的上手此游戲,讓老用戶可以挑戰(zhàn)更高的游戲難度,增加了游戲的可玩性。3.2.3游戲菜單模塊這個(gè)模塊主要是豐富了游戲的多樣性,加入了許多不同的游戲元素,讓游戲用戶操作起來(lái)不會(huì)枯燥乏味,增加了游戲的可玩性。3.2.4游戲特效模塊這個(gè)模塊則是為了使游戲看起來(lái)更加的生動(dòng)有趣,游戲特效可以使得游戲看起來(lái)更加的生動(dòng)讓游戲的畫(huà)面更加的生動(dòng)。3.2.5游戲進(jìn)程模塊這個(gè)模塊可以讓游戲操作者知道當(dāng)前已經(jīng)進(jìn)行的游戲時(shí)間和游戲需要通關(guān)所剩的步驟,這是個(gè)具有人性化的設(shè)計(jì)。3.2.6游戲音樂(lè)模塊這個(gè)模塊則是控制游戲的音樂(lè)開(kāi)關(guān)的模塊,可以讓游戲操作者自行選擇是否開(kāi)啟游戲背景音樂(lè)。3.3技術(shù)框架設(shè)計(jì)android系統(tǒng)共分為4層,從高到低分別是應(yīng)用層,應(yīng)用框架層,系統(tǒng)運(yùn)行層和linux內(nèi)核層。應(yīng)用層:應(yīng)用是用java語(yǔ)言編寫(xiě)的運(yùn)行在虛擬機(jī)上的程序,google最開(kāi)始時(shí)就在android系統(tǒng)中捆綁了一些核心應(yīng)用,比如郵件客戶端,短消息程序,日歷,地圖,瀏覽器等。應(yīng)用框架層:這一層是編寫(xiě)google發(fā)布的核心應(yīng)用時(shí)所使用的api框架,開(kāi)發(fā)人員同樣可以使用這些框架來(lái)開(kāi)發(fā)自己的應(yīng)用,這樣便簡(jiǎn)化了程序開(kāi)發(fā)的框架設(shè)計(jì),但是必須遵守其框架的開(kāi)發(fā)原則系統(tǒng)運(yùn)行庫(kù)層:當(dāng)使用android應(yīng)用框架時(shí),android系統(tǒng)會(huì)通過(guò)一些c/c+庫(kù)來(lái)支持我們使用的各個(gè)組件,使其能更好的為我們服務(wù)。內(nèi)核層:android的核心系統(tǒng)服務(wù)基于linux2.6內(nèi)核,如安全性,內(nèi)在管理。 第4章 系統(tǒng)實(shí)現(xiàn)在上一章著重討論了系統(tǒng)各個(gè)模塊功能的設(shè)計(jì),并詳細(xì)分析了每一個(gè)模塊的功能。在本章將具體討論如何實(shí)現(xiàn)功能模塊,最終實(shí)現(xiàn)整個(gè)系統(tǒng)。經(jīng)過(guò)這個(gè)階段的設(shè)計(jì)工作,應(yīng)該得出對(duì)目標(biāo)系統(tǒng)的描述,各個(gè)activity界面之間的開(kāi)發(fā)。4.1 游戲開(kāi)始模塊4.11游戲開(kāi)始主界面游戲開(kāi)始界面需要做得既簡(jiǎn)單又不失個(gè)性。所以通過(guò)不斷的設(shè)計(jì)和思考,得到如下的效果,其中該界面在云彩的地方添加了相應(yīng)的動(dòng)畫(huà),是界面顯得更加生動(dòng),下面兩張圖可以看出其效果,如圖4-1以及4-2所示。圖4-1主界面云朵位置一圖4-2主界面云朵位置二圖4-1和圖4-2的云彩分別在不同的位置。4.1.2 云的動(dòng)畫(huà)效果設(shè)計(jì)/動(dòng)畫(huà)由另外的文件設(shè)置,這里將文件取出獲取動(dòng)畫(huà)效果。findviewbyid(r.id.imgcloud1).setanimation(animationutils.loadanimation(this, r.anim.cloud1);findviewbyid(r.id.imgcloud2).setanimation(animationutils.loadanimation(this, r.anim.cloud2);游戲的操作代碼如下:if (!bcanclick)return;log.v(time, (string) v.gettag(); btnclick = (button) v; if(ifirst=btnclick.getid() return; int itagid = integer.parseint(string) v.gettag(); / -1;memoryapp app = (memoryapp) getapplicationcontext();string sname = string.format(%s%d, app.theme_name, itagid);log.v(sname, sname); iresid = getresources().getidentifier(sname, drawable,getpackagename();btnclick.startanimation(anim1);if (iflag = -1) iflag = itagid;ifirst = btnclick.getid(); else if (ifirst = btnclick.getid()return;imageview img = (imageview) findviewbyid(tag_result_flag);if (img = null) img = new imageview(this);img.setid(tag_result_flag);img.setscaletype(imageview.scaletype.center);relativelayout.layoutparams layout = new relativelayout.layoutparams(relativelayout.layoutparams.fill_parent,relativelayout.layoutparams.fill_parent);layout.addrule(relativelayout.center_in_parent);addcontentview(img, layout);message msg = new message();msg.arg1 = ifirst;msg.arg2 = btnclick.getid();animation anim = animationutils.loadanimation(this,r.anim.result_translate);anim.setinterpolator(animationutils.loadinterpolator(this,android.r.anim.bounce_interpolator);/ cannot match image returnif (iflag != itagid) img.setimageresource(r.drawable.no);img.setanimation(anim);if (togglemusic.ischecked() media = mediaplayer.create(this, r.raw.wrong);media.start();msg.what = msg_set_default_button; else translateanimation animation = new translateanimation(fdogmove * density,(fdogmove + dog_move) * density, 0, 0);animation.setfillafter(true);imgdog.setanimation(animation);img.setimageresource(r.drawable.ok);img.setanimation(anim);if (togglemusic.ischecked() media = mediaplayer.create(this, r.raw.right);media.start();fdogmove = (float) (fdogmove + dog_move);log.v(fdogmove, fdogmove + );msg.what = msg_remove_button;imatchs-;iflag = -1;bcanclick = false;img.setvisibility(view.visible);splashhandle.sendmessagedelayed(msg, 2000);其中包括了handler技術(shù)。還有采用標(biāo)志的方式來(lái)作為基礎(chǔ)來(lái)判定能不能進(jìn)行點(diǎn)擊翻牌。4.2 游戲難度選擇模塊4.2.1 游戲難度選擇游戲難度選擇會(huì)出現(xiàn)三種難度可供選擇,分別為簡(jiǎn)易難度(easy);普通難度(normal);困難難度(hard),用戶可以根據(jù)自己的情況進(jìn)行選擇。下圖為第一次運(yùn)行的時(shí)候的難度選擇界面,如圖4-3所示:圖4-3難度選擇主界面點(diǎn)擊menu按鈕出現(xiàn)對(duì)話框,對(duì)話框是引入的xml文件來(lái)進(jìn)行布局,布局代碼如下: 4.2.2 簡(jiǎn)易難度選擇當(dāng)用戶選擇了簡(jiǎn)易難度并且點(diǎn)擊了開(kāi)始按鈕后會(huì)跳轉(zhuǎn)到另一個(gè)界面如圖4-4所示,簡(jiǎn)易難度是一個(gè)4x4的矩陣也就是用戶需要進(jìn)行成功的連接8次就可以通關(guān)。圖4-4簡(jiǎn)易難度界面4.2.3 普通難度選擇當(dāng)用戶選擇了簡(jiǎn)易難度并且點(diǎn)擊了開(kāi)始按鈕后會(huì)跳轉(zhuǎn)到另一個(gè)界面如圖4-5所示,簡(jiǎn)易難度是一個(gè)4x6的矩陣也就是用戶需要進(jìn)行成功的連接12次就可以通關(guān)。圖4-5普通難度界面4.2.4 困難難度選擇當(dāng)用戶選擇了簡(jiǎn)易難度并且點(diǎn)擊了開(kāi)始按鈕后會(huì)跳轉(zhuǎn)到另一個(gè)界面如圖4-6所示,簡(jiǎn)易難度是一個(gè)6x6的矩陣也就是用戶需要進(jìn)行成功的連接18次就可以通關(guān)。圖4-6困難難度界面難度主要是通過(guò)矩陣來(lái)控制,難度越大,矩陣越大,根據(jù)矩陣的長(zhǎng)寬來(lái)設(shè)置用戶游戲界面的地圖,具體代碼如下:displaymetrics dm = new displaymetrics();getwindowmanager().getdefaultdisplay().getmetrics(dm);density = dm.density;drawbtn(irow, icol);ifirst = -1;iflag = -1;itimes = 0;fdogmove = 0;idogflag = dog_step_left;bcanclick = true;ibgmusicposition = 0;if (pw != null) pw.dismiss();pw = null;imgdog.clearanimation();imgdog.setbackgroundresource(r.drawable.dog1);imgbone.setvisibility(view.visible);imgdogwin.setvisibility(view.invisible);imgdog.setvisibility(view.visible);togglemenu.setchecked(false);togglemusic.setchecked(true);if (bgmedia != null) bgmedia.stop();bgmedia.release();bgmedia = mediaplayer.create(this, r.raw.back_music);bgmedia.start();bgmedia.setlooping(true);bisbgmusicon = true;generategame(irow * icol);/ splashhandle.sendemptymessagedelayed(msg_timer, second_interval);if (timer != null)timer.cancel();timer = new timer(timerupdate);timer.scheduleatfixedrate(new timertask() public void run() settimer();, 0, second_interval);if (dogtimer != null)dogtimer.cancel();dogtimer = new timer(timerdog);dogtimer.scheduleatfixedrate(new timertask() overridepublic void run() / todo auto-generated method stubif (idogflag = dog_step_left) splashhandle.sendemptymessage(msg_dog_step_left);idogflag = dog_step_right; else if (idogflag = dog_step_right) splashhandle.sendemptymessage(msg_dog_step_right);idogflag = dog_step_left;, 0, second_interval_dog);textview tv = (textview) findviewbyid(r.id.txtstep);tv.settext(string.valueof(imatchs);toast.maketext(this, touch menu button to start new game,toast.length_short).show();4.3 游戲菜單模塊4.3.1 游戲菜單主界面游戲菜單界面(如圖4-7所示)有9中不同的游戲方式可供用戶選擇,這個(gè)設(shè)置可以豐富游戲的方式,讓用戶可以體驗(yàn)不同的游戲內(nèi)容。圖4-7游戲菜單主界面這是activity的跳轉(zhuǎn),代碼如下:intent intent = new intent(memory.this, themelistcontroller.class);startactivity(intent);4.3.2 水果類(lèi)型設(shè)置可以選擇水果類(lèi)型的游戲內(nèi)容如圖4-8所示。圖4-8水果類(lèi)型界面4.3.3旗幟類(lèi)型設(shè)置可以選擇旗幟類(lèi)型的游戲內(nèi)容如圖4-9所示。圖4-9旗幟類(lèi)型界面4.3.4表情類(lèi)型設(shè)置可以選擇表情類(lèi)型的游戲內(nèi)容如圖4-10所示。圖4-10表情類(lèi)型界面4.3.5 動(dòng)物類(lèi)型設(shè)置可以選擇動(dòng)物類(lèi)型的游戲內(nèi)容如圖4-11所示。圖4-11動(dòng)物類(lèi)型界面4.3.6 物品類(lèi)型設(shè)置可以選擇物品類(lèi)型的游戲內(nèi)容如圖4-12所示。圖4-12物品類(lèi)型界面4.3.7 msn類(lèi)型設(shè)置可以選擇msn類(lèi)型的游戲內(nèi)容如圖4-13所示。圖4-13msn類(lèi)型界面4.3.8 食物類(lèi)型設(shè)置可以選擇食物類(lèi)型的游戲內(nèi)容如圖4-14所示。圖4-14食物類(lèi)型界面4.3.9 圣誕類(lèi)型設(shè)置可以選擇圣誕類(lèi)型的游戲內(nèi)容如圖4-15所示。圖4-15圣誕類(lèi)型界面4.3.10 類(lèi)型是否可以使用在每種游戲類(lèi)型的下方會(huì)提示是否能進(jìn)行此類(lèi)型的選擇,如果可以選擇則是can use(如圖4-16),否則為used(如圖4-17)。圖4-16可以使用類(lèi)型圖4-17不可以使用類(lèi)型第一個(gè)界面運(yùn)用了listview,通過(guò)適配器來(lái)將圖片和文字布局到界面上,其代碼如下:themeitemadapter arrayadapter = new themeitemadapter(this,r.layout.themerow,this.arryitems);listview lvtheme = (listview)findviewbyid(r.id.lvtheme); lvtheme.setadapter(arrayadapter); lvtheme.setonitemclicklistener ( new onitemclicklistener() overridepublic void onitemclick(adapterview parent, view view, int position, long id) log.v(item click, :+position);themeitem item = arryitems.get(position);intent intent = new intent(themelistcontroller.this,mythemegrid.class);intent.putextra( getstring(r.string.param_icontag) , item.geticontag();if(item.getstatus().equals(used)intent.putextra(getstring(r.string.param_iconstatus), 10);elseintent.putextra(getstring(r.string.param_iconstatus), 11);startactivityforresult(intent,5000); );點(diǎn)擊每一項(xiàng)都會(huì)跳進(jìn)該類(lèi)型的設(shè)置界面,該界面會(huì)顯示該類(lèi)型的所有圖片,運(yùn)用的是gridview,加載適配器后顯示到界面中,代碼如下:imageadapter adapter = new imageadapter(this,stag);grid.setadapter(adapter);button btnset = (button)findviewbyid(r.id.btnsettheme);btnset.setonclicklistener(mclick);其中imageadapter是自定義適配器,傳入一個(gè)數(shù)組將按照數(shù)據(jù)順序來(lái)排列該類(lèi)型的圖片,代碼如下: imageview imageview; if (convertview = null) / if its not recycle
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 石油開(kāi)采中的社會(huì)責(zé)任與可持續(xù)性考核試卷
- 林業(yè)機(jī)械化林業(yè)機(jī)械研發(fā)與創(chuàng)新考核試卷
- 組織溝通藝術(shù)與團(tuán)隊(duì)協(xié)作考核試卷
- 喀什職業(yè)技術(shù)學(xué)院《建筑計(jì)劃》2023-2024學(xué)年第一學(xué)期期末試卷
- 山東省梁山一中、嘉祥一中2024-2025學(xué)年高三下學(xué)期期末教學(xué)質(zhì)量檢測(cè)試題化學(xué)試題含解析
- 泉州幼兒師范高等專(zhuān)科學(xué)?!秷?zhí)業(yè)醫(yī)師考試實(shí)踐技能培訓(xùn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 寧夏長(zhǎng)慶中學(xué)2025年高三下學(xué)期第二次摸底考試語(yǔ)文試題含解析
- 平?jīng)雎殬I(yè)技術(shù)學(xué)院《日語(yǔ)口語(yǔ)》2023-2024學(xué)年第二學(xué)期期末試卷
- 南昌醫(yī)學(xué)院《建筑遺產(chǎn)保護(hù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 山東省廣饒縣重點(diǎn)中學(xué)2025年初三物理試題9月25日第4周測(cè)試題含解析
- 課件:《中華民族共同體概論》第一講 中華民族共同體基礎(chǔ)理論
- 小學(xué)生心理健康主題班會(huì)課件
- 安檢證高級(jí)測(cè)試卷附答案
- 2024年四川省南充市中考道德與法治試卷真題(含官方答案及詳解)
- DB43 3001-2024 工業(yè)廢水高氯酸鹽污染物排放標(biāo)準(zhǔn)
- 衛(wèi)生院基本公共衛(wèi)生服務(wù)項(xiàng)目工作計(jì)劃
- JBT 14588-2023 激光加工鏡頭 (正式版)
- DL-T5001-2014火力發(fā)電廠工程測(cè)量技術(shù)規(guī)程
- JBT 3300-2024 平衡重式叉車(chē) 整機(jī)試驗(yàn)方法(正式版)
- 七年級(jí)語(yǔ)文下冊(cè)專(zhuān)項(xiàng)練習(xí)知識(shí)(對(duì)聯(lián))
- 2024-2030年中國(guó)順式1,4-丁烯二醇行業(yè)市場(chǎng)競(jìng)爭(zhēng)態(tài)勢(shì)及未來(lái)趨勢(shì)研判報(bào)告
評(píng)論
0/150
提交評(píng)論