Android塔防游戏应用开发设计方案_第1页
Android塔防游戏应用开发设计方案_第2页
Android塔防游戏应用开发设计方案_第3页
Android塔防游戏应用开发设计方案_第4页
Android塔防游戏应用开发设计方案_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Android 塔防游戏应用开发设计方案1.1 概述Android 一词的本义指“机器人”,曾经是一家创立于旧金山的公司的名字,该公司于2005 年 8月份被Google 收购,同时也是Google 于 2007 年 11 月 5 日宣布的基于Linux 平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造 的真正开放和完整的移动软件,并从此踏上了飞速发展的道路。经过这几年的发展,它已经发展成 了一个平台、一个生态体系。现在 Android 在移动领域已经得到了广泛的应用。根据 Google 于 2011 年 6 月份公布的数字,现在每天激活

2、的 Android 设备高达 50 万台,比 5 月份的数据增加了 10 万台! Google 还透露目前已经与 36 家 OEM 厂商和 215 家运营商合作,共激活了超过1 亿台Android 设备。由于 Android 的良好的发展前景与应用开发的刚起步,基于Android 的应用开发,特别是游戏开发是一片新的热土。本项目正是在Android 平台上进行塔防游戏的开发,从Android 做为受限设备的特点出发,塔防游戏对系统性能要求相对较低,也更适合与Android 手机的触屏操作方式。塔防游戏也适于当前手持设备游戏的休闲娱乐的特点,更利于用户适应和喜爱。1.2 行业发展现状当前 And

3、roid 游戏开发行业并不成熟,当前适合Android 平台上的游戏引擎很少,没有一个主流的底层平台。Andriod 手机游戏的开发呈现出百花齐放的态势,当前 Android 上的很多游戏都是从 J2ME 上移植过来的。但是由于Android 游戏开发的广阔前景,行业发展也十分迅速,出现了很多优秀的作品。1.3 研究的主要容和前景与 iPhone 相似,Android 采用 WebKit 浏览器引擎,具备触摸屏、高级图形显示和上网功能, 用户能够在手机上查看电子、搜索和观看视频节目等,比iPhone 等其他手机更强调搜索功能,界面更强大,可以说是一种融入全部Web 应用的单一平台。但其最震撼人

4、心之处在于Android 手机系统的开放性和服务免费。Android 是一个对第三方软件完全开放的平台,开发者在为其开发程序时拥有更大的自由度,突破了 iPhone 等只能添加为数不多的固定软件的枷锁;同时与Windows Mobile、Symbian 等厂商不同,Android 操作系统免费向开发人员提供,这样可节省近三成成本。本项目的是基于Android 的塔防游戏的开发,由于行业的不成熟,所以项目初期对Android 的各个游戏引擎进行的测试与比较。其中包括的基于 OpenGL 以及 2Dbox 物理引擎的 2D 与 3D 支持的游戏引擎libGDX;基于libGDX 进行更加优化与方便

5、地封装的游戏引擎rokon;同样基于libGDX 的游戏引擎LGame,相对之前的游戏引擎,这款引擎文档与样例丰富,在封装程度上也较为适合,所以本项目使用该引擎进行开发。从前景上看来,由于Android 的良好势头和刚起步的游戏应用市场的需求,Android 游戏开发将有十分广阔的发展。也随着智能手机,手持设备的普及,Android 应用的开发将会有十分巨大的需求与广阔的市场。第 2 章总体设计2.1 设计目的由于 Android 火热的发展势头,以及Android 游戏的相对缺乏,基于Android 的游戏开发将会有很好的市场前景。本设计的目标是在Android 平台上设计出一款用户体验良好

6、,性能稳定,充满休闲性和娱乐性的塔防游戏。为了缩短开发周期,本项目没有采取基于 OpenGL 图形库比较底层的libGDX 游戏引擎, 也避免其强大的桌面与Android 系统的可移植行,2D 与 3D 支持的干扰。本项目使用LGame 游戏引擎,该引擎有更好的层次结构,有较丰富的文档资料。2.2 需求分析2.2.1 需求分析过程问题识别:就是从系统角度来理解软件,确定对所开发系统的综合要求,并提出这些需求的实现条件,以求需求应该达到的标准。这些需求包括:功能需求(做什么),性能需求(要)3.2.1libGDX本游戏采用经典的塔防游戏模式,主要模块有炮塔,入侵者,地图,菜单,记录, 流程。详见

7、下面的思维导图:图 1-总体设计思维导图其中炮塔分为子弹,跟踪,施毒,能量波四种类型,所有类型从父类 Turret 中继承。炮塔类包含有其对应的攻击方式的部类,所有攻击方式部类从父类 Bullet 继承。图 2-Turrent 思维导图入侵者大体分为快速,强壮,小巧类型,所有类型从父类 Enemy 中继承。图 3-Enemy 思维导图关卡由文本中布局,程序运行时加载入游戏,一些例举部分关卡名称。图 4-Map 思维导图菜单中盛放选择炮塔的按钮,升级按钮,出售按钮。图 5-Menu 思维导图记录显示功能包括得分,入侵者的攻击波数,拥有的金钱数。图 6-Recorder 思维导图流畅控制包括整个游

