基于Android的飛機(jī)大戰(zhàn)游戲設(shè)計與開發(fā)_第1頁
基于Android的飛機(jī)大戰(zhàn)游戲設(shè)計與開發(fā)_第2頁
基于Android的飛機(jī)大戰(zhàn)游戲設(shè)計與開發(fā)_第3頁
基于Android的飛機(jī)大戰(zhàn)游戲設(shè)計與開發(fā)_第4頁
基于Android的飛機(jī)大戰(zhàn)游戲設(shè)計與開發(fā)_第5頁
已閱讀5頁,還剩57頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、LUOYANG NORMAL UNIVERSITY2013屆本科畢業(yè)設(shè)計基于An droid的飛機(jī)大戰(zhàn)游戲設(shè)計與開發(fā)院(系)名稱信息技術(shù)學(xué)院專業(yè)名稱軟件工程學(xué)生姓名學(xué)號指導(dǎo)教師XXX副教授宀兀成時間2013年5月基于Android的飛機(jī)大戰(zhàn)游戲設(shè)計與開發(fā) I基于Android的飛機(jī)大戰(zhàn)游戲設(shè)計與開發(fā) #摘要相信An droid (安卓)已經(jīng)為人們熟知,經(jīng)過 2011年的洗禮,An droid智能手 機(jī)火速上位,甚至說現(xiàn)在手機(jī)系統(tǒng)由IOS和An droid平分也不為過。隨著 An droid 智能手機(jī)在中國內(nèi)地的風(fēng)靡,基于An droid平臺的應(yīng)用開發(fā)也逐漸成為IT開發(fā)的一大熱門。游戲是智能機(jī)不

2、可或缺的應(yīng)用之一,“水果忍者”、“憤怒的小鳥”等 An droid游戲應(yīng)用的成功,讓人看到手機(jī)游戲在 An droid平臺上的巨大發(fā)展空間。 基于此,采用Eclipse和An droid ADT作為集成開發(fā)平臺,開發(fā)本 An droid游戲 APR本應(yīng)用為An droid飛機(jī)大戰(zhàn)游戲,主要有6個操作界面分別為開始界面,游戲 界面,設(shè)置界面,得分界面,Win界面,Lose界面。玩家可以選擇自己進(jìn)入設(shè)置界面對游戲進(jìn)行設(shè)置,或進(jìn)入的分界面查看自己本次操作是否在前六名等操作。作為 游戲背景音樂的存在是不可或缺的,本應(yīng)用在不同的操作界面演奏不同的背景音 樂,玩家還可以在設(shè)置界面設(shè)置背景音樂的大小。由于A

3、n droid控件Activity 的生命周期的特點,本應(yīng)用會在被點擊“ EXIT”按鈕的Activity 中發(fā)送一個EXIT的 廣播,所有的本應(yīng)用的 Activity收到廣播后會自動結(jié)束,使得本應(yīng)用能夠完全的退出系統(tǒng)。本應(yīng)用采用An droid的SurfaceView繪制游戲界面,游戲的主界面美觀, 賞心悅目,以提高玩家對游戲的興趣。游戲的控制模塊應(yīng)該做到易懂、易操作,以 給玩家一個很好的游戲環(huán)境。關(guān)鍵詞:An droid開發(fā);手機(jī)游戲;Java; SQLite洛陽師范學(xué)院2013屆本科生畢業(yè)設(shè)計 #洛陽師范學(xué)院2013屆本科生畢業(yè)設(shè)計 IIAbstractAn droid has bee

4、n known for people, after 2011 years of baptism, An droid smartph one develop ing fast . An droid occupies a large share in the market . An droid game applicati on is successful, it make a pers on see that mobile games on the An droid platform of the huge developme nt space. Based on this,we using E

5、clipse and An droid ADT as in tegrated developme nt platform, to develop the An droid game applicati on.This applicati on for An droid pla ne war games in clude six operati ng in terface, respectively as the start scree n, the game in terface and set in terface, Win in terface, Lose in terface. Play

6、ers can choose in terface to play the game. As the mobile phone game background music is indispensable, the application play different background music in differe nt in terface, players can also set the size of the backgro und music in sett ing in terface.This applicati on using the An droid Surface

7、View to draw game in terface, game in terface pleas ing to the eye by people to play. I n order to give players a good game en vir onment , the con trol module of game should be simple, easy to operate.Keywords : An droid Program ing; Mobile Phone Games ; Java Programi ng ;SQLite基于Android的飛機(jī)大戰(zhàn)游戲設(shè)計與開

