Android塔防游戲應(yīng)用開發(fā)設(shè)計方案_第1頁
Android塔防游戲應(yīng)用開發(fā)設(shè)計方案_第2頁
Android塔防游戲應(yīng)用開發(fā)設(shè)計方案_第3頁
Android塔防游戲應(yīng)用開發(fā)設(shè)計方案_第4頁
Android塔防游戲應(yīng)用開發(fā)設(shè)計方案_第5頁
已閱讀5頁,還剩25頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、Android 塔防游戲應(yīng)用開發(fā)設(shè)計方案1.1 概述Android 一詞的本義指“機(jī)器人”,曾經(jīng)是一家創(chuàng)立于舊金山的公司的名字,該公司于2005 年 8月份被Google 收購,同時也是Google 于 2007 年 11 月 5 日宣布的基于Linux 平臺的開源手機(jī)操作系統(tǒng)的名稱,該平臺由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組成,號稱是首個為移動終端打造 的真正開放和完整的移動軟件,并從此踏上了飛速發(fā)展的道路。經(jīng)過這幾年的發(fā)展,它已經(jīng)發(fā)展成 了一個平臺、一個生態(tài)體系?,F(xiàn)在 Android 在移動領(lǐng)域已經(jīng)得到了廣泛的應(yīng)用。根據(jù) Google 于 2011 年 6 月份公布的數(shù)字,現(xiàn)在每天激活

2、的 Android 設(shè)備高達(dá) 50 萬臺,比 5 月份的數(shù)據(jù)增加了 10 萬臺! Google 還透露目前已經(jīng)與 36 家 OEM 廠商和 215 家運(yùn)營商合作,共激活了超過1 億臺Android 設(shè)備。由于 Android 的良好的發(fā)展前景與應(yīng)用開發(fā)的剛起步,基于Android 的應(yīng)用開發(fā),特別是游戲開發(fā)是一片新的熱土。本項(xiàng)目正是在Android 平臺上進(jìn)行塔防游戲的開發(fā),從Android 做為受限設(shè)備的特點(diǎn)出發(fā),塔防游戲?qū)ο到y(tǒng)性能要求相對較低,也更適合與Android 手機(jī)的觸屏操作方式。塔防游戲也適于當(dāng)前手持設(shè)備游戲的休閑娛樂的特點(diǎn),更利于用戶適應(yīng)和喜愛。1.2 行業(yè)發(fā)展現(xiàn)狀當(dāng)前 And

3、roid 游戲開發(fā)行業(yè)并不成熟,當(dāng)前適合Android 平臺上的游戲引擎很少,沒有一個主流的底層平臺。Andriod 手機(jī)游戲的開發(fā)呈現(xiàn)出百花齊放的態(tài)勢,當(dāng)前 Android 上的很多游戲都是從 J2ME 上移植過來的。但是由于Android 游戲開發(fā)的廣闊前景,行業(yè)發(fā)展也十分迅速,出現(xiàn)了很多優(yōu)秀的作品。1.3 研究的主要容和前景與 iPhone 相似,Android 采用 WebKit 瀏覽器引擎,具備觸摸屏、高級圖形顯示和上網(wǎng)功能, 用戶能夠在手機(jī)上查看電子、搜索和觀看視頻節(jié)目等,比iPhone 等其他手機(jī)更強(qiáng)調(diào)搜索功能,界面更強(qiáng)大,可以說是一種融入全部Web 應(yīng)用的單一平臺。但其最震撼人

4、心之處在于Android 手機(jī)系統(tǒng)的開放性和服務(wù)免費(fèi)。Android 是一個對第三方軟件完全開放的平臺,開發(fā)者在為其開發(fā)程序時擁有更大的自由度,突破了 iPhone 等只能添加為數(shù)不多的固定軟件的枷鎖;同時與Windows Mobile、Symbian 等廠商不同,Android 操作系統(tǒng)免費(fèi)向開發(fā)人員提供,這樣可節(jié)省近三成成本。本項(xiàng)目的是基于Android 的塔防游戲的開發(fā),由于行業(yè)的不成熟,所以項(xiàng)目初期對Android 的各個游戲引擎進(jìn)行的測試與比較。其中包括的基于 OpenGL 以及 2Dbox 物理引擎的 2D 與 3D 支持的游戲引擎libGDX;基于libGDX 進(jìn)行更加優(yōu)化與方便

