基于Android系统的“地心坠落”手机游戏设计与开发_第1页
基于Android系统的“地心坠落”手机游戏设计与开发_第2页
基于Android系统的“地心坠落”手机游戏设计与开发_第3页
基于Android系统的“地心坠落”手机游戏设计与开发_第4页
基于Android系统的“地心坠落”手机游戏设计与开发_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

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

文档简介

1、基于Android系统的“地心坠落”手机游戏设计与开发作 者 姓 名: 指 导 教 师: 单 位 名 称: 专 业 名 称: 年 月Design and Implementation of Obulis Mobile Game Based on Android Operating System Supervisor :Associate Professor BI Yuanguo 摘 要III设计任务书设计题目:基于Android系统的“地心坠落”手机游戏设计与开发设计的基本内容:(1) 了解项目开发背景,分析项目进度管理系统功能需求,研究其设计及实现技术。(2) 设计基于Android系统的手

2、机游戏总体结构,实现手机游戏的基本功能。作为一款手机游戏,系统必需能够实现诸如存档、物理世界模拟、逻辑判断、画面友好等功能。(3) 总结归纳所完成的任务,弥补不足,以最短的时间用最少的投入实现项目的开发。设计专题部分:题目:设计或论文专题的基本内容:学生接受设计题目日期第周指导教师签字:年月日基于Android系统的“地心坠落”手机游戏设计与开发摘 要随着人们的生活压力的变大,游戏越来越成为生活中释放压力、放松自己的一种重要方式。几年前,手机的发展还没有到现在的程度,手机的运行速度与屏幕大小达不到人们对游戏的期望程度。而如今,手机等移动终端的硬件以及智能机操作系统的发展,让手机和游戏相结合不再

3、是那么无聊的事情。本文在基于Android系统的基础上,添加物理引擎,设计了一款完全模拟物理世界的益智类手机游戏“地心坠落” 。此款游戏加入了现今主流的Box2D物理引擎开发包,让玩家置身于一个完全模拟物理世界的游戏环境。游戏实现了开场动画、读档、存档、声音开关设置、关卡选择、游戏世界的逻辑判断等基本功能,玩家可以通过剪断拴住小球的绳索产生动力,撞击其他小球,使全部的彩球掉入相同颜色的桶内,首次碰撞点击来选择需要切断的绳索,再次碰撞执行。此游戏的界面布局采用Android系统开发所提倡的xml文件布局方式,而不是传统的java代码,把布局代码和java逻辑判断代码分开来,不仅使代码简洁,而且x

4、ml的特性,使的布局文件中的构件属性变的清晰,特高了代码的可读性。本文首先进行了系统的需求获取和业务分析。然后,采用分层的方法对系统进行设计,叙述了游戏逻辑判断的详细设计与实现,并叙述了游戏各个功能模块的设计和实现。并通过对系统的测试,对其功能和性能进行评估。最后,进行了总结,介绍了系统的特点和不足之处,指出了下一步的工作方向。关键词:手机游戏;Android;Box2D;java;xml AbstractDesign and Implementation of Obulis Mobile Game Based on Android Operating SystemAbstractWith t

5、he pressure of peoples lives change, the games become a more and more important way to relax in life. Few years ago, the development of mobile phones didnt catch the extent now, and the running speed of the mobile phone and the screen size of them are less than expectations of the game. Today, mobil

6、e phones and other mobile terminal hardware and the development of intelligence operating system, combining mobile phones and games are no longer so boring. In this paper, on the basis of the Android system, adding to a physics engine, designed a completely simulation of the physical world puzzled m

7、obile games “Obulis”.This game adds to the most popular physics engine package of Box2D, allowing the player to exposure to the physical world in a fully simulated game environment. The game achieve to the basic functions of game such as opening animation, loading, archiving, sound switch settings,

8、level selection, the logical judgment of the game world and so on. The player can generate power through cutting chains which can hit other balls, so that all of the balls fall into the barrels of the same color, the first touching of chain is to select a rope to be cut off and the second is to cut

9、off down. This games interface layout use xml which is promoted by the development of the Android system, rather than the traditional java code, so that layout codes and Java codes can be distinguished, not only to make the code simple, but also xmls features make the properties of components in lay

