基于android數(shù)獨游戲設計_畢業(yè)設計論文.doc
《基于android數(shù)獨游戲設計_畢業(yè)設計論文.doc》由會員分享,可在線閱讀,更多相關《基于android數(shù)獨游戲設計_畢業(yè)設計論文.doc(47頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、畢業(yè)設計(論文) 題題 目目: 基于 Android 數(shù)獨游戲設計 I 基于 Android 數(shù)獨游戲設計 摘摘 要要 移動互聯(lián)網(wǎng)時代的到來極大的改變了我們的生活,而 Android 是一種以 Linux 為基 礎的開放源碼操作系統(tǒng)迅速占領了智能機操作系統(tǒng),所以在 android 環(huán)境下開發(fā)顯得尤 為必要。Android 是開放性體系架構(gòu),不僅具有非常好的開發(fā)、調(diào)試環(huán)境,而且還支持各 種可擴展的用戶體驗,包括豐富的圖形組件、多媒體支持功能以及強大的瀏覽器。因此, 對于軟件從業(yè)人員來說,Android 平臺具有無限的吸引力。 本文就在分析討論 Android 手機軟件開發(fā)技術原理的基礎上,為用戶
2、開發(fā)出基于 Android 平臺的數(shù)獨游戲的軟件。通過對 Android 系統(tǒng)架構(gòu)和應用開發(fā)進行初步研究, 設計一款數(shù)獨游戲。在對系統(tǒng)進行詳細需求分析的基礎上,確定了系統(tǒng)的功能和性能要 求,對游戲的開機動畫,菜單界面、屏幕繪制、時間控制、布局算法等進行了設計。 本文詳細介紹了在 Android 平臺上以 Java 為語言編寫游戲的過程,最終實現(xiàn)了一個 界面友好、操作簡單的手機益智游戲。 關關鍵鍵詞詞:Android 數(shù)獨 智能機 II The design of Sudoku game based on Android Abstract Arrival of the mobile Intern
3、et era has greatly changed our lives, and Android is a Linux- based system quickly occupied the smartphone operation system, Android development is particularly necessary under the circumstances. Androids biggest feature is its open architecture, not only has a very good development and debugging en
4、vironment, but also supports a variety of scalable user experience, including rich graphical components, multimedia support, and powerful browser. Therefore, for software professionals, Android platform has unlimited appeal. In this thesis, the analysis and discussion of Android mobile phone softwar
5、e development technology provide users with better platform to the Sudoku based on Android meteorological software. Through the Android system structure and application development for preliminary research, we designed a Sudoku game. In the system based on the analysis of the detailed requirements,
6、we design the game in the game menu interface, the screen rendering, time control and layout algorithm. This thesis describes the whole development process of Android based smart phone game using Google Android SDK. Finally, we have the software with friendly interface and simple operation. Key Word
7、s: Android ; Sudoku ; Smartphone III 目 錄 摘 要I Abstract.II 第一章 緒論.1 1.1 研究背景1 1.1.1 手機游戲的發(fā)展以及特征1 1.1.2 數(shù)獨游戲背景2 1.2 Android 手機游戲的市場價值.2 1.3 本文主要工作及章節(jié)結(jié)構(gòu).3 第二章 Android 平臺概述.4 2.1 Android 系統(tǒng)簡介4 2.2 Android 系統(tǒng)特性4 2.3 Android 操作系統(tǒng)框架結(jié)構(gòu).5 2.3.1 應用程序6 2.3.2 應用程序框架6 2.3.3 庫與運行環(huán)境7 2.3.4 內(nèi)核7 2.4 Android 應用程序構(gòu)成.8
8、 2.4.1Activity8 2.4.2 Broadcast Receiver9 2.4.3 Service10 2.4.4 Content Provider10 2.5 Android 應用程序的生命周期.11 第三章 數(shù)獨游戲的設計.13 3.1 游戲功能簡介13 3.2 游戲策劃以及準備工作14 3.3 游戲的架構(gòu).16 3.3.1 各類的介紹16 3.3.2 游戲的框架簡介18 IV 第四章 基于 Android 平臺數(shù)獨游戲的實現(xiàn).19 4.1 歡迎界面的設計和實現(xiàn).19 4.1.1 主類 KLSDActivity 實現(xiàn)19 4.1.2 歡迎界面 WelcomeView 類的實現(xiàn)2
9、0 4.1.3 WelcomeViewDrawThread 類和 WelcomeViewGoThread 類的實現(xiàn)21 4.1.4 HelpView 類和 AboutView 類的實現(xiàn)22 4.2 游戲界面相關類的實現(xiàn).23 4.2.1 游戲界面 GameView 的實現(xiàn)24 4.2.2 時間線程 TimeThread 的實現(xiàn)25 4.3 數(shù)獨算法類的實現(xiàn).25 4.3.1 數(shù)獨算法基本邏輯26 4.3.2 檢測填充結(jié)果27 4.4 游戲的測試和運行.29 4.4.1 游戲測試概述29 4.4.2 測試環(huán)境30 4.4.3 游戲運行結(jié)果31 第五章 總結(jié)和展望.35 5.1 總結(jié).35 5.2
10、 展望.35 參考文獻.36 致 謝.37 南京工業(yè)大學本科生畢業(yè)設計(論文) 1 第一章 緒論 1.11.1 研究背景研究背景 1.1.1 手機游戲的發(fā)展以及特征 手機游戲,是指用戶運行在移動終端的應用程序,具有網(wǎng)絡連接功能,能 夠滿足用戶隨時隨地進行游行的需求,它需要一定的硬件環(huán)境和一定的系統(tǒng)環(huán) 境作為其運行的基礎。手機游戲吸引用戶最大的特點就是其便利性,由于其是 移動終端,所以用戶可以隨時隨地進行游戲。正是因為其便利性,手機游戲市 場有了很大的發(fā)展。在美國,手機游戲作為美國手機用戶最喜歡的移動應用之 一,在iPhone和Android等智能終端推出后發(fā)展迅速。 手機游戲常見的特征可以總結(jié)
11、如下: 1.龐大的潛在用戶群:全球在使用的移動電話已經(jīng)超過 10 億部,而且這個 數(shù)字每天都在不斷增加。在除美國之外的各個發(fā)達國家,手機用戶都比計算機 用戶多。手機游戲潛在的市場比其他任何平臺,比如 PlayStation 和 GameBoy 都要大。 2.便攜性與移動性:在控制臺游戲時代,GameBoy 熱銷的一個原因就是便 攜性人們可以隨時隨地沉浸在自己喜歡的游戲中,還可以隨時隨地搶購自 己喜歡的裝備或?qū)櫸?。和游戲控制臺或者 PC 相比,手機雖然可能不是一個理想 的游戲設備,但畢竟人們總是隨時隨身攜帶,這樣手機游戲很可能成為人們消 遣時間的首選。手機便攜性、移動性的特征更能滿足用戶隨時隨地
12、玩游戲的需 求,用戶利用排隊、等車的時間進行游戲,手機游戲碎片化的特性凸顯。調(diào)查 顯示,29.8%的用戶在用手機玩游戲以后電腦端玩游戲的時間減少,手機游戲已 經(jīng)開始搶奪電腦游戲時間。22.4%的用戶手機游戲時間越來越長,僅有 10%的用 戶時間變短,手機游戲已逐漸成為一種普遍的娛樂方式。 3.支持網(wǎng)絡:因為手機是網(wǎng)絡設備,在一定限制因素下可以實現(xiàn)多人在線 游戲。隨著移動網(wǎng)絡的發(fā)展,移動游戲也越來越多的被大家接受,對于之前長 期通知市場的掌機來說造成了不少的沖擊。市場研究公司 IDC 和 App Annie 報 第一章 緒論 2 告顯示 2013 年第一季度 iOS 和 Android 平臺游戲
13、業(yè)務營收是掌機的 3 倍。 1.1.2 數(shù)獨游戲背景 數(shù)獨的前身為“九宮格” ,最早起源于中國。但當時的算法比現(xiàn)在的更為復 雜,要求縱向、橫向、斜向上的三個數(shù)字之和等于 15,而不是數(shù)字不能重復。 儒家典籍易經(jīng)中的“九宮圖”也是來源于此。 到了 18 世紀末,瑞士數(shù)學家萊昂哈德歐文又發(fā)明了一種叫做“拉丁方塊” 的游戲,之后不久,美國的一家數(shù)字邏輯游戲雜志開始刊登這類游戲,使此類 游戲得到良好發(fā)展,之后又在日本得到了廣泛的傳播。2004 年,第一個“數(shù)獨” 游戲被刊登上了英國泰晤士報的封面,此時開始數(shù)獨游戲才真正為世界所 知曉。 數(shù)獨游戲的規(guī)則很簡單,只需要在空格處填寫19的數(shù)字,并保證每個數(shù)字
14、 在每個九宮格內(nèi)只出現(xiàn)一次,而一般的游戲過程是系統(tǒng)隨機生成一個棋局,然 后玩家需要在空白處填上相應的數(shù)字使其滿足游戲規(guī)則。由于此類游戲操作簡 單,不需要特定的語言基礎,也不需要進行數(shù)字運算且可玩性高、鍛煉思維、 開發(fā)大腦,所以很快風靡全球。 1.21.2 AndroidAndroid 手機游戲的市場價值手機游戲的市場價值 Android 是 Google 開發(fā)的基于 Linux 平臺的開源手機操作系統(tǒng)。它包括操 作系統(tǒng)、用戶界面和應用程序移動電話工作所需的全部軟件,而且不存在 任何以往阻礙移動產(chǎn)業(yè)創(chuàng)新的專有權障礙2。Google 與開放手機聯(lián)盟合作開發(fā) 了 Android,這個聯(lián)盟由包括中國移
15、動、摩托羅拉、高通、宏達電和 T-Mobile 在內(nèi)的 30 多家技術和無線應用的領軍企業(yè)組成。Google 通過與運營商、設備 制造商、開發(fā)商和其他有關各方結(jié)成深層次的合作伙伴關系,希望借助建立標 準化、開放式的移動電話軟件平臺,在移動產(chǎn)業(yè)內(nèi)形成一個開放式的生態(tài)系統(tǒng)。 Android平臺上的游戲相比應用軟件,不需要進行嚴格的市場細分,不需要 針對目標用戶量身定制。這是因為游戲玩家的核心需求是統(tǒng)一的,那就是:娛 樂與打發(fā)時間(乃至更高層面的競技需求和群體認同需求),這種需求附著于特 南京工業(yè)大學本科生畢業(yè)設計(論文) 3 定的社會發(fā)展階段,不受地域的限制,甚至于能夠穿透文化壁壘。因此,絕大 多
16、數(shù)種類的游戲都具備傳染性與普適性,每一個售出的游戲都將會點燃周圍潛 在玩家的激情,最終吞噬整個需求市場。由此可知,幾乎每一個Android手機用 戶都是游戲的需求者,都是潛在的顧客,現(xiàn)今的1000多萬Android用戶不過是冰 山一角,隨著Android手機市場進一步壯大,游戲的市場容量將具備更大的增長 空間3。 1.31.3 本文主要工作及章節(jié)結(jié)構(gòu)本文主要工作及章節(jié)結(jié)構(gòu) 整篇論文共分為六個部分,其主要內(nèi)容安排如下: 第一章 引言。介紹論文的研究背景、目的和意義。包括課題的背景資料 簡介、國內(nèi)外研究現(xiàn)狀和發(fā)展趨勢、深入地介紹了課題研究的價值。 第二章 Android 平臺概述。這部分主要是介紹
17、了智能手機系統(tǒng)現(xiàn)狀、 Android 的功能特征、Android 系統(tǒng)的特點以及 Android 的體系結(jié)構(gòu)。 第三章 數(shù)獨游戲的設計。對游戲相關策劃,功能以及架構(gòu)進行介紹。 第四章 數(shù)獨游戲的實現(xiàn)。這部分主要介紹了游戲的界面、游戲中的邏輯 處理以及該游戲今后的改進和優(yōu)化。 第五章 總結(jié)和展望。對整篇論文加以總結(jié)與回顧以及對未來的展望。 第二章 Android 平臺概述 4 第二章 Android 平臺概述 本章將介紹Android 這個基于Linux開發(fā)平臺,首先我們會介紹 Android 操作系統(tǒng),然后講述其特性,接著講述其系統(tǒng)框架,其次我們會重點介紹其應 用程序的構(gòu)成模塊,最后會介紹其生
18、命周期。 2.12.1 AndroidAndroid 系統(tǒng)簡介系統(tǒng)簡介 Android 是谷歌公司發(fā)布的手機操作系統(tǒng),它是基于Linux 平臺的開源手 機操作系統(tǒng),谷歌公司將要把其打造為基于移動終端的真正開放的移動軟件平 臺,不僅擁有移動電話所需要的工作軟件,而且在專利權方面能夠不侵犯他 人權利去推動移動互聯(lián)網(wǎng)的創(chuàng)新。 谷歌公司為了開發(fā)Android,與開放手機聯(lián)盟進行了合作,手機開放聯(lián)盟由 全球30 多家移動開發(fā)和手機應用的領先企業(yè)組成。谷歌公司不僅僅和運營商達 成了合作關系、而且與設備制造商以及開發(fā)商保持長期合作,目的就在于利用 其優(yōu)勢建立移動軟件平臺,其特點是標準化、開放式的。Andro
19、id是谷歌公司未 來企業(yè)戰(zhàn)略的一部分,其目的是為了在任何時候任何地點能夠提供信息 4。 2.22.2 AndroidAndroid 系統(tǒng)特性系統(tǒng)特性 Android系統(tǒng)特性如下所示: 1.應用框架:Android系統(tǒng)組件,用于開發(fā)流程,兩個特性:可重用性和可 替代性。 2.Dalvik 虛擬機:在Android系統(tǒng)中, Dalvik虛擬機是一種Java 虛擬機, 是Google公司自主開發(fā),其代號為Dalvik,占用資源比較小,運行效率比較高。 3.集成瀏覽器:引擎 WebKit,其特性是開源。 4.優(yōu)化圖形:強大的自定義二維圖形庫?;贠penGL ES 1.0 標準的3D 圖 形功能,在移
20、動3D 開發(fā)中有著至關重要的地位。 5.SQLite 數(shù)據(jù)庫:SQLite 提供結(jié)構(gòu)化的數(shù)據(jù)存儲。它是一款輕型免費的 南京工業(yè)大學本科生畢業(yè)設計(論文) 5 且開源的數(shù)據(jù)庫,設計目標是嵌入式的。它具備占用資源低、需要的內(nèi)存空間 少、處理速度較快,并且還支持事務處理功能等優(yōu)點。 6.多媒體支持:支持各種通用的音視頻和靜態(tài)圖像格式 (MPEG4、MP3、JPG、PNG、GIF、AAC、H.264、AMR)。 7.GSM 技術:(依賴硬件)Global System for Mobile Communications,全 球移動通訊系統(tǒng),俗稱全球通,是第二代移動通信技術,其開發(fā)目的是讓全球各 地可以
21、共同使用一個移動電話網(wǎng)絡標準,讓用戶使用一部手機就能行遍全球。 8.藍牙,EDGE,3G,and Wi-Fi:(依賴硬件)藍牙和Wi-Fi 都是一種短距離 的無線連接技術,在短距離內(nèi)可以實現(xiàn)話音和數(shù)據(jù)的無線傳輸。EDGE(Enhanced Data Rate for GSM Evolution),是增強型數(shù)據(jù)速率GSM 演進技術。 9.Camera,GPS,Compass,and Accelerometer:(依賴硬件)GPS(Global Positioning System),即全球定位系統(tǒng)。它是一個由覆蓋全球的24 顆衛(wèi)星組 成的衛(wèi)星系統(tǒng)。Compass是一個開放源代碼的Java 搜索引
22、擎框架。 10.強大的開發(fā)環(huán)境:包括一個設備模擬器,調(diào)試工具,內(nèi)存和性能檢測, 以及Eclipse 11.IDE 的開發(fā)插件。Eclipse集成開發(fā)環(huán)境。 2.32.3 AndroidAndroid 操作系統(tǒng)框架結(jié)構(gòu)操作系統(tǒng)框架結(jié)構(gòu) Android 作為一個開源的移動設備的平臺,其軟件層次結(jié)構(gòu)自上而下分為 四個層次,分別是:應用程序(Application)、應用程序框架(Application Framework)、各種庫(Libraries)和Android 運行環(huán)境(RunTime)、Linux 內(nèi)核 (Linux Kernel)。 第二章 Android 平臺概述 6 圖 2.1 Go
23、ogle 手機操作系統(tǒng)平臺-Android 的架構(gòu)模型 2.3.1 應用程序 突破傳統(tǒng)思維,提供更好的用戶體驗。Android 將會移植一系列的核心應 用,包括E-mail 客戶端,SMS 程序,日歷,GPS 地圖,瀏覽器,聯(lián)系人等等。 所有的應用程序都是由Java語言完成的。應用程序是無界限的,可以在平 等條件下創(chuàng)建,還可以輕松地嵌入Web,可以并行運行5。 2.3.2 應用程序框架 Android 應用程序由一個或多個組件組成,Android 的應用程序框架為應 用程序?qū)拥拈_發(fā)者提供APIs,它實際上是一個應用程序的框架。由于上層的應 用程序是以Java 構(gòu)建的,因此本層次提供的首先包含了
24、UI 程序中所需要的各 種控件: 例如:Views(視圖組件)包括lists(列表),grids(柵格),text boxes(文 本框),buttons(按鈕)等。甚至一個嵌入式的Web 瀏覽器。 一個 Android 的應用程序可以利用應用程序框架中的以下幾個部分: Activity(活動),Broadcast Receiver(廣播接收者),Service(服務), Content Provider(內(nèi)容提供者) 南京工業(yè)大學本科生畢業(yè)設計(論文) 7 2.3.3 庫與運行環(huán)境 Android 包含一套C/C+庫,能被系統(tǒng)中不同的組件使用。這些功能通過 Android應用框架展現(xiàn)給開發(fā)人
25、員。下面列出一些核心庫: (1)System C library:從BSD 繼承來的標準C 系統(tǒng)函數(shù)庫,也是系統(tǒng)中最 為底層的庫,是專門為基于嵌入式Linux 的設備制定的。 (2)Media Framework:該庫支持多種常用的音頻、視頻格式的回放和錄制, 同時支持靜態(tài)圖片文件,包括MPEG4、H.264、MP3、AAC、AMR、JPG 和PNG 等。 (3)Surface Manager:用于管理不同應用對圖形顯示子系統(tǒng)和2D 和3D 圖 形層的訪問。 (4)WebKit:一個時尚的web 瀏覽器引擎,為Android 瀏覽器和內(nèi)嵌的web view 提供實現(xiàn)。 (5)SGL:隱藏的2D
26、 圖形引擎。 (6)3D libraries:基于OpenGL ES 1.0 APIs 實現(xiàn)的庫,該庫可以使用硬 件3D 加速,或者高度優(yōu)化的3D 軟加速。 (7)FreeType:位圖和向量模式的字體繪制。 (8)SQLite:一個強大的,輕量的關系型數(shù)據(jù)庫引擎,用于所有的應用。 Android 運行時Android 包含一組核心庫,提供了Java 語言核心庫內(nèi)的大 部分功能。Android運行環(huán)境主要指的是虛擬機技術Dalvik。Dalvik虛擬機 依賴Linux kernel來實現(xiàn)一些潛在功能,例如線程和底層內(nèi)存管理。Dalvik虛 擬機和一般Java虛擬機(JavaVM)不同,它執(zhí)行的
27、不是Java標準的字節(jié)碼而是 Dalvik可執(zhí)行格式(.dex)中執(zhí)行文件,該格式的文件經(jīng)過優(yōu)化占用很小的內(nèi)存。 在執(zhí)行的過程中,每一個應用程序即一個進程(Linux 的一個Process) 。二者 最大的區(qū)別在于Java VM 是以基于棧的虛擬機(Stack-based),而Dalvik是基于 寄存器的虛擬機(Register-based)6。顯然,后者最大的好處在于可以根據(jù)硬 件實現(xiàn)更大的優(yōu)化,這更適合移動設備的特點。每個Android應用程序都在 Dalvik VM的一個實例中運行,這個實例駐留在一個由Linux內(nèi)核管理的進程中。 第二章 Android 平臺概述 8 2.3.4 內(nèi)核
28、Android使用Linux2.6 內(nèi)核來提供系統(tǒng)的核心服務,例如:安全機制,內(nèi) 存管理,進程管理,網(wǎng)絡堆棧。Android更多的是需要一些與移動設備相關的驅(qū) 動程序。其主要的驅(qū)動有:顯示驅(qū)動(Display Driver)、Flash內(nèi)存驅(qū)動(Flash Memory Driver)、照相機驅(qū)動(Camera Driver)、音頻驅(qū)動(Audio Driver)、 Wi-Fi驅(qū)動(Camera Driver)、鍵盤驅(qū)動(KeyBoard Driver)、藍牙驅(qū)動 (Bluetooth Driver)、Binder IPC驅(qū)動(Android一個特殊的驅(qū)動程序,具有單 獨的設備節(jié)點,提供進程間
29、通訊的功能)7。 2.42.4 AndroidAndroid 應用程序構(gòu)成應用程序構(gòu)成 Android應用程序與其他很多計算機平臺的應用程序不同,他們沒有唯一的 啟動入口,一個Android應用程序是由多個不同組件組合而成,組件間通過 Intent實現(xiàn)通信。Android系統(tǒng)的基本組件包括Activity、Service、Broadcast Receiver和Content Provider等,要實現(xiàn)組件間通信,還需要Intent消息組件。 并不是每個Android應用程序都必須具備這四個組件,很多時候只需要這四種中 的某幾種就可以了。除此之外,應用程序的所有組件還都必須在 AndroidMa
30、nifest.xml中聲明8。這是一個XML配置文件,這個配置文件用于定 義應用程序的組件、組件的功能及必要條件等。這個配置文件是任何一個 Android應用程序所必需的。 2.4.1 Activity Activity 可以說是開發(fā)人員最常用的組件,同時也屬于Android 最基本的 組成部分之一。Android 程序中,一般一個Activity 代表手機屏幕上的一屏。 舉例來說,如果將手機比作一個瀏覽器,那么一個Activity 就相當于一個網(wǎng)頁。 在Activity 中,可以添加多個視圖,然后為這些視圖添加一些事件處理。這些 視圖可以是按鈕、文本框、列表等??梢钥吹?,Activity 的
31、概念和網(wǎng)頁的概念 相當類似。一般一個Android 應用是由多個Activity 組成,同時這些Activity 南京工業(yè)大學本科生畢業(yè)設計(論文) 9 相互之間可以進行跳轉(zhuǎn),例如,按下某個Activity 中的Button 按鈕后,可能 會跳轉(zhuǎn)到一個其他的Activity。不過和網(wǎng)頁跳轉(zhuǎn)稍有不同,Activity之間的跳 轉(zhuǎn)可以有返回值,例如,在Activity A 跳轉(zhuǎn)到Activity B 后,那么當 Activity B運行結(jié)束時,可能會返回給Activity A 一個值。在多個Activity 交流的過程中,這種返回機制是相當實用的。當用戶進入一個新的屏幕時,之 前的屏幕會轉(zhuǎn)入暫停狀
32、態(tài),并且保存在歷史堆棧中。正是由于歷史堆棧的存在, 用戶可以通過返回操作,返回到之前打開過的所有屏幕。Android默認的是將應 用程序從開始到當前的每一個屏幕都保存到堆棧中,不過與此同時,Android還 提供了很方便的機制,讓開發(fā)人員自定義某個屏幕是否需要保存到歷史堆棧。 Activity 的跳轉(zhuǎn)實現(xiàn),必須借助于Intent 類。因此Intent 在Android 應用中 占據(jù)的地位是極其重要的。簡單來說,一個Intent 就是對一個將要執(zhí)行的操作 請求的抽象描述。 Intent 的描述,主要包含有兩個數(shù)據(jù)結(jié)構(gòu):動作(action)和動作對應的數(shù) 據(jù)(data)。動作有很多種,系統(tǒng)中最常見
33、的動作類型有:MAIN(表明該Activity 是應用程序的入口)、VIEW、PICK、EDIT 等等;而動作對應的數(shù)據(jù)一般以URI 的形式表示,例如:要查看某一個網(wǎng)頁,則需要創(chuàng)建Intent,它的動作類型為 VIEW,對應的數(shù)據(jù)應該是該網(wǎng)頁的網(wǎng)址。值得一提的是,有一個類叫 IntentFilter,它是Intent的相關類。如果說Intent是一個有效的操作請求, 那么一個IntentFiler則用于描述一個Activity(或者Intent Receiver等)能夠 接收哪些Intent的請求。比如系統(tǒng)瀏覽器的Activity用于查看某一個網(wǎng)頁,那 么它用于接收Intent的IntentF
34、ilter,要定義類型為VIEW的動作并且能夠過濾 表示一個網(wǎng)頁網(wǎng)址的 URI。通常IntentFilter要被注冊在AndroidManifest.xml文件中。 Activity 之間的跳轉(zhuǎn)正是通過解析各種Intent 來實現(xiàn)的。例如一個Activity 調(diào)用startActivity(intent)方法,希望跳轉(zhuǎn)到其他的Activity 時,會觸發(fā)系 統(tǒng)的Intent 解析過程,在所有安裝的應用程序中已注冊的IntentFilter 中查 找,并最終挑選出能夠匹配Intent 的Activity。然后這個新的Activity 因為 接收到Intent 的請求而開始運行,完成Activit
35、y 的跳轉(zhuǎn)。這種跳轉(zhuǎn)機制提供 了兩個關鍵好處: 第二章 Android 平臺概述 10 (1)操作請求被Intent 封裝起來,方便Activity 重復利用。 (2)相互跳轉(zhuǎn)的多個Activity 之間實現(xiàn)了松耦合。只要IntentFilier 保持 不變,一個ctivity 可以隨意修改,而不用擔心其他Activity 找不到它。 2.4.2 Broadcast Receiver 應用程序可以通過Broadcast Receiver 監(jiān)聽一個外部的事件,并做出響應。 例如,當應用程序需要對電話呼入這個外部事件做出反應時,可以利用 Broadcast Receiver 進行處理。再如,當一個
36、后臺下載任務成功的事件發(fā)生時, 需要提示用戶下載完成,仍然可以利用Broadcast Receiver 來進行處理。 Broadcast Receiver不能生成UI,也就是說對于用戶來說是透明的,用戶 是看不到的。Broadcast Receiver只能通過NotificationManager來通知用戶這 些事件發(fā)生了。Broadcast Receiver既可以在AndroidManifest.xml中注冊,也 可以在運行時的代碼中使用Context.registerReceiver()進行注冊。注冊完成 之后,當事件來臨的時候,即使程序沒有啟動,系統(tǒng)依然可以根據(jù)定義,自動 啟動程序。各種
37、應用也可以通過使用Context.sendBroadcast()將它們自己的 Intent Broadcast廣播給其他應用程序。 2.4.3 Service Service是一種程序,它可以運行很長時間,但是它卻沒有用戶界面,不可 交互,而且不能自己運行。它需要通過某一個Activity或者其他的Context對象 來調(diào)用12。最常見的例子,比如說用戶正在運行一個音樂播放器的程序,此時 如果想瀏覽網(wǎng)頁,那么,在用戶導航到Android的瀏覽器以后,雖然進入了瀏覽 器屏幕,但是歌曲的播放并沒有停止,而是在后臺繼續(xù)播放著。其實播放的動 作正是由播放音樂的Service執(zhí)行著。當然,如果需要的話,
38、Service也是可以 停止。通過startService(Intent service)可以啟動一個Service,通過 Context.bindService()可以綁定一個Service。 2.4.4 Content Provider 對于數(shù)據(jù)存儲,Android與其他的操作系統(tǒng)有一點不太一樣,即數(shù)據(jù)在 南京工業(yè)大學本科生畢業(yè)設計(論文) 11 Android程序中都是私有的,這些數(shù)據(jù)包括文件類型和數(shù)據(jù)庫類型以及其他類型 的數(shù)據(jù)。這樣系統(tǒng)和應用程序的數(shù)據(jù)就各自獨立起來,以避免受到某些不正常 程序或是病毒的影響。不過這并不代表各應用程序之間就因此而無法進行數(shù)據(jù) 交換了。當某個應用程序希望與
39、其它的應用共享其數(shù)據(jù)時,Android提供的 Content Provider就可以發(fā)揮作用了。在實現(xiàn)Content Provider的抽象接口以 后,程序便可以將自己的數(shù)據(jù)暴露出去,其他程序只要有權限,就可以通過這 一套標準而統(tǒng)一的接口,讀取或是刪除該程序的數(shù)據(jù)13。 2.52.5 AndroidAndroid 應用程序的生命周期應用程序的生命周期 Android 應用程序一個完整的生命周期是從應用程序的創(chuàng)建到結(jié)束的全過 程,與其他系統(tǒng)不同,Android 應用程序的生命周期是不受進程本身控制的, 而是由Android 系統(tǒng)來決定的,Android 系統(tǒng)會根據(jù)應用程序?qū)τ脩舻闹匾?及當前系
40、統(tǒng)的負載來決定生命周期的長短。Android 系統(tǒng)的各個進程重要程度 如圖2.2 所示。 前臺進程可見進程服務進程后臺進程空進程 關鍵優(yōu)先級高優(yōu)先級低優(yōu)先級 圖 2.2 Android 應用程序進程優(yōu)先級 (1)前臺進程,是Android 系統(tǒng)中最重要的進程,是與用戶正在進行交互的 進程。有以下四種情況:Activity 正在與用戶進行交互;進程被Activity 調(diào) 用,而且這個進程正在與用戶進行交互;進程服務正在執(zhí)行聲明中的回調(diào)函數(shù), 如onCreate()、onStart()、onDestroy();進程的Broadcast Receiver 在執(zhí)行 onReceive()函數(shù)。Andr
41、oid 系統(tǒng)在多個前臺進程同時運行時,可能會出現(xiàn)資源 不足的情況,此時會清除部分前臺進程,以保證主要的用戶界面能夠及時響應。 (2)可見進程,是指部分應用程序界面能夠被用戶看見,卻不在前臺與用戶 進行交互,不影響界面事件的進程。如果應用程序進程包含一個服務,且這個 服務正被用戶可見的Activity 調(diào)用,則此進程同樣被視為可見進程。Android 進程一般存在少量的可見進程,只有在特殊情況下,Android 系統(tǒng)才會為保證 第二章 Android 平臺概述 12 前臺進程的資源而清除可見進程。 (3)服務進程,服務進程是指包含已啟動服務的進程。該進程沒有用戶界面 并在后臺長期運行。除非And
42、roid 系統(tǒng)不能保證前臺進程和可見進程所必要的 資源,否則不會強行清除服務進程。 (4)后臺進程,后臺進程是指不包括任何已經(jīng)啟動的服務,而且沒有任何用 戶可見的Activity 的進程。Android 系統(tǒng)中一般存在數(shù)量較多的后臺進程,在 系統(tǒng)資源緊張時系統(tǒng)將會優(yōu)先清除用戶較長時間沒有見到的后臺進程。 (5)空進程,空進程是不包含任何活躍組件的進程,空進程在系統(tǒng)緊張時會 被首先清除。但為了提高Android 應用程序的啟動速度,Android 系統(tǒng)會將空 進程保存在系統(tǒng)內(nèi)存用,在用戶重新啟動該程序時,空進程會被重新使用。 當兩個應用程序具有相同的優(yōu)先級時,處于較低優(yōu)先級且運行時間最長的 進程
43、將會首先被終止。進程的優(yōu)先級也受到進程間依賴性的影響,如果一個應 用程序依賴于第二個應用程序所提供的服務或者內(nèi)容提供器,那么第二個應用 程序至少會擁有與它所支持的這個應用程序相同的優(yōu)先級。進程的優(yōu)先級取決 于所有組件中優(yōu)先級最高的部分,進程的優(yōu)先級會根據(jù)其他進程的依賴關系而 變化。 南京工業(yè)大學本科生畢業(yè)設計(論文) 13 第三章 數(shù)獨游戲的設計 3.13.1 游戲功能簡介游戲功能簡介 數(shù)獨游戲的規(guī)則很簡單,只需在空格處填入 19 的數(shù)字,并保證每個數(shù) 字在每個九宮格內(nèi)只能出現(xiàn)一次,且每個數(shù)字在每一行、每一列也只能出現(xiàn)一 次,而一般的游戲過程是系統(tǒng)隨機生成一個棋局,然后玩家需要在空白處填上 相
44、應的數(shù)字使其滿足游戲規(guī)則。游戲框架如下圖所示: 點擊圖標 開機動畫 計時區(qū)域 提示暫停 游戲區(qū)域 退出游戲 功能區(qū)域 開始游戲 菜單界面 幫助游戲關于游戲 退出換題 圖3.1 游戲框架圖 該游戲的運行步驟如下。 1.啟動游戲后首先進入的便是歡迎界面的動畫,在歡迎界面中,“點擊屏 幕繼續(xù)”閃動,達到提示的效果。 2.在游戲界面點擊屏幕,便進入菜單界面。 3.在菜單界面單擊“關于游戲”菜單可進入“關于”界面,在“關于”界 面中介紹了該游戲的目標平臺及開發(fā)日期。 4.在菜單界面單擊“幫助游戲”菜單可進入“幫助”界面,在“幫助”界 第三章 數(shù)獨游戲的設計 14 面介紹了游戲的基本規(guī)則。 5.在菜單界面
45、單擊“開始游戲”菜單可進入游戲界面。 6.當在游戲過程中單擊“暫停”按鈕時,便進入暫停狀態(tài)。 7在游戲過程中隨時可以通過“換題”按鈕來更換題目。 8.當玩家單擊“放棄”按鈕時,會提示玩家是否真的需要退出游戲,然后 根據(jù)玩家的選擇進行操作。 9.當玩家單擊“提示”按鈕時,界面上會出現(xiàn)一個紅心表示當前可以提示 玩家輸入數(shù)字,此時再單擊空白處,便會自動填上正確答案。 10.當玩家將界面中所有的空白全部填滿數(shù)字時,系統(tǒng)會自動判斷所填寫的 數(shù)字正確與否,當有錯誤時,會出現(xiàn)游戲失敗界面;當全部填寫正確時,會出 現(xiàn)游戲勝利界面。 11.在勝利或者失敗狀態(tài)時,玩家可以通過點擊屏幕任意位置返回歡迎界面。 12.
46、在菜單界面單擊“退出游戲”便可退出該游戲。 3.2 游戲策劃以及準備工作游戲策劃以及準備工作 3.2.1歡迎界面的策劃 歡迎界面的主要實現(xiàn)的是開機動畫以及菜單選項的功能。在開機動畫上準 備實現(xiàn)動態(tài)效果,利用圖片刷幀進行實現(xiàn)。 在菜單界面實現(xiàn)游戲的功能選擇,菜單界面就是一張圖片,鼠標點擊相應 的區(qū)域?qū)崿F(xiàn)相應的功能。在這里運用到坐標系,如下圖所示 南京工業(yè)大學本科生畢業(yè)設計(論文) 15 圖3.2 菜單界面 手機屏幕分辨率是480320,所以橫縱坐標如圖所示。 當點擊的區(qū)域坐落于60welcomeView.bitmapsID.length-1) welcomeView.drawIndex = we
47、lcomeView.bitmapsID.length-10; if(welcomeView.drawIndex%5 = 0) welcomeView.drawString = !welcomeView.drawString; try Thread.sleep(sleepSpan);/睡眠 catch(Exception e) e.printStackTrace();/打印異常信息 分析該類的run() 方法,控制drawIndex的值,每次循環(huán)將歡迎界面的 drawIndex 加1,然后判斷是否到達數(shù)組的最后,當?shù)竭_最后時,將其減10,然 后繼續(xù)進行循環(huán)。同時,判斷drawIndex是否為5,
48、這樣每循環(huán)5次改變 drawString的值,從而實現(xiàn)文字的閃動效果。 4.1.4 HelpView 類和 AboutView 類的實現(xiàn) 游戲中關于游戲幫助和游戲說明,我們分別通過HelpView類和AboutView類 的實現(xiàn)。HelpView類和AboutView類都是通過onDraw()方法來繪制界面。由于這 兩個類在很大程度上是相似的,所以下面只分析HelpView類,代碼如下所示: public HelpView(KLSDActivity activity) super(activity); this.activity = activity;/得到activity的引用 surfac
49、eHolder = this.getHolder();/獲得surfaceHolder getHolder().addCallback(this);/添加Callback接口的實現(xiàn) helpBitmap = BitmapFactory.decodeResource(getResources(), 南京工業(yè)大學本科生畢業(yè)設計(論文) 23 R.drawable.help); public void onDraw(Canvas canvas) /繪制方法 canvas.drawColor(Color.WHITE);/背景色 canvas.drawBitmap(helpBitmap, 0, 0, n
50、ull);/繪制圖片 public boolean onTouchEvent(MotionEvent event) /鍵盤監(jiān)聽方法 if(event.getAction() = MotionEvent.ACTION_DOWN)/屏幕被按下 double x = event.getX(); double y = event.getY();/得到坐標 if(x270 return super.onTouchEvent(event); public HelpView(KLSDActivity activity) 為“幫助”界面的構(gòu)造器,在 構(gòu)造器中先得到activity 以及surfaceHolde
51、r的引用,然后添加Callback 接口 的實現(xiàn)并對圖片資源進行初始化。 onDraw()為重寫的繪制方法,在該方法中,首先繪制白色背景,然后將 幫助界面的背景圖片繪制到指定位置。 onTouchEvent()為重寫的鍵盤監(jiān)聽方法,當玩家點擊屏幕時,會調(diào)用該 方法來處理玩家的屏幕事件,在“幫助”界面中該方法實現(xiàn)比較簡單,只是判 斷玩家點擊的是否為返回按鈕即可。當玩家點擊返回按鈕時,需要向activity 發(fā)送Handler 消息通知控制器切換屏幕。 4.24.2 游戲界面相關類的實現(xiàn)游戲界面相關類的實現(xiàn) 游戲界面實現(xiàn)游戲展示,計時界面展示,以及功能按鍵。流程圖如下圖所 示: 第四章 基于 An
52、droid 平臺數(shù)獨游戲的實現(xiàn) 24 開始 生成數(shù)獨 填數(shù)區(qū)域 換題 提示 提示暫停計時 暫停填數(shù) 檢測 退出 結(jié)束 是 否 是 否 是 否 是 否 圖 4.2 游戲界面流程圖 4.2.1 游戲界面 GameView 的實現(xiàn) 首先理解下GameView的運行思路,GameView在初始化時候讀取相關圖片信 息,包括背景圖片,數(shù)獨背景框圖片等等,在初始化同時,啟動 GameViewDrawThread線程進行刷幀,TimeThread 線程來更新界面中的時間。當 玩家點擊背景框空白位置,需要繪制數(shù)字鍵盤時,會啟動DrawKeyThread 線程 繪制數(shù)字鍵盤。當玩家點擊按鈕時候,相關方法會被調(diào)用
53、。以上的過程都需要 KLSDActivity的參與管理。 GameView 同樣繼承自SurfaceView 類,其關鍵也是實現(xiàn)onDraw()方法。 onDraw()方法分別繪制游戲界面背景圖片,數(shù)字背景框,選題提示等等按鈕, 時間顯示區(qū)域等。DrawKey()方法實現(xiàn)了數(shù)字鍵盤的繪制,保證在點擊空白框時 候有圓盤數(shù)字選框出現(xiàn)。通過surfaceCreated()和surfaceDestroyed()兩 個方法負責相關線程的啟動和調(diào)用工作。 南京工業(yè)大學本科生畢業(yè)設計(論文) 25 4.2.2 時間線程 TimeThread 的實現(xiàn) TimeThread線程主要用來更新界面中的時間,作為數(shù)獨
54、游戲玩家計時功能, 代碼如下: public class TimeThread extends Thread GameView gameView;/聲明GameView的引用 boolean flag=true;/循環(huán)標志位 public TimeThread(GameView gameView)/構(gòu)造器 this.gameView=gameView;/得到GameView的引用 public void run()/重寫的run方法 while(flag) gameView.time+;/時間自加 try Thread.sleep(1000);/睡眠一秒種 catch(Exception e)
55、/捕獲異常 e.printStackTrace();/打印異常信息 TimeThread 類的實現(xiàn)比較簡單,只需每隔一秒鐘通過gameView.time自加 更改一下GameView 中表示時間的屬性即可。 public TimeThread(GameView gameView) 為時間線程的構(gòu)造器,在構(gòu)造器 中先得到GameView的引用。然后重寫run()方法,通過時間的自加,實現(xiàn)一秒鐘 功能。 4.34.3 數(shù)獨算法類的實現(xiàn)數(shù)獨算法類的實現(xiàn) 數(shù)獨算法類主要實現(xiàn)數(shù)獨的生成以及填入數(shù)字的檢測功能,流程圖如下: 第四章 基于 Android 平臺數(shù)獨游戲的實現(xiàn) 26 開始 生成數(shù)獨 填入數(shù)字
56、符合規(guī)則 游戲成功 結(jié)束 是 否 圖 4.3 WelcomeView 類功能流程圖 4.3.1 數(shù)獨算法基本邏輯 本節(jié)將對數(shù)獨算法類ShuDuSuanFa.java 進行解釋,該類基本上是數(shù)學計算, 通過一定的算法產(chǎn)生所需要的數(shù)獨數(shù)組,通過特定的接口供其他類使用。 該類的目的是創(chuàng)建一個二維數(shù)組來表示數(shù)獨矩陣。使矩陣的每行、每列、 每塊都沒有重復的數(shù)字。算法的簡單思路是先隨機取出一個09 的數(shù)字,然后 檢查其所在的行、列、塊是否都符合要求。當符合要求時繼續(xù)填充下一個,而 當不符合要求時,再次隨機取出一個沒有取出過的數(shù)字,再判斷。當9 個數(shù)字 都取出過后還沒有找到符合要求的數(shù)字時,進行回退處理,即
57、將最后一個取出 的符合要求的數(shù)字進行重新取值,直到所有數(shù)字全部填充完畢。 在求解數(shù)獨時候,運用到回溯法,將所有的解(問題的解空間)按照一定 結(jié)構(gòu)排列,再進行搜索。一般解空間構(gòu)造成為為樹狀結(jié)構(gòu),用深度優(yōu)先的策略 搜索,一般有兩種方式: 1.只需要一個解的話,找到解即停止。 2.需要求出所有解,則需做“樹的遍歷”找到所有解。 回溯法的基本做法是搜索,或是一種組織得井井有條的,能避免不必要搜 索的窮舉式搜索法。這種方法適用于解一些組合數(shù)相當大的問題。 南京工業(yè)大學本科生畢業(yè)設計(論文) 27 回溯法在問題的解空間樹中,按深度優(yōu)先策略,從根結(jié)點出發(fā)搜索解空間 樹。算法搜索至解空間樹的任意一點時,先判斷
58、該結(jié)點是否包含問題的解。如 果肯定不包含,則跳過對該結(jié)點為根的子樹的搜索,逐層向其祖先結(jié)點回溯; 否則,進入該子樹,繼續(xù)按深度優(yōu)先策略搜索。 回溯法是一種搜索算法,其基本思路是:在一個問題中,根據(jù)題意給出的 邊界條件劃定出所有可能解的范圍(稱為可能解) ,根據(jù)題意確定出約束條件。 利用程序順次在所有可能解中搜索時按照深度搜索的方式進行。即在第一層選 定一個滿足約束條件的解,然后以該可能解為出發(fā)點,搜索第二層的一個可能 解(試探) 。如果搜索到第二層的一個可能解,則繼續(xù)搜索第三層得一個可能解。 依次類推,直到所有層得可能解都被找到,則得到了該問題的一個完整解。如 果第二層所有的肯可能解都不滿足約
59、束條件,則返回第一層,放棄原有的可能 解,使用第一層的下一個可能解(回溯) 。一次類推,尋找第二層的一個可能解。 回溯法相對于其他窮舉的特點在于,不必把問題的每一層的所有可能解都 遍歷一遍,只要當前的可能解不滿足約束條件就拋棄該解,尋求下一個可能解, 而不必求解其余的下層解。當當前層得所有可能解都不滿足約束條件,則回溯 到上一層,拋棄上一層的當前可能解。 從以上分析中結(jié)合數(shù)獨問題的規(guī)則,得出數(shù)獨問題的約束條件為: 每一格的數(shù)值范圍僅限 1-9 每一格內(nèi)的數(shù)字在當前行不允許重復 每一格內(nèi)的數(shù)字在當前列不允許重復 每一格內(nèi)的數(shù)字在當前小宮格內(nèi)不允許重復 由此,回溯法通過約束條件的篩選,在所有解中除掉不可能的解,從而獲 得問題的一個或者全部解。 4.3.2 檢測填充結(jié)果 根據(jù)數(shù)獨游戲的規(guī)則,玩家填充 81 個宮格之后,要滿足所有行,所有列 和所有小九宮格內(nèi)不能出現(xiàn)重復的數(shù)字,并以此為條件進行檢測。 第四
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。