8、發(fā)iii基于Android的飛機(jī)大戰(zhàn)游戲設(shè)計與開發(fā)iii TOC o 1-5 h z HYPERLINK l bookmark4 o Current Document 第1章緒論 1 HYPERLINK l bookmark6 o Current Document 1.1系統(tǒng)開發(fā)背景 11.2系統(tǒng)研究目的和意義 1 HYPERLINK l bookmark8 o Current Document 1.3可行性分析 1 HYPERLINK l bookmark10 o Current Document 第2章系統(tǒng)需求分析 2 HYPERLINK l bookmark12 o Current Do

9、cument 2.1用戶功能需求分析 2 HYPERLINK l bookmark14 o Current Document 2.2系統(tǒng)性能要求 3 HYPERLINK l bookmark16 o Current Document 2.3業(yè)務(wù)流程分析 3 HYPERLINK l bookmark18 o Current Document 第3章系統(tǒng)總體設(shè)計 4 HYPERLINK l bookmark20 o Current Document 3.1系統(tǒng)功能模塊分析 4 HYPERLINK l bookmark22 o Current Document 3.1.1系統(tǒng)管理 4 HYPERLI

10、NK l bookmark24 o Current Document 3.1.2 APP應(yīng)用設(shè)置 4 HYPERLINK l bookmark26 o Current Document 3.1.3玩家信息管理 4 HYPERLINK l bookmark28 o Current Document 3.2系統(tǒng)類關(guān)系圖 4 HYPERLINK l bookmark32 o Current Document 3.3系統(tǒng)總體設(shè)計 6 HYPERLINK l bookmark34 o Current Document 第4章系統(tǒng)詳細(xì)設(shè)計 8 HYPERLINK l bookmark36 o Curren

11、t Document 4.1開發(fā)工具簡介 8 HYPERLINK l bookmark38 o Current Document 4.2數(shù)據(jù)庫設(shè)計 8 HYPERLINK l bookmark42 o Current Document DAO(數(shù)據(jù)庫訪問對象) 9 HYPERLINK l bookmark50 o Current Document SQLite 數(shù)據(jù)庫 12 HYPERLINK l bookmark52 o Current Document 4.3游戲界面設(shè)計 12 HYPERLINK l bookmark54 o Current Document 4.3.1開始界面 12 H

12、YPERLINK l bookmark114 o Current Document 4.3.2游戲界面 19 HYPERLINK l bookmark184 o Current Document 4.3.3設(shè)置界面 27 HYPERLINK l bookmark202 o Current Document 得分界面 35 HYPERLINK l bookmark212 o Current Document Win 界面 41 HYPERLINK l bookmark228 o Current Document Lose 界面 47 HYPERLINK l bookmark232 o Curre

13、nt Document 第5章軟件測試和調(diào)試 52 HYPERLINK l bookmark234 o Current Document 5.1白盒測試法 52 HYPERLINK l bookmark236 o Current Document 5.2黑盒測試法 53 HYPERLINK l bookmark238 o Current Document 第6章工作總結(jié)和展望 54 HYPERLINK l bookmark240 o Current Document 參考文獻(xiàn) 55致謝 56基于Android的飛機(jī)大戰(zhàn)游戲設(shè)計與開發(fā) 洛陽師范學(xué)院2013屆本科生畢業(yè)設(shè)計 基于Android的飛

14、機(jī)大戰(zhàn)游戲設(shè)計與開發(fā) 第1章緒論1.1系統(tǒng)開發(fā)背景隨著科技的發(fā)展,現(xiàn)在手機(jī)的功能已不僅僅是簡單的接打電話、收發(fā)短信了。 更多的手機(jī)用戶希望在工作、學(xué)習(xí)之余通過方便靈巧可隨身攜帶的儀器休閑娛樂。 因此,為了迎合眾多用戶的需求并適應(yīng)現(xiàn)在手機(jī)的規(guī)模,我們開發(fā)出一套適合各階 層人士的具有很強(qiáng)的娛樂性和交互性的飛機(jī)小游戲。雖然現(xiàn)在市面上存在著各種各樣的游戲版本,可是飛機(jī)游戲其市場還是相當(dāng)大 的。因為它的特殊在于人們在玩游戲的時候的過程中使愛不釋手。隨著游戲關(guān)卡不 斷提高,其難度也更大,刺激性也更強(qiáng)??梢哉f該游戲的優(yōu)勢在于它的簡單易行, 不論是手機(jī),還是小游戲機(jī),都能很快順利的運(yùn)行。對于在外忙碌的人,不可