10、out files clear, improving the readability of codes.In this paper, firstly, introduce the system requirements and business analytics. Then, using the layered approach to system design, describe designing and implementation of the judgment of the game logic in detail, besides, describe the design and

11、 implementation of the various functional modules of the game. And testing the system, assess its functionality and performance. Finally, with a summary of this paper, point out the characteristics and the shorts of the system, and point the next step direction.Key words: Mobile Phone Game; Android;

12、 Box2D; java; xml Error! Reference source not found. 引 言目 录毕业设计(论文)任务书I摘 要IIAbstractIII第1章 引 言51.1 课题研究背景51.2 课题研究意义51.3 主要工作及章节安排6第2章 相关技术简介72.1 Eclipse集成开发环境72.2 Android开发技术介绍72.2.1 Android前台渲染技术82.2.2 Android数据存储122.3 Box2D物理引擎介绍132.3.1 Box2D概述132.3.2 刚体的创建132.3.3 关节点的创建132.4 Libgdx架构介绍142.5 XML布

13、局介绍15第3章 系统需求分析173.1 系统实现目标173.2 系统运行环境173.3 系统开发环境183.3.1 Android开发工具简介183.3.2 Android开发工具使用方法简介183.3.3 Android应用程序安装183.4 功能性需求描述183.4.1 新建游戏193.4.2 读取游戏203.4.3 删除存档203.4.4 音乐设置203.4.5 游戏关于203.4.6 退出游戏203.4.7 关卡选择213.4.8 选择链条213.4.9 切断链条213.4.10 重新开始223.4.11 重选关卡223.5 非功能性需求描述223.6 系统术语表223.7 本章小结

14、23第4章 软件系统设计244.1 系统设计原则244.2 系统总体设计244.3 辅助功能层设计264.4 地图编辑层设计274.5 刷新控制层设计284.6 物理世界层介绍304.7 前台渲染层设计314.8 本章小结33第5章 软件系统实现355.1 辅助功能类的实现355.1.1 Activity介绍355.1.2 Activity调用和启动355.2 地图编辑层实现375.3 刷新控制的实现385.4 游戏主控制模块实现405.4.1 GameView类实现415.4.2 GameActivity类实现445.5 游戏存档实现445.6 本章小结46第6章 软件系统测试476.1 单

15、元级软件测试476.2 集成软件测试486.3 软件系统测试486.4 本章小结50第7章 总结与展望517.1 本文工作总结517.2 进一步展望51参考文献53致谢54第1章 引 言1.1 课题研究背景随着科技的发展,现在手机的功能也越来越多,越来越强大。而手机游戏也远远不是我们印象中的什么“俄罗斯方块”捕鱼达人“贪吃蛇”之类画面简陋,规则简单的游戏,进而发展到了可以和掌上游戏机媲美,具有很强的娱乐性和交互性的复杂形态了。手机游戏拥有庞大的潜在用户群,而且手机游戏因为手机的便携性更受用户的欢迎并在一定条件下可以实现多人在线游戏。2011年,随着智能手机和3G网络的普及进一步深化,移动互联网

16、迎来爆发式增长。业界普遍认为,移动互联网是一个比互联网大数十倍的万亿级产业,手机将作为未来人类线上生活娱乐的最主要载体而存在。 在此大背景下,手机游戏也普遍被业界所看好,从2004年到2011年,手机游戏市场规模已经发展到42亿元,仅次于客户端网络游戏和网页游戏。盛大游戏、腾讯、阿里巴巴等业界巨头已经高调进驻手机游戏行业,在各家投入巨资和重兵之后,这个行业还将会有一轮大跃进式的发展。但手机游戏的发展也并不是一帆风顺,当前,关键的安全问题和付费渠道均未得到妥善解决,其中,以付费渠道最为紧迫,虽然手机用户相比PC用户更能接受付费,但目前似乎各大厂商均为找到合适的方法将这种习惯变成真金白银的收入,毕

