基于安卓系統(tǒng)的游戲開發(fā)與設計畢業(yè)設計.doc_第1頁
基于安卓系統(tǒng)的游戲開發(fā)與設計畢業(yè)設計.doc_第2頁
基于安卓系統(tǒng)的游戲開發(fā)與設計畢業(yè)設計.doc_第3頁
基于安卓系統(tǒng)的游戲開發(fā)與設計畢業(yè)設計.doc_第4頁
基于安卓系統(tǒng)的游戲開發(fā)與設計畢業(yè)設計.doc_第5頁
已閱讀5頁,還剩46頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

電子科技大學畢業(yè)論文(設計) 基于安卓系統(tǒng)的游戲開發(fā)與設計第1章 緒 論1.1課題的背景、目的與意義2007年,google公司推出了android手機操作系統(tǒng),該系統(tǒng)是基于linux平臺的開源手機操作系統(tǒng),并且該系統(tǒng)已經(jīng)成為了新3g時代的主流移動智能平臺之一,根據(jù)調(diào)查,在中國基于android操作系統(tǒng)的智能手機在中國智能手機總銷量中所占的比例已經(jīng)達到了52%,越來越多的手機用戶在接觸安卓手機。android是一種以linux為基礎的開放源代碼操作系統(tǒng),主要使用于便攜設備。目前尚未有統(tǒng)一中文名稱,中國大陸地區(qū)較多人使用“安卓”或“安智”。android操作系統(tǒng)最初由andy runbin開發(fā),最初主要支持手機。2005年由google收購注資,并組建開發(fā)手機聯(lián)盟開發(fā)改良,逐漸擴展到平板電腦及其他領域上。android的主要競爭對手是蘋果手機的ios及rim的blackberry os。2011年第一季度,android在全球的市場份額首次超過塞班系統(tǒng),躍居全球第一。 2012年2月數(shù)據(jù),android占據(jù)全球智能手機操作系統(tǒng)市場52.5%的份額,中國市場占有率為68.4%。移動互聯(lián)網(wǎng),就是將移動通信和互聯(lián)網(wǎng)二者結(jié)合起來,成為一體。在最近幾年里,移動通信和互聯(lián)網(wǎng)成為當今世界發(fā)展最快、市場潛力最大、前景最誘人的兩大業(yè)務,它們的增長速度都是任何預測家未曾預料到的,所以移動互聯(lián)網(wǎng)可以預見將會創(chuàng)造怎樣的經(jīng)濟神話。伴隨著移動互聯(lián)網(wǎng)的快速發(fā)展,智能手機的快速普及,傳統(tǒng)的制質(zhì)地圖已經(jīng)不能滿足現(xiàn)在市民的便利出行。運行在安卓系統(tǒng)平臺的游戲,運行在安卓平臺的游戲深受大家的喜愛?,F(xiàn)在,android游戲不但可以運行于智能手機,也可以運行在平板電腦上。1.2國內(nèi)外現(xiàn)狀將向?qū)I(yè)化、大規(guī)?;较虬l(fā)展 隨著各平臺對opengl es支持能力的大力加強,使得開發(fā)復雜的3d場景游戲成為可能。更多顯示芯片對android的支持,硬件性能將不再成為制約專業(yè)化游戲發(fā)展的瓶頸。越來越多在pc、psp、ps3、xbox360等各游戲平臺占有領先地位的專業(yè)游戲公司將向android等手機平臺領域快速滲透,使得游戲的規(guī)劃更加向?qū)I(yè)化方向發(fā)展。 2. 將向網(wǎng)絡化方向發(fā)展 隨著各平臺對無線通信網(wǎng)絡、wifi網(wǎng)絡、藍牙網(wǎng)絡的良好支持,游戲?qū)?chuàng)新出更好的游戲性和用戶本驗。網(wǎng)絡游戲,多人游戲,聯(lián)機對戰(zhàn)等將進一步強化玩家對游戲的粘著度,并且容易通過對道具等的控制產(chǎn)生營利模式。玩家之間對交互能力的需求也會促成未來的游戲向網(wǎng)絡化發(fā)展進程的加快。 3. 將向休閑化、時間片化方向發(fā)展 移動設備的隨身性使是休閑小游戲?qū)⒌玫娇焖俚陌l(fā)展。移動設備對分散時間的利用促進了游戲向時間片化發(fā)展,即一個游戲可以隨時開始,隨時結(jié)束,充分利用用戶分散的時間片來運行。作為時下最熱門的手機系統(tǒng),android游戲擁有廣大的用戶群,所以android游戲的開發(fā)也顯得相當重要,不僅要有娛樂性,也需要一定的益智性。方塊拼圖是一個開發(fā)用戶智力的小游戲,每個關卡都需要動點腦筋,同時擁有評星系統(tǒng),可以為用戶帶來一定的刺激性,不斷的去提高自己的過關速度。第2章 系統(tǒng)需求分析2.1 需求概括2.1.1目標該游戲簡單容易上手,更有一定的益智性,可以鍛煉你的記憶能力,也有一定的娛樂性,其中不同游戲類型能讓你感覺到這個游戲的多樣性2.1.2用戶類型和特征用戶主要是16歲至45歲的手機用戶群,用戶只需要操作手機界面就能夠進行游戲的操作。2.1.3運行環(huán)境(1) 硬件資源裝載了android系統(tǒng)的智能手機。(2) 軟件資源操作系統(tǒng): windows xp或windows 7。android sdkjdk:jdk1.6。eclipse2.2 android環(huán)境搭建在開始android開發(fā)之旅啟動之前,首先要搭建環(huán)境,然后創(chuàng)建一個簡單的helloworld。本文的主題如下:2.2.1環(huán)境搭建1.jdk安裝如果你還沒有jdk的話,可以去這里下載,接下來的工作就是安裝提示一步一步走。設置環(huán)境變量步驟如下:1.我的電腦-屬性-高級-環(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: 在開始追加 %java_home%bin;5.note:前面四步設置環(huán)境變量對搭建android開發(fā)環(huán)境不是必須的,可以跳過。安裝完成之后,可以在檢查jdk是否安裝成功。打開cmd窗口,輸入java version 查看jdk的版本信息。如圖2-1所示: 圖2-1 驗證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,下載完成后解壓到任意路徑。運行sdk setup.exe,點擊available packages。如果沒有出現(xiàn)可安裝的包,請點擊settings,選中misc中的force https:/.這項,再點擊available packages 。選擇希望安裝的sdk及其文檔或者其它包,點擊installation selected、accept all、install accepted,開始下載安裝所選包在用戶變量中新建path值為:android sdk中的tools絕對路徑(本機為d:androiddevelopandroid-sdk-windowstools)。如圖2-3所示:圖2-3設置android sdk的環(huán)境變量“確定”后,重新啟動計算機。重啟計算機以后,進入cmd命令窗口,檢查sdk是不是安裝成功。運行 android h 如果有圖2-4所示以下的輸出,表明安裝成功:圖2-4驗證android sdk是否安裝成功4.adt安裝打開 eclipse ide,進入菜單中的 help - install new software點擊add.按鈕,彈出對話框要求輸入name和location:name自己隨便取,location輸入/android/eclipse。如圖2-5所示:圖2-5 add site框圖確定返回后,在work with后的下拉列表中選擇我們剛才添加的adt,我們會看到下面出有developer tools,展開它會有android ddms和android development tool,勾選他們。 如圖2-6所示:圖2-6 install 框圖然后就是按提示一步一步next。完成之后:選擇window preferences.在左邊的面板選擇android,然后在右側(cè)點擊browse.并選中sdk路徑,本機為:d:androiddevelopandroid-sdk-windows點擊apply、ok。配置完成。5.創(chuàng)建avd為使android應用程序可以在模擬器上運行,必須創(chuàng)建avd。1、在eclipse中。選擇windows android sdk and avd manager2、點擊左側(cè)面板的virtual devices,再右側(cè)點擊new3、填入name,選擇target的api,sd card大小任意,skin隨便選,hardware目前保持默認值4、點擊create avd即可完成創(chuàng)建avd注意:如果你點擊左側(cè)面板的virtual devices,再右側(cè)點擊new ,而target下拉列表沒有可選項時,這時候你:點擊左側(cè)面板的available packages,在右側(cè)勾選/android/repository/repository.xml,如圖2-7所示:圖2-7 available packages框圖然后點擊install selected按鈕,接下來就是按提示做就行了要做這兩步,原因是在1.3、android sdk安裝中沒有安裝一些必要的可用包(available packages)。2.2.2 helloworld通過file - new - project 菜單,建立新項目android project。然后填寫必要的參數(shù),如圖2-8所示:(注意這里我勾選的是google apis,你可以選你喜歡的,但你要創(chuàng)建相應的avd)。圖2-8 hello word框圖相關參數(shù)的說明:project name: 包含這個項目的文件夾的名稱。 package name: 包名,遵循java規(guī)范,用包名來區(qū)分不同的類是很重要的,我用的是helloworld.test。 activity name: 這是項目的主類名,這個類將會是android的activity類的子類。一個activity類是一個簡單的啟動程序和控制程序的類。它可以根據(jù)需要創(chuàng)建界面,但不是必須的。 application name: 一個易讀的標題在你的應用程序上。 在選擇欄的 use default location 選項,允許你選擇一個已存在的項目。 點擊finish后,點擊eclipse的run菜單選擇run configurations選擇“android application”,點擊在左上角(按鈕像一張紙上有個“+”號)或者雙擊“android application”, 有個新的選項“new_configuration”(可以改為我們喜歡的名字)。在右側(cè)android面板中點擊browse,選擇helloworld在target面板的automatic中勾選相應的avd,如果沒有可用的avd的話,你需要點擊右下角的manager,然后新建相應的avd。如圖2-9所示:圖2-9 target框圖然后點run按鈕即可,運行成功的話會有android的模擬器界面,如圖2-10所示:圖2-10安卓模擬器界面2.3可行性分析可行性分析是在全面調(diào)查基礎上,針對新系統(tǒng)的開發(fā)是否具備必要性和可能性,對新系統(tǒng)的開發(fā)從技術、經(jīng)濟、運行的方面進行分析和研究,以避免投資失誤,保證新系統(tǒng)開發(fā)成功??尚行匝芯康哪康木褪怯米钚〉拇鷥r在盡可能短的時間內(nèi)確定問題是否能夠解決。這部分將從以下三個方面進行研究:技術可行性、經(jīng)濟可行性、操作可行性。1.技術可行性android游戲需要掌握java開發(fā)語言和android系統(tǒng),另外對于算法也要有所掌握。 2.經(jīng)濟可行性android游戲需要的硬件資源不大,已有google提供android系統(tǒng)平臺,只需要一臺智能手機,手機客戶端即可體驗該游戲帶來的益智和趣味性。3.操作可行性android游戲的開發(fā)需要具備一定的android開發(fā)技術和對算法技術的掌握,懂得操作智能手機。2.4相關技術簡介本系統(tǒng)的用戶為所有使用手機客戶端的客戶,本系統(tǒng)擁有游戲難度選擇;游戲類型選擇;而且還有各種不同的游戲特效,相關技術如下:2.4.1 java開發(fā)語言它最初被命名為oak,目標設定在家用電器等小型系統(tǒng)的編程語言,來解決諸如電視機、電話、鬧鐘、烤面包機等家用電器的控制和通訊問題。由于這些智能化家電的市場需求沒有預期的高,sun放棄了該項計劃。就在oak幾近失敗之時,隨著互聯(lián)網(wǎng)的發(fā)展,sun看到了oak在計算機網(wǎng)絡上的廣闊應用前景,于是改造了oak,以“java”的名稱正式發(fā)布。 jjava 編程語言的風格十分接近c、c+語言。java是一個純的面向?qū)ο蟮某绦蛟O計語言,它繼承了 c+ 語言面向?qū)ο蠹夹g的核心,java舍棄了c +語言中容易引起錯誤的指針(以引用取代)、運算符重載(operator overloading)、多重繼承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的對象所占據(jù)的內(nèi)存空間,使得程序員不用再為內(nèi)存管理而擔憂。在 java se 1.5 版本中,java 又引入了泛型編程(generic programming)、類型安全的枚舉、不定長參數(shù)和自動裝/拆箱等語言特性。 java 不同于一般的編譯執(zhí)行計算機語言和解釋執(zhí)行計算機語言。它首先將源代碼編譯成二進制字節(jié)碼(bytecode),然后依賴各種不同平臺上的虛擬機來解釋執(zhí)行字節(jié)碼,從而實現(xiàn)了“一次編譯、到處執(zhí)行”的跨平臺特性。不過,每次的編譯執(zhí)行需要消耗一定的時間,這同時也在一定程度上降低了 java 程序的運行效率。但在 j2se 1.4.2 發(fā)布后,java 的執(zhí)行速度有了大幅提升。 與傳統(tǒng)程序不同,sun 公司在推出 java 之際就將其作為一種開放的技術。全球數(shù)以萬計的 java 開發(fā)公司被要求所設計的 java 軟件必須相互兼容?!癹ava 語言靠群體的力量而非公司的力量”是 sun 公司的口號之一,并獲得了廣大軟件開發(fā)商的認同。這與微軟公司所倡導的注重精英和封閉式的模式完全不同。 sun 公司對 java 編程語言的解釋是:java 編程語言是個簡單、面向?qū)ο?、分布式、解釋性、健壯、安全與系統(tǒng)無關、可移植、高性能、多線程和動態(tài)的語言。 java 平臺是基于 java 語言的平臺。這樣的平臺目前非常流行,因此微軟公司推出了與之競爭的.net平臺以及模仿 java 的 c#語言。2.4.2 android開發(fā)android的系統(tǒng)架構(gòu)和其它操作系統(tǒng)一樣,采用了分層的架構(gòu)。android分為四個層,從高層到低層分別是應用程序?qū)?、應用程序框架層、系統(tǒng)運行庫層和linux核心層。 android是以linux為核心的手機操作平臺,作為一款開放式的操作系統(tǒng),隨著android的快速發(fā)展,如今已允許開發(fā)者使用多種編程語言來開發(fā)android應用程序,而不再是以前只能使用java開發(fā)android應用程序的單一局面,因而受到眾多開發(fā)者的歡迎,成為真正意義上的開放式操作系統(tǒng)。 在android中,開發(fā)者可以使用java作為編程語言來開發(fā)應用程序,也可以通過ndk使用c/c+作為編程語言來開發(fā)應用程序,也可使用sl4a來使用其他各種腳本語言進行編程,還有其他諸如:qt(qt for android)、mono(mono for android)等一些著名編程框架也開始支持android編程,甚至通過monodriod,開發(fā)者還可以使用c#作為編程語言來開發(fā)應用程序。另外,谷歌還在2009年特別發(fā)布了針對初學者的android simple語言,該語言類似basic 語言。而在網(wǎng)頁編程語言方面,javascript,ajaxa,html5,jquery、sencha、dojo、mobl、phonegap等等都已經(jīng)支持android開發(fā)。 而在android系統(tǒng)底層方面,android使用c/c+作為開發(fā)語言2。 應用程序(部分) 早期的android應用程序開發(fā),通常通過android sdk(android軟件開發(fā)包)下使用java作為編程語言來開發(fā)應用程序,但通過不同的軟件開發(fā)包,則使用的編程語言也不同。 例如開發(fā)者可以通過android ndk(android native開發(fā)包)使用c語言或者c+語言來作為編程語言開發(fā)應用程序。同時谷歌還推出了適合初學者編程使用的simple語言,該語言類似微軟公司的visual basic語言。此外,谷歌公司還推出了google app inventor開發(fā)工具,該開發(fā)工具可以快速地構(gòu)建應用程序,方便新手開發(fā)者。 java開發(fā)方面 android支持使用java作為編程語言來開發(fā)應用程序,而android的java開發(fā)方面從接口到功能,都有層出不窮的變化??紤]到java虛擬機的效率和資源占用,谷歌重新設計了android的java,以便能提高效率和減少資源占用,因而與j2me等不同。如圖2-11 圖2-11 android結(jié)構(gòu)其中activity等同于j2me的midlet,一個 activity 類(class)負責創(chuàng)建視窗(windows),一個活動中的activity就是在 foreground(前景)模式,背景運行的程序叫做service。兩者之間通過由serviceconnection和aidl連結(jié),達到復數(shù)程序同時運行效果。如果運行中的 activity 全部畫面被其他 activity 取代時,該 activity 便被停止(stopped),甚至被系統(tǒng)清除(kill)。 view等同于j2me的displayable,程序人員可以通過 view 類與“xml layout”檔將ui放置在視窗上,android 1.5的版本可以利用 view 打造出所謂的 widgets,其實widget只是view的一種,所以可以使用xml來設計layout,htc的android hero手機即含有大量的widget。至于viewgroup 是各種layout 的基礎抽象類(abstract class),viewgroup之內(nèi)還可以有viewgroup。view的構(gòu)造函數(shù)不需要再activity中調(diào)用,但是displayable的是必須的,在activity 中,要通過findviewbyid()來從xml 中取得view,android的view類的顯示很大程度上是從xml中讀取的。view 與事件(event)息息相關,兩者之間通過listener 結(jié)合在一起,每一個view都可以注冊一個event listener,例如:當view要處理用戶觸碰(touch)的事件時,就要向android框架注冊view.onclicklistener。另外還有bitmap等同于j2me的image2。 2.4.3 遞歸算法程序調(diào)用自身的編程技巧稱為遞歸( recursion)。一個過程或函數(shù)在其定義或說明中有直接或間接調(diào)用自身的一種方法,它通常把一個大型復雜的問題層層轉(zhuǎn)化為一個與原問題相似的規(guī)模較小的問題來求解,遞歸策略只需少量的程序就可描述出解題過程所需要的多次重復計算,大大地減少了程序的代碼量。遞歸的能力在于用有限的語句來定義對象的無限集合。一般來說,遞歸需要有邊界條件、遞歸前進段和遞歸返回段。當邊界條件不滿足時,遞歸前進;當邊界條件滿足時,遞歸返回。注意:(1) 遞歸就是在過程或函數(shù)里調(diào)用自身;(2) 在使用遞歸策略時,必須有一個明確的遞歸結(jié)束條件,稱為遞歸出口4。 第3章 項目設計3.1項目總體設計根據(jù)前面對該游戲所提出的需求,我將該系統(tǒng)分為8個部分,分別是游戲開始界面設計,游戲選關界面設計,游戲界面設計,游戲關卡評分功能,游戲排行功能,計算游戲得分,計算通關時間,游戲音樂的控制,游戲幫助提示功能。如圖3-1所示:android游戲游戲音樂游戲進程游戲特效游戲開始游戲難度選擇游戲菜單 圖3-1安卓游戲框架圖3.2功能模塊設計3.2.1游戲開始模塊游戲的入口點,一個游戲的入口需要做特別的設計,這樣才能給人生動形象,新穎個性的感覺,才能引起游戲玩家的興趣。3.2.2游戲難度選擇模塊在這個模塊中加入了游戲不同難度的設置,讓新用戶可以很好的上手此游戲,讓老用戶可以挑戰(zhàn)更高的游戲難度,增加了游戲的可玩性。3.2.3游戲菜單模塊這個模塊主要是豐富了游戲的多樣性,加入了許多不同的游戲元素,讓游戲用戶操作起來不會枯燥乏味,增加了游戲的可玩性。3.2.4游戲特效模塊這個模塊則是為了使游戲看起來更加的生動有趣,游戲特效可以使得游戲看起來更加的生動讓游戲的畫面更加的生動。3.2.5游戲進程模塊這個模塊可以讓游戲操作者知道當前已經(jīng)進行的游戲時間和游戲需要通關所剩的步驟,這是個具有人性化的設計。3.2.6游戲音樂模塊這個模塊則是控制游戲的音樂開關的模塊,可以讓游戲操作者自行選擇是否開啟游戲背景音樂。3.3技術框架設計android系統(tǒng)共分為4層,從高到低分別是應用層,應用框架層,系統(tǒng)運行層和linux內(nèi)核層。應用層:應用是用java語言編寫的運行在虛擬機上的程序,google最開始時就在android系統(tǒng)中捆綁了一些核心應用,比如郵件客戶端,短消息程序,日歷,地圖,瀏覽器等。應用框架層:這一層是編寫google發(fā)布的核心應用時所使用的api框架,開發(fā)人員同樣可以使用這些框架來開發(fā)自己的應用,這樣便簡化了程序開發(fā)的框架設計,但是必須遵守其框架的開發(fā)原則系統(tǒng)運行庫層:當使用android應用框架時,android系統(tǒng)會通過一些c/c+庫來支持我們使用的各個組件,使其能更好的為我們服務。內(nèi)核層:android的核心系統(tǒng)服務基于linux2.6內(nèi)核,如安全性,內(nèi)在管理。 第4章 系統(tǒng)實現(xiàn)在上一章著重討論了系統(tǒng)各個模塊功能的設計,并詳細分析了每一個模塊的功能。在本章將具體討論如何實現(xiàn)功能模塊,最終實現(xiàn)整個系統(tǒng)。經(jīng)過這個階段的設計工作,應該得出對目標系統(tǒng)的描述,各個activity界面之間的開發(fā)。4.1 游戲開始模塊4.11游戲開始主界面游戲開始界面需要做得既簡單又不失個性。所以通過不斷的設計和思考,得到如下的效果,其中該界面在云彩的地方添加了相應的動畫,是界面顯得更加生動,下面兩張圖可以看出其效果,如圖4-1以及4-2所示。圖4-1主界面云朵位置一圖4-2主界面云朵位置二圖4-1和圖4-2的云彩分別在不同的位置。4.1.2 云的動畫效果設計/動畫由另外的文件設置,這里將文件取出獲取動畫效果。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技術。還有采用標志的方式來作為基礎來判定能不能進行點擊翻牌。4.2 游戲難度選擇模塊4.2.1 游戲難度選擇游戲難度選擇會出現(xiàn)三種難度可供選擇,分別為簡易難度(easy);普通難度(normal);困難難度(hard),用戶可以根據(jù)自己的情況進行選擇。下圖為第一次運行的時候的難度選擇界面,如圖4-3所示:圖4-3難度選擇主界面點擊menu按鈕出現(xiàn)對話框,對話框是引入的xml文件來進行布局,布局代碼如下: 4.2.2 簡易難度選擇當用戶選擇了簡易難度并且點擊了開始按鈕后會跳轉(zhuǎn)到另一個界面如圖4-4所示,簡易難度是一個4x4的矩陣也就是用戶需要進行成功的連接8次就可以通關。圖4-4簡易難度界面4.2.3 普通難度選擇當用戶選擇了簡易難度并且點擊了開始按鈕后會跳轉(zhuǎn)到另一個界面如圖4-5所示,簡易難度是一個4x6的矩陣也就是用戶需要進行成功的連接12次就可以通關。圖4-5普通難度界面4.2.4 困難難度選擇當用戶選擇了簡易難度并且點擊了開始按鈕后會跳轉(zhuǎn)到另一個界面如圖4-6所示,簡易難度是一個6x6的矩陣也就是用戶需要進行成功的連接18次就可以通關。圖4-6困難難度界面難度主要是通過矩陣來控制,難度越大,矩陣越大,根據(jù)矩陣的長寬來設置用戶游戲界面的地圖,具體代碼如下: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中不同的游戲方式可供用戶選擇,這個設置可以豐富游戲的方式,讓用戶可以體驗不同的游戲內(nèi)容。圖4-7游戲菜單主界面這是activity的跳轉(zhuǎn),代碼如下:intent intent = new intent(memory.this, themelistcontroller.class);startactivity(intent);4.3.2 水果類型設置可以選擇水果類型的游戲內(nèi)容如圖4-8所示。圖4-8水果類型界面4.3.3旗幟類型設置可以選擇旗幟類型的游戲內(nèi)容如圖4-9所示。圖4-9旗幟類型界面4.3.4表情類型設置可以選擇表情類型的游戲內(nèi)容如圖4-10所示。圖4-10表情類型界面4.3.5 動物類型設置可以選擇動物類型的游戲內(nèi)容如圖4-11所示。圖4-11動物類型界面4.3.6 物品類型設置可以選擇物品類型的游戲內(nèi)容如圖4-12所示。圖4-12物品類型界面4.3.7 msn類型設置可以選擇msn類型的游戲內(nèi)容如圖4-13所示。圖4-13msn類型界面4.3.8 食物類型設置可以選擇食物類型的游戲內(nèi)容如圖4-14所示。圖4-14食物類型界面4.3.9 圣誕類型設置可以選擇圣誕類型的游戲內(nèi)容如圖4-15所示。圖4-15圣誕類型界面4.3.10 類型是否可以使用在每種游戲類型的下方會提示是否能進行此類型的選擇,如果可以選擇則是can use(如圖4-16),否則為used(如圖4-17)。圖4-16可以使用類型圖4-17不可以使用類型第一個界面運用了listview,通過適配器來將圖片和文字布局到界面上,其代碼如下: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); );點擊每一項都會跳進該類型的設置界面,該界面會顯示該類型的所有圖片,運用的是gridview,加載適配器后顯示到界面中,代碼如下:imageadapter adapter = new imageadapter(this,stag);grid.setadapter(adapter);button btnset = (button)findviewbyid(r.id.btnsettheme);btnset.setonclicklistener(mclick);其中imageadapter是自定義適配器,傳入一個數(shù)組將按照數(shù)據(jù)順序來排列該類型的圖片,代碼如下: imageview imageview; if (convertview = null) / if its not recycle

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論