15、能花 費大量時間在娛樂上,大型游戲是行不通的。這樣的小游戲剛好迎合了他們的需求。 1.2系統(tǒng)研究目的和意義在如今社會,人們的工作學(xué)習(xí)壓力逐漸增大,生活節(jié)奏逐漸加快,大多數(shù)人沒 有足夠的時間去休閑娛樂,放松自己。這款小型的手機(jī)游戲,可以讓我們隨時隨地 都能享受游戲,從繁重的日常生活中解脫出來。游戲的主界面應(yīng)該力求美觀,賞心悅目,以提高玩家對游戲的興趣。游戲的控 制模塊應(yīng)該做到易懂、易操作,以給玩家一個很好的游戲環(huán)境。1.3可行性分析該系統(tǒng)采用Eclipse集成An droid ADT為開發(fā)平臺進(jìn)行APP開發(fā)。Eclipse是 一個開放的源代碼的、基于 Java的可擴(kuò)展開發(fā)平臺。就其本身而言,它只

16、是一個 框架和一組服務(wù),用于通過插件組件構(gòu)建開發(fā)環(huán)境。雖然大都數(shù)用戶很樂于Eclipse 當(dāng)作Java集成開發(fā)環(huán)境(IDE)來使用,但Eclipse的目標(biāo)卻不僅限于此。Eclipse 還包括插件開發(fā)環(huán)境,這個組件主要針對希望擴(kuò)展Eclipse的軟件開發(fā)人員,因為它允許他們構(gòu)建與Eclipse環(huán)境無縫集成的工具。由于Eclipse中的每樣?xùn)|西都是 插件,對于Eclipse中的每樣?xùn)|西都是插件,對于給 Eclipse提供插件,以及給用 戶提供一致和統(tǒng)一的集成開發(fā)環(huán)境而言,所有工具開發(fā)人員都具有同等的發(fā)揮場 所?;贓clipse的應(yīng)用程序的插件開發(fā)諸如 Siemens公司的PLM產(chǎn)品Teamcen

17、ter 的插件級開發(fā)。An droid 專門針對 Eclipse 開發(fā)做了 ADT(A ndroid Developer Tools)開發(fā)插件,因此該應(yīng)用使用Eclipse開發(fā)完全可行第2章系統(tǒng)需求分析2.1用戶功能需求分析由于本程序簡單易操作,交互性好,對用戶沒什么特別要求。一般用戶經(jīng)過幾分鐘練 系都可以熟悉本游戲的規(guī)則。圖2-1功能界面示例圖分?jǐn)?shù):12IHP:圖2-2游戲界面示例圖2.2系統(tǒng)性能要求實時性本應(yīng)用為手機(jī)游戲因此對于用戶的操作必須做出立即響應(yīng),否則本游戲即為失敗。易操作性單機(jī)手機(jī)游戲的最大特點即為易操作性,用戶在不看說明的情況下也能夠玩,并且在 玩過幾遍之后即熟悉本游戲的規(guī)則。

18、這是本應(yīng)用對于操作性的要求。2.3業(yè)務(wù)流程分析依據(jù)系統(tǒng)的需求分析,得到系統(tǒng)的流程圖如圖2-3所示:圖2-3系統(tǒng)流程圖第3章系統(tǒng)總體設(shè)計3.1系統(tǒng)功能模塊分析當(dāng)前應(yīng)用使用的SurfaceView來繪制 的頁面因 此相對來 說大部 分邏輯都是由Activity 來做處理的。本系統(tǒng)的功能模塊也根據(jù)Activity的不同來劃分成6個功能模塊。3.1.1系統(tǒng)管理各個操作界面布局適當(dāng),顏色搭配等要美觀。各個Activity之間的切換要快速(PS:它們各自的背景音樂也要隨之切換,給用戶以順暢、自然的感覺)。用戶在任何一個 Activity點擊“ EXIT”按鈕或ContextMenu中的“退出”都要成功的將

19、當(dāng)前應(yīng)用掛起的多個Acitivity 和當(dāng)前An droid虛擬機(jī)顯示的Activity 順利的停止,并銷毀。APP應(yīng)用設(shè)置設(shè)置應(yīng)用系統(tǒng)背景音樂聲音大小和游戲難度。使用SeekBar來控制系統(tǒng)音量,使用 RadioGroup來控制飛機(jī)難度。3.1.3玩家信息管理在游戲結(jié)束時對于玩家的名稱和得分進(jìn)行記錄,并在玩家查看排名情況時,以倒序形式顯示前六名玩家的得分和姓名等信息。3.2系統(tǒng)類關(guān)系圖系統(tǒng)實體類、邊界類、控制類之間的關(guān)系如圖3-1所示:Manage 控養(yǎng)+ &ryG&rne0ijllet$M3nsg&f+ Bullet+ Plane+ Sr/GsmfeCataAsss-FfelpfeT +