17、竟,用手机网上付费对当前的市场来讲,似乎还有点超前。但不管怎样,手机游戏未来的发展还是光明的,只是需要一点时间而已。Android是Google公司为首的OHA研发的一个开源智能移动终端平台。作为一款为移动终端打造的开源手机操作系统,是现阶段开放性最强的移动设备综合平台。其使得电信运营商、手机制造商以及产业链的各环节能够更好、更快地将创新性产品推向市场。目前,Android开始进入通信、数字电视、移动互联网设备(MID)、机顶盒等领域。企业对Android技术及产业的关注越来越大。鉴于Android平台具有较好的开源性,不同硬件平台的兼容性,继而有效地节约成本,使更多用户受益。1.2 课题研究

18、意义随着人们的生活压力的变大,游戏越来越成为生活中释放压力、放松自己的一种重要方式。几年前,手机的发展还没有到现在的程度,那时候如果把手机和游戏相结合,我想,大多数的人会认为,“屏幕那么小,还这么慢,好无聊啊!” 。如今,手机等移动终端的硬件以及智能机操作系统的发展,让手机和游戏相结合不再是那么无聊的事情。最有力的证明就是一款非常有名的休闲类游戏“愤怒的小鸟”,操作的简单性,游戏的休闲性,让手机游戏慢慢走近人们的生活。近些年,基于其开发的简单性、代码的开源等原因,类似于“愤怒的小鸟”这类的游戏日益增多,给人们的日常生活增添了不少乐趣。“地心坠落”游戏的设计正符合当下人们对这种休闲游戏的定义,人

19、们追求放松,释放压力,消磨时间,以手机这种可以随时携带的设备为载体,为这种休闲娱乐提供了不少的方便。此外,游戏的开发也拥有一定的商业意义,开发好的游戏可以放到商业平台,正像Apple的Apple Store,为正版软件的发行提供了方方便。综上所述,无论从用户还是商家角度,基于Android系统的“地心坠落”游戏开发都有重大的意义。1.3 主要工作及章节安排本文在分析介绍了Android开发技术,Box2D物理引擎、Libgdx的基础上,基于此游戏系统的需求特点,主要介绍了物理世界创建和前台渲染,并且实现了此游戏系统的基本功能。各章的内容组织如下:第2章介绍了Android开发技术、Box2D物

20、理引擎开发包、Libgdx开源游戏架构以及Android的XML布局技术。第3章分析了系统的开发环境,利用用例建模分析系统的功能需求,并且根据实际情况补充了部分需求,提出了非功能性需求,并描述了系统术语表。第4章对系统进行总体设计,将系统分为不同的层次,包括辅助功能层、地图编辑层、刷新控制层、物理世界层、前台渲染层等等,并详细介绍了物理世界层和前台渲染层的类图结构,符合系统需求,为系统实现提供可行设计。第5章从Android开发最重要的组件之一Activity出发,介绍了其调用和启动方式,并介绍了整个系统中各个功能模块的具体实现,其中重点介绍了游戏胜负逻辑判断流程,以游戏主界面开发为中心,从各

21、个角度介绍具体功能的实现方式。第6章介绍了利用工具进行测试的情况,并对出现的错误进行了分析解决。第7章结论部分是对整个论文工作的总结以及下一步工作的展望,指出我们工作中有待改进的地方,同时指明了下一步的研究方向。- 56 - 第2章 相关技术简介第2章 相关技术简介2.1 Eclipse集成开发环境Eclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。虽然大多数用户很乐于将Eclipse当作Ja

22、va集成开发环境(IDE)来使用,但Eclipse的目标却不仅限于此。Eclipse还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展Eclipse的软件开发人员,因为它允许他们构建与Eclipse环境无缝集成的工具。由于Eclipse中的每样东西都是插件,对于给Eclipse提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。这种平等和一致性并不仅限于Java开发工具。尽管Eclipse是使用Java语言开发的,但它的用途并不限于Java语言;例如,支持诸如C/C+和COBOL等编程语

23、言的插件已经可用,或预计将会推出。Eclipse框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。既然Eclipse可以很好的支持Java的开发,而Android开发是基于Java语言的,只需安装对应的插件即可,其详细安装步骤将会在后边有所介绍。2.2 Android开发技术介绍Android是一种以Linux为基础的开放源代码操作系统,主要使用于便携设备。目前尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。Android操作系统最初由Andy Rubin开发,最初主要支持手机。2005年由Google收购注资,并组建开放手机联盟开发改良,逐渐扩展到平板电