5、地封裝的游戲引擎rokon;同樣基于libGDX 的游戲引擎LGame,相對之前的游戲引擎,這款引擎文檔與樣例豐富,在封裝程度上也較為適合,所以本項(xiàng)目使用該引擎進(jìn)行開發(fā)。從前景上看來,由于Android 的良好勢頭和剛起步的游戲應(yīng)用市場的需求,Android 游戲開發(fā)將有十分廣闊的發(fā)展。也隨著智能手機(jī),手持設(shè)備的普及,Android 應(yīng)用的開發(fā)將會有十分巨大的需求與廣闊的市場。第 2 章總體設(shè)計2.1 設(shè)計目的由于 Android 火熱的發(fā)展勢頭,以及Android 游戲的相對缺乏,基于Android 的游戲開發(fā)將會有很好的市場前景。本設(shè)計的目標(biāo)是在Android 平臺上設(shè)計出一款用戶體驗(yàn)良好

6、,性能穩(wěn)定,充滿休閑性和娛樂性的塔防游戲。為了縮短開發(fā)周期,本項(xiàng)目沒有采取基于 OpenGL 圖形庫比較底層的libGDX 游戲引擎, 也避免其強(qiáng)大的桌面與Android 系統(tǒng)的可移植行,2D 與 3D 支持的干擾。本項(xiàng)目使用LGame 游戲引擎,該引擎有更好的層次結(jié)構(gòu),有較豐富的文檔資料。2.2 需求分析2.2.1 需求分析過程問題識別:就是從系統(tǒng)角度來理解軟件,確定對所開發(fā)系統(tǒng)的綜合要求,并提出這些需求的實(shí)現(xiàn)條件,以求需求應(yīng)該達(dá)到的標(biāo)準(zhǔn)。這些需求包括:功能需求(做什么),性能需求(要)3.2.1libGDX本游戲采用經(jīng)典的塔防游戲模式,主要模塊有炮塔,入侵者,地圖,菜單,記錄, 流程。詳見

7、下面的思維導(dǎo)圖:圖 1-總體設(shè)計思維導(dǎo)圖其中炮塔分為子彈,跟蹤,施毒,能量波四種類型,所有類型從父類 Turret 中繼承。炮塔類包含有其對應(yīng)的攻擊方式的部類,所有攻擊方式部類從父類 Bullet 繼承。圖 2-Turrent 思維導(dǎo)圖入侵者大體分為快速,強(qiáng)壯,小巧類型,所有類型從父類 Enemy 中繼承。圖 3-Enemy 思維導(dǎo)圖關(guān)卡由文本中布局,程序運(yùn)行時加載入游戲,一些例舉部分關(guān)卡名稱。圖 4-Map 思維導(dǎo)圖菜單中盛放選擇炮塔的按鈕,升級按鈕,出售按鈕。圖 5-Menu 思維導(dǎo)圖記錄顯示功能包括得分,入侵者的攻擊波數(shù),擁有的金錢數(shù)。圖 6-Recorder 思維導(dǎo)圖流暢控制包括整個游

8、戲的運(yùn)行流程,包括選擇地圖關(guān)卡,游戲,結(jié)束,返回等界面流程。圖 7-Process 思維導(dǎo)圖3 章詳細(xì)設(shè)計3.1 開發(fā)環(huán)境IDE:Eclipse ADT, 三星 android2.2 真機(jī)測試OS:WinXP、Win7、Ubuntu11.043.2 游戲引擎3.2.1libGDXLibgdx 是一個跨平臺的游戲開發(fā)庫,用 Java 編寫的,與有部分優(yōu)化性能的 JNI 代碼。它抽象了書面方式桌面和基于 OpenGL Android 游戲之間的差異。這使得原型和開發(fā)應(yīng)用程序完全在桌面上,只需要 6 行代碼,使其運(yùn)行在 Android。下面是關(guān)于 LibGDX 的一些測試。Colormesh = n