20、SyG a m & Dra w&r+ SkyGameErfemyFlaneFI a neger+ SkyGh m e S ci&= n R 11 Vn = w+ Sky G a me StartVi eactivity邊畀斟+ Ge m&OverF a i I ureAct i ty+ Gh m e Ov& rSu oo&ssActi vi ty+ S-/GamEOptiQnSuttDnOrtClicxAGtivit-+ SkyGameSooteSunonOnCliotActivity+ Sky GHmeSoren Roll Activity+ SJy G a me StartActi v i

21、 t圖3-1實體類、控制類、邊界類之間的關(guān)系各個界面類之間的關(guān)系如圖3-2所示:圖3-2 APP邊界類關(guān)系3.3系統(tǒng)總體設(shè)計系統(tǒng)的中只有玩家一種用戶,不必向其他的網(wǎng)站或者是教務(wù)系統(tǒng)一樣進(jìn)行身份驗證等操作。玩家點擊應(yīng)用圖標(biāo)直接進(jìn)入應(yīng)用的開始界面。用戶的操作總體可以歸并成如3-3玩家用例圖所顯示的內(nèi)容,子彈的用例圖如圖3-4所示,飛機(jī)的用例圖如圖3-5所示。用戶的操作基本可以劃分為“開始游戲”,“設(shè)置游戲”,“玩游戲”,“查看分 數(shù)”,“退出游戲”這五個用例。圖3-3玩家用例圖圖3-4子彈用例圖圖3-5 飛機(jī)用例圖第4章系統(tǒng)詳細(xì)設(shè)計4.1開發(fā)工具簡介An droid開發(fā)工具(ADT)是一個插件的E

22、clipse IDE,目的是給開發(fā)人員提供一個強(qiáng)大 的、集成的環(huán)境中構(gòu)建 An droid應(yīng)用程序。擴(kuò)展能力的Eclipse ADT讓你迅速建立新的An droid項目,創(chuàng)建一個應(yīng)用程序的用戶 界面,添加基于安卓框架的API,調(diào)試您的應(yīng)用程序使用 An droid SDK工具,生成apk文件 在使用Eclipse運(yùn)行An droid應(yīng)用的時候Eclipse會自動的將生成的apk文件自動的注冊 到An droid虛擬機(jī)中。在Eclipse ADT發(fā)展與高度推薦,是一種最快的方式開始。與引導(dǎo)項目設(shè)置它提供 ,以 及工具集成、定制XML編輯器和調(diào)試輸出窗格,ADT給了你極大的提高在發(fā)展中 An dr

23、oid 應(yīng)用程序。使用Eclipse 集成An droid ADT 做An droid應(yīng)用開發(fā)是目前企業(yè)中常用的 An droid 應(yīng)用開發(fā)方式。本項目在開發(fā)環(huán)境:JDK 1.7Eclipse 3.7.0An droid ADT4.034.2數(shù)據(jù)庫設(shè)計本應(yīng)用使用的是An droid虛擬機(jī)做開發(fā),因此使用的為An droid虛擬機(jī)中自帶的數(shù)據(jù) 庫SQLite。本應(yīng)用只是在針對用戶得分及用戶姓名等基本信息進(jìn)行存儲,因此數(shù)據(jù)庫非 常簡單,僅僅是設(shè)計了一個用來存儲用戶排名信息的表結(jié)構(gòu)。用來存儲用戶基本信息的 compositor_table 的字段信息如圖4-1所示。CREATE TABLE comp

24、ositor_table(id INTEGER PRIMARY KEY,n ame VARCHAR(40) NOT NULL,score INTEGER NOT NULL)c om pos itortab-l e4rcolumnid: INTEGERname: VARCHAR40)score: INTEGER圖 4-1 compositor 表An droid中自帶的SQLiteOpe nHelper作用:一個幫助類,幫助創(chuàng)建數(shù)據(jù)庫和數(shù)據(jù)庫 版本管理。本應(yīng)用直接創(chuàng)建一個 SkyGameDataBaseHelper類繼承An droid自帶的數(shù)據(jù)庫操作類 SQLiteOpenHelper。在 o