24、脑及其他领域上。Android的主要竞争对手是苹果公司的IOS以及RIM的Blackberry OS。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。2012年2月数据,Android占据全球智能手机操作系统市场52.5%的份额,中国市场占有率为68.4%。Android的系统架构和其它操作系统一样,采用了分层的架构。Android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux核心层。图2.1展示了Android的系统架构。图2.1 Android架构Android是以Linux为核心的手机操作平台,作为一款开放式的操作系统

25、,随着Android的快速发展,如今已允许开发者使用多种编程语言来开发Android应用程序,而不再是以前只能使用Java开发Android应用程序的单一局面,因而受到众多开发者的欢迎,成为真正意义上的开放式操作系统。 Android支持使用Java作为编程语言来开发应用程序,而Android的Java开发方面从接口到功能,都有层出不穷的变化。考虑到Java虚拟机1,2的效率和资源占用,Google重新设计了Android的Java,以便能提高效率和减少资源占用,因而与J2ME等不同。2.2.1 Android前台渲染技术 前台渲染技术,即应用程序的前台表现,手机应用程序不同于PC应用程序,收

26、到硬件、屏幕大小限制,因此Android前台渲染技术有着许多特别之处。Android前台渲染技术包括布局管理、简单UI使用、图形与图像处理和多媒体开发,下面将分别介绍。(1) Android布局管理为了更好的管理Android应用的用户见面礼的各组件,Android提供了布局管理器。通过布局管理器来管理组件的分布、大小,而不是直接设置组件位置和大小,几个比较重要和常用的布局管理器如下:1) 线性布局线性布局由LinearLayout类来代表,线性布局有点像AWT编程里的FlowLayout,他们都会将容器里的组件一个挨着一个地排列起来。线性布局不仅可以控制各组件横向排列,也可以控制各组件纵向排

27、列。2) 表格布局表格布局由TableLayout所代表,表格布局采用行、列的形式来管理UI组件,TableLayout并不须要明确的声明包含多少行、多少列,而是通过添加TableRow,其他组件来控制行数和列数。3) 相对布局相对布局是使用比较多的一种布局,因为此布局不会像绝对布局那样与手机屏幕(父类容器)相比较,而是和容器中的组件相比较而控制组件的位置,由此便可不受手机屏幕大小控制,适应各种手机屏幕分辨率。绝对布局由RelativeLayout代表,相对布局容器内子组件的位置总是相对兄弟组件、父容器来决定的,因此这种布局称为相对布局。4) 绝对布局绝对布局由AbsoluteLayout代表

28、。绝对布局就像Java AWT编程中的空布局,就是Android不提供任何布局控制,而是由开发人员自己通过X坐标,Y坐标来控制组件的位置。当使用绝对布局作为布局容器时,布局容器不再管理子组件的位置、大小,而是都需要开发人员自己控制。(2) Android简单UI使用介绍1) TextView类似ASP.NET中的Label控件,只读显示控件,可通过getText()获取其android:text属性、setText()设置其android:text属性。在res/layout/main.xml的LinearLayout节中添加如下代码来声明TextView。2) Button按钮控件,用户通过

29、该控件3来提交自己的请求,是用户与应用程序交互的最常用控件之一。按钮控件分为如下两种,一种为普通按钮,另一种为用户自定义按钮。普通按钮是在res/layout/main.xml中声明控件;而用户自定义按钮,用户自定义按钮在很大程度上满足了用户个性化的要求。在这儿创建一个用图片代替普通文字的按钮。3) EditTextAndroid系统提供给用户输入的文本框,如ASP.NET中TextBox。让我们的EditText一个回车动作,请看下面的代码,代码里演示了如何取得EditText的值以及如何为TextView赋值。4) RadioButton单选按钮,放在一个RadioGroup中,在这个gr

30、oup中只能有一个选项能够被选中,比如你选择性别时,只能选择一个性别。5) CheckBox复选按钮。在应用程序中如果让用户选择自己的喜好时,因为用户的喜好不可能只有一个,所以这时你必须使用复选按钮,允许用户多选。 下面来响应用户的选择操作,通常情况下,复选框选择后是有一个按钮来统一提交的,但是我们在例子中只演示如何响应CheckBox的Change事件。6) Toggle Button如果有用过android系统的人都知道,在开启和关闭WIFI的时候,有一个按钮,当你开启WIFI时按钮显示为On,当你关闭WIFI时按钮显示为OFF,这个按钮只有这两种状态。这个按钮就是ToggleButton