8、戏的运行流程,包括选择地图关卡,游戏,结束,返回等界面流程。图 7-Process 思维导图3 章详细设计3.1 开发环境IDE:Eclipse ADT, 三星 android2.2 真机测试OS:WinXP、Win7、Ubuntu11.043.2 游戏引擎3.2.1libGDXLibgdx 是一个跨平台的游戏开发库,用 Java 编写的,与有部分优化性能的 JNI 代码。它抽象了书面方式桌面和基于 OpenGL Android 游戏之间的差异。这使得原型和开发应用程序完全在桌面上,只需要 6 行代码,使其运行在 Android。下面是关于 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 );在网格建设中,增加了一个颜色 VertexAttribute。它包含 4 个部分组成(R,G,B,alpha),添加颜色信息的 float 数组。当我们运行应用程序时,它看起来应该像这样:图 9-ligGDX ColorTexture要放在一个网格上的纹理,需要把我们的工作区中的图像文件,在我们的代码中引用该图像创建一个纹理对象,然后添加一个纹理 VertexAttribute 我们的网格。图 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);导入所需的类和运行MeshColorTextureDesktop 应用程序。结果应该是这样的:图 10-ligGDX Txture3.2.2RokonRokon 是基于libGDX 的Android 游戏开

14、发库,保留了桌面和 Android 平台的兼容性。Rokon 将游戏组建封装为 Actor,Scense,并提供对Texture 的缓存处理的 Texture图 11-Rokon Spirit队列。下面是 Rokon 实用 Actor 响应点击的例子:3.2.2 LGameLGame 是一款国人开发的Java 游戏引擎,有 Android 及PC(J2SE)两个开发版本。其底层绘图器LGrpaphics 封装有J2SE 以及J2ME 提供的全部Graphics AP(I PC 版采用Graphics2D 封装,Android版采用Canvas 模拟实现),所以能够将J2SE 或 J2ME 开发

15、经验直接套用其中,两版本间主要代码能够相互移植。Android 版置有 Admob 接口,可以不必配置 XML 直接硬编码 Admob 广告信息。该引擎除了基本的音效、图形、物理、精灵等常用组件以外,也置有Ioc、xml、http 等常用 Java 组件的封装,代价是jar 体积较为庞大,PC 版已突破 1.2MB,Android 版有所简化也在 500KB 左右。此外, 该引擎还置有按照 1:1 实现的 J2ME 精灵类及相关组件,可以将绝大多数 J2ME 游戏平移到 Android 或 PC 版中。同时也是是一个高通用性的游戏框架,作为支持Java 桌面游戏以及网页游戏开发的全功能引擎,L

16、Game 无论对画面绘制、精灵碰撞、特效渲染、窗体组件,还是XML 操作,文本数据库操作, HTTP 操作,日志操作等都提供有完善的部解决方案,避免了多包配置的繁琐与不便,同时也降低了用户的学习曲线。出于效率与程序体积两方面考虑,LGame 中所有组件皆不依赖Swing,完全采取AWT 绘制而成,因此它可以将自身的运行环境压缩到最小,一个压缩后不足4MB 的精简JRE,已足够支持它的运行,也就是与RMXP 或吉里吉里 2 的运行库大小相仿佛,但功能却更多。LGame 置有视频解码器,支持 mp4 视频文件播放(在 LGame-Simple-0.3.0 中将支持 flv,在0.6-0.7 版本中

17、将以可选组件方式引入 jmc 支持,以争取可播放视频种类的最大化),置音频解码器支持mid、mod、mp3、ogg、wav、au、aiff 等。LGame 结构分析LGame 同样是基于LibGDX,封装了更加便利高效的组件。其中 Activity 是整个程序的入口,进行屏幕设置等基本操作。Screen 是控制整个游戏界面的类,其中包含了游戏的流程控制等函数。Layer 中封装了游戏场景,可以用于不知地图,菜单等。Actor 是对游戏中的活动元素的封装。图 12-LGame 框架结构3.3 基于LGame 的详细设计在 LGame 的框架基础上,用 Layer 描述 Map 与 Menu,由

18、Actor 继承生成 Turrent 与 Enemy。整体示意图如下:图 13-详细设计总览其中 TowerDefenseActivity 用于程序进入与基本的初始化图 14-TowerDefenseActivityTowerDefenseScreen 由 Screen 继承,处理游戏场景信息图 15-TowerDefenseScreenMapLayer 除了地图场景的布置,还包括对点击的响应等。图 16-MapLayerMenuLayer 中包含有 Turrent 和升级卖出等按钮。图 17-MenuLayer由 Actor 派生出了Enemy 和 Turrent 类,其中Turrent 类

19、包含响应的Bullet 部类。图 18-Actor第 4 章软件编程设计4.1 模板总体设计图 19 工程目录结构图图 19-Actor图 20-包结构图4.2 主要模板功能实现4.2.1 地图选择界面布局代码图 21-地图选择界面布局代码图 21-游戏入口Activity 关键代码4.2.2 游戏入口 Activity 关键代码4.2.3 Screen 子类关键代码Screen 的派生类TD 用于游戏场景控制。图 22-Screen 子类关键代码4.2.4 Enemy 类关键代码Enemy 是众多Enemy 的父类。图 23-Enemy 类关键代码Enemy 的 addLayer 方法,将E

20、nemy 添加到指定的layer 中。图 24- Enemy 的 addLayer 方法4.2.5 Turret 类关键代码Turret 是众多Turret 的父类。图 23-Turret 类构造方法Turret 的显示攻击围的绘图方法。图 23-Turret 的 drawAttackRange 方法4.2.6 MapLayer 类关键代码MapLayer 包含有地图布局代码。图 23-Turret 类构造方法图 23-MapLayer 类构造方法MapLayer 中的 downClick 方法响应按键,实现添加Turrent 和选中等功能。图 23-Turret 类构造方法图 23-MapLayer 的 downCl

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论