25、nCreate()方法中創(chuàng)建表 compositor_table 。public void on Create(SQLiteDatabase db) / TODO Auto-ge nerated method stubString create_table =this.c on text.getResources().getStri ng(R.stri ngsreate_compos_tabie;/ CREATE TABLE compositor_table (id INTEGER PRIMARY KEY, nameVARCHAR(40) NOT NULL,score INTEGER NOT

26、NULL); db.execSQL(create_table);DAO(數(shù)據(jù)庫訪問對象)本應(yīng)用中的數(shù)據(jù)庫訪問對象 SkyGameDataBaseDa采用了單例模式,以保證當(dāng)前應(yīng)用 中只存在一個DAO數(shù)據(jù)庫訪問對象。使用了最簡單的單例,并未從線程安全的角度進(jìn)行進(jìn) 一步的限制,原因在于考慮到當(dāng)前應(yīng)用中只有3個Activity 使用了 DAO由圖4-2可知Activity 之間的切換類似于進(jìn)程對于CPL的占用一樣,當(dāng)前顯示在界面上的Activity 是 活動狀態(tài)而其他Activity則是掛起狀態(tài),因此不必?fù)?dān)心它們的線程同時去創(chuàng)建DAO寸象以引起當(dāng)前系統(tǒng)中多個DAO寸象的狀況。public class

27、 SkyGameDataBaseDao private static SkyGameDataBaseDadnsta nee = n ull;private SQLiteDatabase database = n ull;private Con text con text = nu II;private SkyGameDataBaseHelper helper = n ull;public static SkyGameDataBaseDao getl nsta nee (Con text con text)if(in sta nee = nu ll)in sta nee = new SkyGam

28、eDataBaseDao(c on text);retur n in sta nee;private SkyGameDataBaseDao(C on text con text)this.e on text = con text;helper = new SkyGameDataBaseHelper(c on text,1);while(this.database = helper.getWritableDatabase()=nu II);public void in sertPlayer(SkyGamePlayer player)Stri ng sql = con text.getResour