31、。(3) Android图形与图像处理Android系统提供了ImageView4显示普通静态图片,也提供了AnimationDrawable来开发逐帧动画,还可通过Animation对普通图片使用补间动画。图形、图像处理不仅对Android系统的应用界面非常重要,而且Android系统上益智类游戏、2D游戏都需要大量的图形、图像处理。1) 使用简单图片图片不仅可以使用ImageView来显示,也可以作为Button、window的背景。从广义角度看,Android应用中的图片不仅包括*.png、*.jpg、*.gif等各种格式的位图,也包括使用XML资源文件定义的各种Drawable资源。a

32、) 使用Drawable资源当我们为Android应用增加了Drawable资源后,AndroidSDK会为这份资源在R清单文件中创建一个索引项:R.drawable.file_name。接下来可以在XML资源文件中通过drawable/file_name来访问该Drawable对象,也可在java代码中通过R.drawable.file_name访问该Drawable对象。需要指出的是,R.drawable.file_name是一个int类型的常量,它只代表Drawable对象的ID,如果java程序中需要获取实际的Drawable对象,则可以调用Resources的getDrawable(

33、int id)方法获取。b) Bitmap和BitmapFactoryBitmap代表一张位图,BitmapDrawable里封装的图片就是一个Bitmap对象。开发者为了把一个Bitmap对象包装成BitmapDrawable对象,可调用BitmapDrawable构造器:BitmapDrawable drawable=new BitmapDrawable(bitmap);如果需要获取BitmapDrawable所包装的Bitmap对象,则可以调用BitmapDrawable的getBitmap()方法,如下:Bitmap bitmap=drawable.getBitmap();Bitmap

34、Factory是一个工具类,它用于提供大量的方法,这些方法可用于从不同的数据源来解析、创建Bitmap对象,BitmapFactory包含如下方法:手机系统的内存比较小,如果系统不停地去解析、创建Bitmap对象,可能由于前面创建Bitmap所占用的内存还没有回收,从而导致程序运行时引发OutOfMemory错误。Android为Bitmap提供了两个方法来判断它是否已回收,以及强制Bitmap回收自己:boolean isRecycled():返回该Bitmap是否已被回收。void recycle():强制一个Bitmap对象立即回收自己。除此之外,如果Android应用需要访问其它存储路

35、径(比如SD卡中)里的图片,都需要借助于BitmapFactory来解析、创建Bitmap对象。2) 绘图除了使用已有的图片之外,Android应用常常需要在运行时动态生成图片,比如一个手机游戏,游戏界面看上去丰富多彩,而且可以随着用户动作而动态改变,这就需要借助于Android的绘图支持了。Android的绘图应该继承View组件,并重写它的onDraw(Canvas canvas)方法即可。重写onDraw(Canvas canvas)方法时涉及一个绘图APICanvas,Canvas代表了“依附”于指定View的画布,它提供了一些方法绘制各种图形。Canvas提供的上面的方法还涉及一个A

36、PI:Paint,Paint代表了Canvas上的画笔,因此Paint类主要用于设置绘制风格,包括画笔颜色、画笔笔触粗细、填充风格等。在Canvas提供的绘制方法中还用到了一个API:Path,Path代表任意多条直线连接而成的任意图形,当Canvas根据Path绘制时,它可以绘制出任意的形状。3) 补间(Tween)动画补间动画就是指开发者只需要指定动画开始、动画结束“关键帧”,而动画变化的“中间帧”由系统计算并补齐。对于补间动画而言,开发者无需“逐一”定义动画过程中的每一帧,他只要定义动画开始、结束的关键帧,并指定动画的持续时间即可。补间动画所定义的开始帧、结束帧其实只是一些简单的变化,比