9、ew Mesh(true, 3, 3,new VertexAttribute(Usage.Position, 3, "a_position"),new VertexAttribute(Usage.ColorPacked, 4,"a_color");mesh.setVertices(new float -0.5f, -0.5f, 0, Color.toFloatBits(255, 0, 0,255),0.5f, -0.5f, 0,Color.toFloatBits(0, 255, 0, 255),0, 0.5f, 0,Color.toFloatBits(0

10、, 0, 255, 255) );mesh.setIndices(new short 0, 1, 2 );在網(wǎng)格建設(shè)中,增加了一個顏色 VertexAttribute。它包含 4 個部分組成(R,G,B,alpha),添加顏色信息的 float 數(shù)組。當(dāng)我們運(yùn)行應(yīng)用程序時,它看起來應(yīng)該像這樣:圖 9-ligGDX ColorTexture要放在一個網(wǎng)格上的紋理,需要把我們的工作區(qū)中的圖像文件,在我們的代碼中引用該圖像創(chuàng)建一個紋理對象,然后添加一個紋理 VertexAttribute 我們的網(wǎng)格。圖 9-ligGDX Textureprivate Mesh mesh;private Textur

11、e texture;Overridepublic void create() if (mesh = null) mesh = new Mesh(true, 3, 3,new VertexAttribute(Usage.Position, 3, "a_position"),new VertexAttribute(Usage.ColorPacked, 4, "a_color"),new VertexAttribute(Usage.TextureCoordinates, 2,"a_texCoords");0.5f, -0.5f, 0,0,

12、0.5f, 0,mesh.setVertices(new float -0.5f, -0.5f, 0,Color.toFloatBits(255, 0, 0,255),0, 1,Color.toFloatBits(0, 255, 0,255),1, 1,Color.toFloatBits(0, 0, 255,255),0.5f, 0 );mesh.setIndices(new short 0, 1, 2 );FileHandle imageFileHandle =Gernal("data/badlogic.jpg");texture = new Te

13、xture(imageFileHandle);Overridepublic void render() Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);Gdx.graphics.getGL10().glEnable(GL10.GL_TEXTURE_2D);texture.bind();mesh.render(GL10.GL_TRIANGLES, 0, 3);導(dǎo)入所需的類和運(yùn)行MeshColorTextureDesktop 應(yīng)用程序。結(jié)果應(yīng)該是這樣的:圖 10-ligGDX Txture3.2.2RokonRokon 是基于libGDX 的Android 游戲開

14、發(fā)庫,保留了桌面和 Android 平臺的兼容性。Rokon 將游戲組建封裝為 Actor,Scense,并提供對Texture 的緩存處理的 Texture圖 11-Rokon Spirit隊(duì)列。下面是 Rokon 實(shí)用 Actor 響應(yīng)點(diǎn)擊的例子:3.2.2 LGameLGame 是一款國人開發(fā)的Java 游戲引擎,有 Android 及PC(J2SE)兩個開發(fā)版本。其底層繪圖器LGrpaphics 封裝有J2SE 以及J2ME 提供的全部Graphics AP(I PC 版采用Graphics2D 封裝,Android版采用Canvas 模擬實(shí)現(xiàn)),所以能夠?qū)2SE 或 J2ME 開發(fā)

15、經(jīng)驗(yàn)直接套用其中,兩版本間主要代碼能夠相互移植。Android 版置有 Admob 接口,可以不必配置 XML 直接硬編碼 Admob 廣告信息。該引擎除了基本的音效、圖形、物理、精靈等常用組件以外,也置有Ioc、xml、http 等常用 Java 組件的封裝,代價是jar 體積較為龐大,PC 版已突破 1.2MB,Android 版有所簡化也在 500KB 左右。此外, 該引擎還置有按照 1:1 實(shí)現(xiàn)的 J2ME 精靈類及相關(guān)組件,可以將絕大多數(shù) J2ME 游戲平移到 Android 或 PC 版中。同時也是是一個高通用性的游戲框架,作為支持Java 桌面游戲以及網(wǎng)頁游戲開發(fā)的全功能引擎,L