29、ces().getStri ng(R.stri ngompos_tabie;Conten tValues values = new Con te ntValues(); values.put(score,player.getScore();values.put(”name, player.getName();if(!this.database.isOpe n()this.helper.o nOpe n(this.database);try this.database.begi nTran sactio n();this.database.i nsert(sql, nu II, values);

30、 this.database.setTra nsactio nSuccessful(); catch (Excepti on e) / TODO Auto-ge nerated catch blocke.pri ntStackTrace();fin allythis.database.e ndTra nsacti on();public ArrayList getPlayers()ArrayList players = new ArrayList();String sql =con text.getResources().getStri ng(R.stri ngielect_form_comp

31、os_table_cour)tCursor cursor = database.rawQuery(sql, n ull); cursor.moveToFirst();if(cursor.getCou nt() 0)int count = 0;coun t+;players.add(new SkyGamePlayer(count,cursor.getString(1),cursor.getInt(2); while(cursor.moveToNext()count +;players.add( newSkyGamePlayer(cou nt,cursor.getStri ng(1),cursor

32、.getI nt(2);return players;public void delete()Stri ng sql = con text.getResources().getStri ng(R.stri ngjelete_from_compos_tabie; if(!this.database.isOpe n()this.helper.o nOpe n( this.database);try this.database.begi nTran sacti on();this.database.execSQL(sql);this.database.setTra nsactio nSuccessf

33、ul(); catch (SQLExcepti on e) / TODO Auto-ge nerated catch blocke.pri ntStackTrace();fin allythis.database.e ndTra nsacti on();public void close()if(this.database.isOpe n()this.database.close();圖4-2An droid 中Activity生命周期狀態(tài)圖SQLite 數(shù)據(jù)庫SQLite,是一款輕量級的關(guān)系型數(shù)據(jù)庫。由于它占用的資源非常少,所以在很多嵌入式設(shè)備都是用SQLite來存儲數(shù)據(jù)An droid作為

34、目前主流的移動操作系統(tǒng),完全符合SQLite占用資源少的優(yōu)勢,故在An droid平臺上,集成了一個嵌入式關(guān)系型數(shù)據(jù)庫一SQLite。由于SQLite是輕量級的關(guān)系型數(shù)據(jù)庫,它支持的 SQL語句也是有限的,在使用 SQL 語句獲得前6名玩家的信息時直接使用了 SQLite不支持的TOP語句引起了異常。在查閱 相關(guān)資料后才發(fā)現(xiàn)SQLite不支持TOP語句,因此使用語句DESCLIMIT來代替TOP達(dá)到了 自己想要的只獲得表compositor_table 中的score字段值最大的前六個記錄信息。SELECT * FROM compositor_table ORDER BY score DESC

35、 LIMIT 64.3游戲界面設(shè)計4.3.1開始界面使用SurfaceView將圖4-3中的未被按下的按鈕和圖4-5游戲開始界面背景圖片繪制成游 戲開始界面圖4-6。STARTOPTIONSCOREEXIT*圖4-3未被按下的按鈕圖標(biāo)集圖基于Android的飛機(jī)大戰(zhàn)游戲設(shè)計與開發(fā) 洛陽師范學(xué)院2013屆本科生畢業(yè)設(shè)計 基于Android的飛機(jī)大戰(zhàn)游戲設(shè)計與開發(fā) START OPTION |SCOREAEXIT |4-4被按下的按鈕圖標(biāo)集圖4-5 開始界面背景圖片圖4-6開始界面AndroidManifest .xmlAn droid應(yīng)用程序中,并沒有像C+和Java這樣有main函數(shù)來作為應(yīng)用

36、程序的入口。 An droid應(yīng)用程序提供的是入口 Activity,而非入口函數(shù)。An droidMa nifest.xml 文件中定義了整個 An droid 應(yīng)用所包含的 Activity. 在 AndroidManifest.xml 中將 SkyGameStartActivity 設(shè)置為當(dāng)前 SkyGamel動時,默認(rèn)加 載的Activity ,代碼如下: v/inten t-filterActivity 中注冊 layout在SkyGameStartActivity 的on Create方法中設(shè)置要顯示的layout,方法如下所示: protected void on Create(

37、B un dle savedl nsta nceState) / TODO Auto-ge nerated method stubsuper.o nCreate(savedl nsta nceState);layoutsetContentView(R.layout.sky_game_start_layou); 設(shè)置當(dāng)前 activity 調(diào)用的/其他操作BroadcastReceiver由于本應(yīng)用是有多個Activity 為了解決多個Activity在其中任意一個Activity 結(jié)束時都會相應(yīng)一起退出系統(tǒng),因此針對每一個Activity設(shè)置一個BroadcastReceiver來接收廣播,一

38、旦接收到廣播當(dāng)前Activity自動退出。Activity接收到廣播后退出的代碼如下所示:private BroadcastReceiver exitReceiver = new BroadcastReceiver()Overridepublic void on Receive(C on text con text, I ntent intent) / TODO Auto-ge nerated method stub SkyGameScree nRollActivity.this.fi ni sh();發(fā)送廣播而當(dāng)前Activity 在被按下“ EXIT”或者“退出”按鈕時,會向外界發(fā)送一個廣

39、播,之后結(jié)束自己:Activity activity = (Activity)c on text; Intent intent = new Inten t(EXIT); in te nt.setActio n(EXIT); activity.se ndBroadcast(i nte nt); activity.fi nish(); MediaPlayer (媒體播放器)本應(yīng)用使用An droid的MediaPlayer來演奏每一個頁面的背景音樂。背景音樂可以存放在兩個位置,一個是當(dāng)前工程的 /res/raw 目錄下,如果是存放在該目 錄下的話,在in stall當(dāng)前An droid工程時,需要

40、耗費非常的時間將此類音頻文件上傳到An droid虛擬機(jī)中。另一個存放位置是直接將音頻文件上傳到 DDMS勺/mn t/sdcard/Music 文件夾下,這相當(dāng)于將該音頻文件放入到了 An droid手機(jī)的SD卡上了,相對于存放位置 一來說,該方法在加載An droid工程時消耗的時間比較少。具體向虛擬機(jī)中上傳文件如圖4-7所示:祈3 電-F T 11: / f7 TyjFlug-m Uev_.科籠 Thr 酯曲 H曲p Allacati0f,i TrackerNetwork StatistiEiAlEupJofftf-I + - = Maiw理 DaU;TimePtmni&iSiionsl

41、 白2012-OT-241&33drwxrwxx沖匕mrrt2013-04-09吐陽drwwmrar-ico 凸 awe21M3-04490M7drwMFr-x 3 obb2013-m-0902:57drwxf-W-M B Band1970-01-01WtWd-rrwfflrir4 & Alarms2012-OT-24134d-rwxr-xp & DCtM2012-10-214:41dnumcr-M卜 b Dowmload134d rwxMi L0ST.D1RL2012-2415:3:3di*WKr-Mp B Movirs2Q12-OT-2415=34z 兇 Musk2013-04-090泗d

42、-rwxr-xak47.mpS対対2 2011-02-1635:1 :-rWKF-Ki c4-m.p337760 2011-024605cia-rmerxi .mp3750621 2012-10-2004:S4-rwicr-jit fc-mp3瑚環(huán)兩 2012-10-2004:4L-rw冨 rgam&wer.mpJ2B61M7 2012-10-2005?03-rmr-jf| stairt.mpJ3:就4抽 2012-10-20遜-rwxr-wA Icjr Nolifcfftion-s2013-49-241M4& 占 PieSures2012-W-2415:34d-ftmer-k& Podcas

43、ts2012-CT-2415:34d rwxF-|fB r Rirgtones2012-OT-241534d-nwcr-xsecure2013-4i4-D9吐打drwwP G 5vste*n2012-0-272M1drwxr-r-x圖 4-7 DDMS 向 An droid虛擬機(jī)中上傳文件MediaPlayer使用方法:private MediaPlayer startSo und = nu II; startSo und = new MediaPlayer();try /*從sdcard中獲得音頻文件的路徑*/startSo un d.setDataSource(/mn t/sdcard/M

44、usic/start.mp3);startSo un d.prepare(); catch (IllegalArgume ntExceptio n e) / TODO Auto-ge nerated catch blocke.pri ntStackTrace(); catch (SecurityExcepti on e) / TODO Auto-ge nerated catch blocke.pri ntStackTrace(); catch (IllegalStateExcepti on e) / TODO Auto-ge nerated catch blocke.pri ntStackTr

45、ace(); catch (IOExceptio n e) / TODO Auto-ge nerated catch blocke.pri ntStackTrace();startSo un d.setLoop in g(true) ;/設(shè)置循環(huán)由于當(dāng)前應(yīng)用針對不同的顯示界面(Activity )有不同的背景音樂,因此當(dāng)前Activity 掛起時,對應(yīng)的背景音樂也要掛起(startSou nd.pause()。而在當(dāng)前 Activity 銷毀(destory )時,需要對背景音樂進(jìn)行停止(startSound.stop() )和回收 (startSo un d.release() 操作。 la

46、yout 中調(diào)用 SurfaceView普通的layout設(shè)置與直接調(diào)用 SurfaceView的layout有所不同,一下列出調(diào)用 SurfaceView 的 layout 的格式:vcom.me ngyawei.sky.game.activity.view.SkyGameStartViewan droid:id=+id/skyGameStartPicturean droid:layout_width=wrap_c on te nt an droid:layout_height=wrap_co nte nt v/com.me ngyawei.sky.game.activity.view.Sk

47、yGameStartViewv/Lin earLayout此處使用自定義SurfaceView的絕對路徑來編寫開始頁面的layout文件,使得開始 頁面直接使用該SurfaceView繪制的Bit map作為背景圖片來顯示。SurfaceView所需要設(shè)置下它的SurfaceHolder 和Monitor(實現(xiàn)CallBack接口)屬性 holder = getHolder();mon itor = new Moni tor();holder.addCallback(m on itor);Monitor類的方法:方法 surfaceCreated(SurfaceHolder holder)的主

48、要作用是:在 surfaceview 創(chuàng)建的 繪制SurfaceView的內(nèi)容。方法 surfaceDestroyed(SurfaceHolder holder)的主要作用是:在 surfaceview 銷毀 時對于當(dāng)前SurfaceView中的一些對象做銷毀處理。SurfaceView 的方法:on TouchEve nt(Motio nEve nt eve nt)可以捕獲鼠標(biāo)對于屏幕的觸碰事件,在該方法中對于鼠標(biāo)觸碰的區(qū)域做出判斷如果點擊的為按鈕圖片的位置則會調(diào)用圖4-4中對應(yīng)的被按下按鈕來顯示,如此顯示使用戶有一個可感受的按鈕被按下的動態(tài)即視感,用戶體驗更好。public boolea

49、n on TouchEve nt(Moti on Eve nt eve nt) / TODO Auto-ge nerated method stubint acti on = eve nt.getActio n();float eve ntX = eve nt.getX();float eve ntY = eve nt.getY();if(eve ntX = START_X&(eve ntX +startButto n. getWidth()&(eve ntY = START_Y&(eve ntY = OPTION_X )&(eve ntX = OPTION_Y)&(eve ntY = SCO

50、RE_X&(eve ntX = SCORE_Y&(eve ntY = EXIT_X)&(eve ntX = EXIT_Y)&(eventY = EXIT_Y + exitButton.getHeight()if(action = MotionEvent. ACTION_DOWN)scoreButt on = BitmapFactorydecodeResourcgetResources(), R.drawable.exit_butt on_2);drawExitButt on();if(action = MotionEvent. ACTION_UP)scoreButt on = BitmapFa

51、ctorydecodeResourcgetResources(), R.drawable.exit_butt on _1);drawExitButt on();Activity activity = (Activity)c on text;Intent intent = new Inten t(EXIT);in te nt.setActio n(EXIT);activity.se ndBroadcast(i nte nt);activity.fi nish();return true;4.3.2游戲界面本界面與開始界面都是使用 SurfaceView繪制的界面,由于本界面相對于開始界面更 加復(fù)

52、雜在主線程外創(chuàng)建了子線程來負(fù)責(zé)對于 SurfaceView的繪制工作,主線程負(fù)責(zé)對于各 類對象的控制計算等計算工作。由于游戲界面涉及到的類比較多,且邏輯復(fù)雜,所以在這里只介紹下使用的空間、技 術(shù)以及業(yè)務(wù)邏輯,粘貼部分技術(shù)代碼。繪制的游戲界面如圖4-8所示:圖4-8游戲界面Activity 中注冊 SurfaceView游戲界面并沒有像開始界面那樣注冊 SurfaceView,而是直接在on Create方法中使用代碼注冊的自定義 SurfaceView,如下:private SkyGameScreenRollView sr = null;自定義 surfaceview protected vo

53、id on Create(B un dle saved In sta nceState) / TODO Auto-ge nerated method stubsuper.o nCreate(savedl nsta nceState);sr = new SkyGameScree nRollView(this);sr.setLayoutParams( new LayoutParams(LayoutParamlMATCH_PARENT, LayoutParamsMATCH_PARENT);sr.setId(0 x000101);setC onten tView(sr);4.322 ContextMe

54、nu 控件游戲界面使用了 An droid的Con textMe nu,Con textMe nu顯示的具體效果見圖 4-9。圖 4-9ContextMenu 效果145B9oiQwERTiYuJ0pAsDG|HJKL置XVBNM |儀mt甲irContextMenu針對某個控件,一旦為某個控件設(shè)置了ContextMenu,那么程序員將不能再實現(xiàn)該控件的長按事件處理了。ContextMenu的使用步驟:ContextMenu針對的是控件而不是窗體,構(gòu)建完 ContextMenu后需要與一個控件實施 綁定。綁定的代碼為:super.registerForContextMenu(控件對象)。構(gòu)建C

55、ontextMenu的方法如下:創(chuàng)建一個res/menu/*_context.xml的菜單(當(dāng)前應(yīng)用使用的該方法)。重寫 onCreateContextMenu()回調(diào)函數(shù)。super.registerForContextMenu(控件對象)。為每個菜單項編寫事件。具體操作方法重寫onCreateMenultemSelected回調(diào)函數(shù)。游戲界面的 ContextMenu 的 playing_game_option_menu.xml 內(nèi)容如下:item an droid:id=+id/pg_opti on _exitan droid:title=stri ng/optio n_menu _ex

56、itan droid:showAsActio n= never/item an droid:id=+id/pg_optio n_scorean droid:title=stri ng/optio n_menu _scorean droid:showAsActio n= never/item an droid:id=+id/pg_optio n_startan droid:title=stri ng/optio n_menu _startan droid:showAsActio n= never/item an droid:id=+id/pg_opti on _opti onan droid:t

57、itle=stri ng/optio n_menu _optio nan droid:showAsActio n= never/= this.player.getPla ne_x()&x = this.player.getPla ne_y()&y bloodBegin.getWidth()blood = Bitmap.createBitmap( fullBlood, 0, 0, le ng, fullBlood.getHeight();empty = Bitmap.createBitmap( emptyBlood, le ng, 0, emptyBlood.getWidth()-le ng,

58、emptyBlood.getHeight();canv as.drawBitmap( blood, 0,viewHeight - blood.getHeight(), nu II);canv as.drawBitmap( empty,blood.getWidth(),viewHeight - empty.getHeight(), n ull);else if(leng 0)blood = bloodBeg in;empty = Bitmap.createBitmap( emptyBlood, bloodBegi n. getWidth(), 0, emptyBlood.getWidth()-b

59、loodBegi n. getWidth(), emptyBlood.getHeight();can vas.drawBitmap( blood, 0,viewHeight - blood.getHeight(), nu II);can vas.drawBitmap( empty, blood.getWidth(), viewHeight - empty.getHeight(), n ull);elsecan vas.drawBitmap( emptyBlood, 0, viewHeight - emptyBlood.getHeight(), n ull);isPlayerDead = tru

60、e;4.3.3設(shè)置界面當(dāng)前界面使用的是普通的layout,生成的設(shè)置界面如圖4-15所示:圖4-15設(shè)置界面 v?xml version=1.0 encoding=utf-8? vTextViewan droid:id=+id/tv_opti on_soundan droid:layout_width=0dpan droid:layout_height=wrap_co nte ntan droid:layout_weight=1an droid:gravity=ce nteran droid:text=stri ng/tv_opti on_soundandroid:textSize=20dp

溫馨提示

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

評論

0/150

提交評論