37、如图形大小的缩放、旋转角度的改变等,Android使用Animation代表抽象的动画类,它包括如下几个子类:a) AlphaAnimation:透明度改变的动画,其中透明度可从0变化到1。创建时指定开始透明度、结束透明度和持续时间。b) ScaleAnimation:大小缩放的动画。创建时指定开始缩放比、结束缩放比、持续时间,还要指定“缩放中心”坐标。c) TranslateAnimation:位移变化的动画,只要设置开始位置、结束位置和持续时间即可。d) RotateAnimation:旋转动画。创建时指定动画开始旋转角度、结束旋转角度、持续时间,还要指定“旋转中心”坐标。一旦为补间动画指

38、定了3个必要信息,Android就会根据动画的开始帧、结束帧、动画持续时间计算出需要在中间“补入”多少帧,并计算所有补入帧的图形。当用户浏览补间动画时,他眼中看到的依然是“逐帧动画”。2.2.2 Android数据存储Android平台中实现数据存储共有5种方式,它们分别是:使用SharedPreferences4存储数据;文件存储数据;SQLite数据库存储数据;使用ContentProvider存储数据;网络存储数据;这里只详细介绍第一种方式。SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,一般在Activity中重载窗口状

39、态onSaveInstanceState保存一般使用SharedPreferences完成,它提供了Android平台常规的Long长整形、Int整形、String字符串型的保存。它是什么样的处理方式呢?SharedPreferences类似过去Windows系统上的ini配置文件,但是它分为多种权限,可以全局共享访问,android123提示最终是以xml方式来保存,整体效率来看不是特别的高,对于常规的轻量级而言比SQLite要好不少,如果真的存储量不大可以考虑自己定义文件格式。xml处理时Dalvik会通过自带底层的本地XML Parser解析,比如XMLpull方式,这样对于内存资源占用

40、比较好。它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data/data/shared_prefs目录下。SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现。实现SharedPreferences存储的步骤如下: (1) 根据Context获取SharedPreferences对象。 (2) 利用edit()方法获取Editor对象。 (3) 通过Editor对象存储key-value键值对数据。 (4) 通过commit()方法提交数据。SharedPreferences对象与

41、SQLite数据库相比,免去了创建数据库,创建表,写SQL语句等诸多操作,相对而言更加方便,简洁。但是SharedPreferences也有其自身缺陷,比如其职能存储boolean,int,float,long和String五种简单的数据类型,比如其无法进行条件查询等。所以不论SharedPreferences的数据存储操作是如何简单,它也只能是存储方式的一种补充,而无法完全替代如SQLite数据库这样的其他数据存储方式。2.3 Box2D物理引擎介绍2.3.1 Box2D概述Box2d5是一个很出名的2d物理引擎,大家可以Google之。Box2d有C+,flash和Java等版本。andr

42、oid可以直接使用java版本的Jbox2d,但因为Jbox2d的图形渲染是使用processing库来实现的,所以,在android中使用Jbox2d的时候,图形渲染的工作就只能自己来写了。2.3.2 刚体的创建创建刚体的操作是在本章第4节的“地图编辑层”的读取地图之后进行的,而读取地图是在GameView中的loadMap()方法中进行的,所以刚体会在GameView中的loadMap()方法中创建好,并存储在ArrayList中。这就是创建Ball、Chain、Bottle三者父类MypolygonImg的原因,三者的drawSelf()和doAction()方法不完全相同,均需要重写,

43、而抽象出父类的原因,就是便于统一管理,统一得到刚体的位置并进行渲染。2.3.3 关节点的创建系统中存在三种刚体,球、坛子、链条,而链条是要与墙壁和球连接在一起,这就需要创建关节点。关节用于把物体约束到世界,或约束到其它物体上。在游戏中,典型例子有木偶,跷跷板和滑轮。有些关节提供了限制(limit),使你可以控制运动的范围。有些关节还提供了马达(motor),它可以以指定的速度驱动关节一直运动,直到你指定了更大的力或扭矩来抵消这种运动。Box2D提供的关节点类型有距离关节(Distance Joint)、旋转关节(Revolute Joint)、移动关节(Prismatic Joint)、滑轮关