16、Game 無論對畫面繪制、精靈碰撞、特效渲染、窗體組件,還是XML 操作,文本數(shù)據(jù)庫操作, HTTP 操作,日志操作等都提供有完善的部解決方案,避免了多包配置的繁瑣與不便,同時也降低了用戶的學(xué)習(xí)曲線。出于效率與程序體積兩方面考慮,LGame 中所有組件皆不依賴Swing,完全采取AWT 繪制而成,因此它可以將自身的運(yùn)行環(huán)境壓縮到最小,一個壓縮后不足4MB 的精簡JRE,已足夠支持它的運(yùn)行,也就是與RMXP 或吉里吉里 2 的運(yùn)行庫大小相仿佛,但功能卻更多。LGame 置有視頻解碼器,支持 mp4 視頻文件播放(在 LGame-Simple-0.3.0 中將支持 flv,在0.6-0.7 版本中

17、將以可選組件方式引入 jmc 支持,以爭取可播放視頻種類的最大化),置音頻解碼器支持mid、mod、mp3、ogg、wav、au、aiff 等。LGame 結(jié)構(gòu)分析LGame 同樣是基于LibGDX,封裝了更加便利高效的組件。其中 Activity 是整個程序的入口,進(jìn)行屏幕設(shè)置等基本操作。Screen 是控制整個游戲界面的類,其中包含了游戲的流程控制等函數(shù)。Layer 中封裝了游戲場景,可以用于不知地圖,菜單等。Actor 是對游戲中的活動元素的封裝。圖 12-LGame 框架結(jié)構(gòu)3.3 基于LGame 的詳細(xì)設(shè)計在 LGame 的框架基礎(chǔ)上,用 Layer 描述 Map 與 Menu,由

18、Actor 繼承生成 Turrent 與 Enemy。整體示意圖如下:圖 13-詳細(xì)設(shè)計總覽其中 TowerDefenseActivity 用于程序進(jìn)入與基本的初始化圖 14-TowerDefenseActivityTowerDefenseScreen 由 Screen 繼承,處理游戲場景信息圖 15-TowerDefenseScreenMapLayer 除了地圖場景的布置,還包括對點(diǎn)擊的響應(yīng)等。圖 16-MapLayerMenuLayer 中包含有 Turrent 和升級賣出等按鈕。圖 17-MenuLayer由 Actor 派生出了Enemy 和 Turrent 類,其中Turrent 類

19、包含響應(yīng)的Bullet 部類。圖 18-Actor第 4 章軟件編程設(shè)計4.1 模板總體設(shè)計圖 19 工程目錄結(jié)構(gòu)圖圖 19-Actor圖 20-包結(jié)構(gòu)圖4.2 主要模板功能實(shí)現(xiàn)4.2.1 地圖選擇界面布局代碼圖 21-地圖選擇界面布局代碼圖 21-游戲入口Activity 關(guān)鍵代碼4.2.2 游戲入口 Activity 關(guān)鍵代碼4.2.3 Screen 子類關(guān)鍵代碼Screen 的派生類TD 用于游戲場景控制。圖 22-Screen 子類關(guān)鍵代碼4.2.4 Enemy 類關(guān)鍵代碼Enemy 是眾多Enemy 的父類。圖 23-Enemy 類關(guān)鍵代碼Enemy 的 addLayer 方法,將E

20、nemy 添加到指定的layer 中。圖 24- Enemy 的 addLayer 方法4.2.5 Turret 類關(guān)鍵代碼Turret 是眾多Turret 的父類。圖 23-Turret 類構(gòu)造方法Turret 的顯示攻擊圍的繪圖方法。圖 23-Turret 的 drawAttackRange 方法4.2.6 MapLayer 類關(guān)鍵代碼MapLayer 包含有地圖布局代碼。圖 23-Turret 類構(gòu)造方法圖 23-MapLayer 類構(gòu)造方法MapLayer 中的 downClick 方法響應(yīng)按鍵,實(shí)現(xiàn)添加Turrent 和選中等功能。圖 23-Turret 類構(gòu)造方法圖 23-MapLayer 的 downCl

溫馨提示

  • 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

提交評論