44、节(Pulley Joint)、齿轮关节(Gear Joint)、鼠标关节(Mouse Joint)、线性关节(Line Joint)、焊接关节(Weld Joint),此游戏中只使用到了旋转关节(Revolute Joint)。旋转关节会强制两个物体共享一个锚点,即所谓铰接点。旋转关节只有一个自由度:两个物体的相对旋转。这称之为关节角,要指定一个旋转关节,你需要提供两个物体以及世界坐标的一个锚点。在body2逆时针旋转时,关节角为正。像所有Box2D中的角度一样,旋转角也是弧度制的。按规定,使用Initialize()创建关节时,无论两个物体当前的角度怎样,旋转关节角都为0。有时候,你可能需

45、要控制关节角。为此,旋转关节可以随意地模拟关节限制和马达。关节限制(joint limit)会强制关节角度保持在一定范围内。为此它会应用足够的扭矩。0应该在范围内,否则在开始模拟时关节会有点倾斜。关节马达允许你指定关节的角速度(角度的时间导数),速度可正可负。Box2D会自动管理各个物体的碰撞,弹跳等物理状态,我们只需要创建各种刚体。我们可以使重力朝向侧面(或者你只好转动你的显示器).并且,我们告诉世界(world)当物体停止移动时允许物体休眠.一个休眠中的物体不需要任何模拟。2.4 Libgdx架构介绍 LibGdx6是一个跨平台的2D/3D的游戏开发框架,它由Java/C/C+语言编写而成

46、。它基于Apache License, Version 2协议,对商业使用和非商业使用均免费。开源的游戏框架并不少见,但是Libgdx的优势是相当明显的,主要是体现在以下几个方面:(1) 极强兼容性Libgdx兼容大多数微机平台(标准JavaSE实现,能运行在Mac、Linux、Windows等系统)与Android平台(Android1.5以上即可使用,Android2.1以上可满功率发挥)。对于Android平台的支持在目前Android阵营和相关市场日益扩大的情况下Libgdx的使用者越来越多。(2) 高效性Libgdx为了一个游戏开发框架,它主要是用Java写的,其中也参杂了一些C/C

47、+代码,这些代码是为了处理一些对性能要求很高的操作,比如物理引擎或者音频处理。作为用户,你只需要关注Java端就可以了,它已经把所有的本地代码封装好了。相比于其他Android游戏引擎,Libgdx的效率优势十分明显。(3) 架构清晰Libgdx由audio、files、graphics、math、physics、scenes、utils这些主要类库所组成,它们分别对应了Libgdx中的音频操作,文件读取,2D/3D渲染,Libgdx绘图相关运算,Box2D封装,2D/3D游戏组件,以及Libgdx内置工具类。(4) 物理引擎(Box2D)的封装Libgdx对于物理引擎的封装也是让人惊讶的。它

48、足够疯狂的使用jni封装了box2d的C+端,使得其运行效率比其他同级的物理引擎如jbox2d快不少。现在流行的几个包含物理引擎Android游戏引擎(如Andengine、Rokon等),几乎都在用Libgdx。如果你的游戏(特别是针对Android平台的)准备使用物理引擎,请优先考虑Libgdx。(5) 丰富的工具Libgdx还拥有相当数量的开发工具。如果Particle editor(粒子编辑器),Hiero bitmap font generator(文字生成工具),Texture packer(图片合并工具),TWL布局编辑器。2.5 XML布局介绍虽然可以通过java代码实现窗口组

49、件的创建和添加,如编写最简单的android应用,但是通常会使用基于xml7的布局文件。为了更好的了解XML布局,我们讨论如下两个问题:(1) 什么是基于xml的布局?通过xml文件和格式定义窗口组件之间的关系,包括和容器之间的关系。android系统把布局文件视为资源,存储在项目的res/layout目录下。每个布局文件包括一个树状的元素集合,代表窗口组件和容器的级联关系。每个xml元素可有一些属性,用于描述窗口组件的特性,比如字体风格等。android SDK提供了使用布局文件的aapt工具。该工具可自动被eclipse或者ant的工具链调用,生成项目中的R.java文件,这样可以通过ja

50、va代码直接访问布局的窗口部件。(2) 既然布局效果使用xml布局文件做到的,使用java代码也可以做到,那么为什么使用基于xml的布局呢?使用xml布局文件的最主要原因是便于IDE生成窗口布局。虽然java代码可以实现窗口布局,但是通过java代码生成可视化的布局IDE界面不是一件容易的事情,而xml布局格式是比较规整的。这样的IDE工具比如android的draw。xml格式是既利于机器生成也利于人阅读和编写的中间格式。另外,使用xml作为布局格式是一个通用的做法,比如xul、flex或者xaml,都是如此。 第3章 系统需求分析第3章 系统需求分析需求分析8是软件开发流程中重要的一个环节

51、,需求分析的基本任务是根据用户的需求,准确定义要完成的系统的目标,回答系统必须“做什么”的问题。它的主要用途是明确系统需求,是用户和开发人员之间进行讨论的基础,并作为系统设计、实现以及测试的依据。只有准确全面的需求获取与分析才能保证系统设计、系统实现的顺利进行,为后期测试提供必要的支持。在参考了现有的基于Android系统的手机游戏的功能,并且考虑到了游戏系统的扩展性和成本的基础上,最后制定了本系统的具体需求。3.1 系统实现目标作为一款休闲类手机游戏,首先要体现“休闲”二字,即游戏的难度性、益智性、操作性等关键因素都要有所考虑。同时,最为一款游戏,良好的界面和动画也是吸引游戏玩家的一个重要原

52、因。其次,游戏提供多用户管理,即可以为每一位玩家提供一个游戏关卡存档,可以随时随地继续游戏。为保证游戏能够吸引玩家并正常的运行,从功能上必须达到以下目标:(1) 必须实现众多手机游戏所拥有的普遍功能。作为一款手机游戏,除了好的创意,还要实现基本的功能诸如新建游戏、读取游戏、音乐开关、玩法介绍、开场动画等功能。保证游戏能够正常的运行。(2) 必须保证游戏的实时性与高效性。游戏最重要的一点即游戏的实时性,玩家做出某种操作,系统要能立刻做出相应的反应,特别是把游戏运行到手机上,由于硬件资源的有限,考虑的因素便要提高,以达到一款游戏的实时性与高效性。(3) 必须保证游戏的跨手机型号性。手机游戏不同于P

53、C游戏,手机的型号、硬件配置等因素,特别是手机屏幕分辨率的各不相同,Android开源系统的区别,都会影响到游戏的移植性,为了不影响手机游戏的随时随地性,必须实现跨手机型号运行的目标。3.2 系统运行环境为了充分使用如今手机的现有软硬件资源,在保障手机游戏稳定、高效运行的前提下,达到降低成本的目的。根据系统需求,设定了物流信息系统的运行环境。硬件环境:支持Android2.0以上操作系统的智能手机,处理器1GHZ以上,RAM500M以上。软件环境:Android2.0以上操作系统。3.3 系统开发环境考虑到系统成本问题,全部采用开源软件和框架来构建此系统。相对来说,开源软件成本低,功能相对简单

54、。3.3.1 Android开发工具简介此游戏在Windows操作系统开发,开发工具为Eclipse集成开发环境。考虑到Android开发语言是在支持Java语言的基础上,所以需要配置JDK,版本为1.6.0以上;由于Android开发的特殊性,需要下载和安装Android SDK。Eclipse是一个市场占有率很高的Java IDE工具,Android推荐使用Eclipse来开发Android应用,并为它提供了专门的插件:Android Development Tools(ADT)。3.3.2 Android开发工具使用方法简介安装好Android SDK及ADT插件后,我们开发的Andro

55、id应用需要在Android系统上运行,此时我们可以借助于Android提供的“虚拟手机”来模拟Android手机,把它称为Android Virtual Device(AVD)。当Android应用在模拟器上运行时,我们甚至看不到程序的运行过程,在命令行控制台也看不到程序的输出,为了解决Android应用的调试问题,Android提供了一个DDMS调试环境,DDMS的全称是Dalvik Debug Monitor Service,它是一个功能非常强大的调试环境,包括设备面板、信息输出面板、线程跟踪面板、Heap内存跟踪面板、模拟器控制面板、文件管理对话框等几个重要的面板。可以跟踪程序的任意一步执行。3.3.3 Android应用程序安装开发好一款Android应用后,搭建好的集成开发环境会在工程文件中的Bin文件夹中声称一个*.apk文件,将*.apk文件通过数据线传输到手机中,安装即可运行开发好的Android应用程序

温馨提示

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

评论

0/150

提交评论