基于J2ME的益智游戏设计毕业论文(设计).doc

上传人:小小飞 文档编号:3920571 上传时间:2019-10-10 格式:DOC 页数:59 大小:1.19MB
返回 下载 相关 举报
基于J2ME的益智游戏设计毕业论文(设计).doc_第1页
第1页 / 共59页
基于J2ME的益智游戏设计毕业论文(设计).doc_第2页
第2页 / 共59页
基于J2ME的益智游戏设计毕业论文(设计).doc_第3页
第3页 / 共59页
基于J2ME的益智游戏设计毕业论文(设计).doc_第4页
第4页 / 共59页
基于J2ME的益智游戏设计毕业论文(设计).doc_第5页
第5页 / 共59页
点击查看更多>>
资源描述

《基于J2ME的益智游戏设计毕业论文(设计).doc》由会员分享,可在线阅读,更多相关《基于J2ME的益智游戏设计毕业论文(设计).doc(59页珍藏版)》请在三一文库上搜索。

1、 毕业论文(设计)题 目: 基于J2ME的益智游戏设计 院(系): 专业年级: 姓 名: 学 号: 指导教师: 原 创 性 声 明本人郑重声明:本人所呈交的毕业论文,是在指导老师的指导下独立进行研究所取得的成果。毕业论文中凡引用他人已经发表或未发表的成果、数据、观点等,均已明确注明出处。除文中已经注明引用的内容外,不包含任何其他个人或集体已经发表或撰写过的科研成果。对本文的研究成果做出重要贡献的个人和集体,均已在文中以明确方式标明。本声明的法律责任由本人承担。论文作者签名: 日 期: 关于毕业论文使用授权的声明本人在指导老师指导下所完成的论文及相关的资料(包括图纸、试验记录、原始数据、实物照片

2、、图片、录音带、设计手稿等),知识产权归属平顶山学院。本人完全了解平顶山学院有关保存、使用毕业论文的规定,同意学校保存或向国家有关部门或机构送交论文的纸质版和电子版,允许论文被查阅和借阅;本人授权平顶山学院可以将本毕业论文的全部或部分内容编入有关数据库进行检索,可以采用任何复制手段保存和汇编本毕业论文。如果发表相关成果,一定征得指导教师同意,且第一署名单位为平顶山学院。本人离校后使用毕业论文或与该论文直接相关的学术论文或成果时,第一署名单位仍然为平顶山学院。论文作者签名: 日 期: 指导老师签名: 日 期: 基于J2ME的益智游戏设计摘 要由于手机已经成为大众生活的必需品,适用于手机的应用程序

3、,尤其是游戏,越来越受到人们的关注和喜爱。益智游戏是指那些通过一定的逻辑推理或是数学,物理,化学知识,甚至是游戏设计者设定的原理来完成一定任务的小游戏。一般会比较有意思,需要适当的思考。益智游戏的游戏目标要清晰地呈现给玩家,让玩家明白自己要干什么。游戏的逻辑要浅显易懂,这样才能让玩家容易接受。手机游戏的通用性是指游戏在不同的手机本台上显示的基本相同,游戏操作流程、操作方法基本相同。基于J2ME框架的游戏较好的解决了游戏的通用性即同一款游戏可以适用于采用不同平台,相同开发标准的手机。通过学习J2ME框架和Emini物理引擎,然后在传统的J2ME游戏框架基础上整合了物理引擎。通过学习游戏开发的相关

4、理论知识如游戏资源的管理、游戏动画的设计和实现原理、游戏前景和背景音乐的管理方法、游戏状态管理、物理引擎的使用方法等,根据以上开发方法,设计了游戏的框架,开发了让子弹飞这款益智游戏。然后,针对游戏的需求分析制订了详细的测试计划对游戏进行了单元测试和系统测试。本论文从游戏开发的生命周期入手,介绍了系统开发的背景、应用到的技术、游戏的设计目标、功能需求、操作流程、游戏的概要设计、详细设计及实现方法,然后介绍了游戏的测试。最后对本课题做了总结和展望。关键词:益智游戏,物理引擎,让子弹飞,JAVA METhe Design of Puzzle Game Based On J2MEAbstractAs

5、mobile phones have become the necessities of public life apply to mobile phone applications, especially games, more and more attention and love. Puzzle game by logical reasoning or mathematics, physics, chemistry knowledge, and even a small game of the principle set by the game designers to complete

6、 certain tasks. Generally would be more interesting, appropriate thinking. Puzzle game the game objectives to be clearly presented to the players, the players understand they have to do. The logic of the game is easy to understand, so as to allow players to accept easily. The versatility of the mobi

7、le game is basically the same game in this stage of the cell phone display, game flow, methods of operation is basically the same. Based on the J2ME framework of the game better solution to the versatility of the game with a game can be applied using different platforms, the mobile phone of the same

8、 development standards.Learn J2ME framework and the Emini physics engine, and then in the traditional J2ME game framework based on integrated physics engine. Theoretical knowledge by learning game development, such as the management of game resources, game animation design and realization of the pri

9、nciple of game the foreground and background music management methods, game state management, the physics engine to use, etc., according to the above development methods, design of the game the framework was developed to let the bullets fly this puzzle game. Then, based on needs of the game I develo

10、ped a detailed test plan to conduct unit testing and system testing of the game.Of this thesis is to start from the game development life cycle, system development background, applied to technology, game design goals, functional requirements, operating procedures, a summary of the game design, detai

11、led design and implementation, and then introduces the testing of the game . Finally, this paper makes a summary and outlook.Keywords: Puzzle Game, Physics Engine, Let the Bullet Fly, JAVA ME基于J2ME的益智游戏设计目 录1 绪 论11.1项目开发背景、应用现状及意义11.2 论文的组织安排21.3小结22 相关技术与工具介绍32.1 J2ME简介32.1.1 J2ME在Java体系中的地位32.1.2

12、J2ME技术框架32.1.3 MIDLET 应用程序简介52.2 Emini Physics Engine 简介62.2.1 Emini Physics Engine的基本概念62.2.2 Emini Physics Engine所有包的层次结构简介72.2.3 Emini Physics Engine的数学知识72.3 开发平台与运行环境简介82.4小结83 需求分析93.1 游戏规则简介93.2 游戏设计目标93.3 游戏的功能需求分析93.4 小结124 系统总体设计134.1 功能设计134.1.1 游戏框架设计134.1.2 功能模块设计144.2 数据库设计154.2.1 数据库概

13、念结构设计154.2.2 数据库逻辑结构设计164.3 接口设计174.4 小结185 系统详细设计与实现195.1 功能模块详细设计195.1.1 物理模拟模块195.1.2 资源管理225.1.3 游戏状态管理225.1.4 动画管理225.1.5 声音管理245.2 游戏的实现265.2.1 游戏框架的组织265.2.2. 游戏数据访问层实现285.2.3 业务逻辑层实现305.2.4. 游戏视图层的实现325.2.5 游戏控制层的实现355.3 小结366 测试376.1 系统测试计划376.1.1 测试目的376.1.2 测试环境376.1.3 功能测试376.2 具体测试386.3

14、 小结407 结束语417.1 总结417.2 展望41附 录42参考文献48致 谢491 绪 论1.1项目开发背景、应用现状及意义当前移动互联网游戏产业发展迅猛,随着手机游戏产品持续丰富,手机游戏玩家迅速增长,2008年中国手机游戏活跃玩家突破698万户。易观国际预测,2009年手机游戏活跃玩家将达到948万户1。艾媒市场咨询(iimedia research)研究显示,2010年中国手机产量超过8亿,预计2011年将保持10.4%的增长速度,超过8.9亿部2。可见手机游戏的市场将是巨大的。在游戏产业迅猛发展的同时,社会各界也应该看到游戏产业所带来的负面影响。中国网络游戏玩家已经从3260万

15、迅猛增加到7598万,其中超过八成是青少年。这其中还有很多是成瘾少年。一方面,青少年意志力薄弱、自我控制力较弱;另一方面,一些低劣的网络游戏中充斥着很多不健康的因素。面对这样的情况,一些专家开始担忧游戏中的色情、暴力、邪魔和反社会行为等不良成分会对青少年造成不良影响,并可能使青少年因沉迷游戏而影响学习。与此同时,一些专家认为良好的游戏例如益智游戏可以帮助学生在娱乐中学习,在潜移默化中达到学习知识的目的。结合手机的普遍性,从而本人提出了手机益智类游戏这样一个论题。然而,手机设备有几百种,没有统一的标准。各个手机制造商都有各自的实现方式,这种平台间的差异给手机应用程序的开发和移植造成了很大的限制。

16、JAVA凭借其优秀的跨平台特性为移动开发者提供了较好的解决方案,提高了第三方所开发的程序的通用性。因此,JAVA也获得了巨大的发展。手机游戏产业已经发展的如火如荼,据Juniper Research的研究显示,2008年欧洲的Java游戏产值达到了97亿美元,其中,Java手机游戏占到653。综上所述,JAVA在手机移动应用的开发领域具有很大的潜力。尤其JAVA ME框架提高了移动应用的通用性,为开发者提供了便利。研究和实现手机益智类游戏有着重要意义:首先,由于游戏产业还不够成熟,游戏设计人员整体素质不高,游戏题材繁杂,游戏内容不健康等原因造成了一些游戏中存在大量的消极内容,不利于游戏玩家的身

17、心健康。所以,一种以绿色健康为特色的游戏正迫切为人们所需要,益智游戏则很好的满足了这种需求。其次,本课题主要是设计和开发基于J2ME的手机益智游戏让子弹飞,一方面有利于游戏玩家的身心健康,有助于让玩家养成勤动手、爱思考的习惯,另一方面还能通过游戏的设计和开发检验四年来的学习效果,积累开发经验,为以后的学习和工作打下坚实的基础。本文是对物理引擎和一般J2ME游戏框架整合的一次探索。如果没有物理引擎,游戏中的一些物理效果就只能通过硬编码的方式写入到程序中、增加了模块之间的耦合性,降低了软件的可扩展性,为以后软件的扩展和维护增加了难度。所以,本文对两者的整合对以后的研究具有一定的借鉴意义。1.2 论

18、文的组织安排绪论主要介绍了手机益智类游戏开发背景、应用现状以及开发意义,论文的组织安排。相关技术与工具简介主要说明了本游戏在设计过程中用到的关键技术和开发工具,为项目的设计做技术支持。需求分析主要是根据游戏的策略和游戏规则得出系统的功能需求。总体设计是在系统需求分析的基础上,对系统的架构、系统的功能、接口进行设计进而得出一个系统的总体框架。系统的详细设计和实现主要从功能模块的详细设计和系统架构层次的实现做了详细说明。系统测试介绍了测试计划并从功能方面进行测试。最后对本游戏的应用展望未来。1.3小结本章首先简单地介绍手机移动游戏的开发背景、手机游戏的市场状况、用户数量、社会对游戏的反映。进而发现

19、了当前一些游戏的弊端,因此提出了绿色健康的益智游戏这个论题。最后,叙述了本游戏的开发意义和论文的组织安排。72 相关技术与工具介绍2.1 J2ME简介2.1.1 J2ME在Java体系中的地位JAVA是一门优秀的编程语言,具有面向对象、与平台无关、安全、稳定、和多线程等特点,是目前软件设计中最为流行的编程语言之一。目前主要包括Java平台标准版(Java platform Standard Edition,Java SE)、Java平台企业版(Java platform Enterprise Edition, Java EE)、Java平台微型版(Java platform Micro Edi

20、tionJava ME)和Java卡平台(Java Card)。Java SE的目标是个人计算机和服务器的应用;Java EE的目标是企业计算机和服务器的应用;Java ME的目标是便携式计算机和嵌入式设备的应用45 。如图2-1所示:J2SEJ2EEJ2MEJava Card图2-1 四种Java平台Java ME实际上是一系列规范的集合,由Java Community Process(Java 社区组织,JCP)制定并发布相关的Java规范请求(Java Specification Request, JSR),各个厂商按照规范在自己的产品上进行实现,但是必须要通过TCK(Technical

21、 Compatible Kit,兼容性测试包)测试来确保兼容性。2.1.2 J2ME技术框架由于移动设备这个概念涵盖了广泛的领域,包括智能手机、普通手机、掌上电脑、传呼机等,他们都具有各个不同的硬件配置,而这些硬件特性如内存大小、浮点运算能力等都严重限制了手机应用程序的可移植性。为了方便应用程序的开发,迫切需要定义一个规范来统一这些嵌入式设备。但是,这个规范同样需要灵活性和较高的适应性,这样才能使规范更有意义。因此,J2ME定义了一种灵活的层次规范结构来规范各种移动设备,不同层次的规范相互协作来提供一个完整的移动Java平台。J2ME定义的移动平台分为四层:主机操作系统、配置、简表和厂商可选包

22、,如图2-2所示。因为Java应用程序是独立于操作系统的,因此,Java ME规范仅包括三层:配置、简表和厂商可选包。厂商可选包简表配置JVM主机操作系统图2-2 Java 应用运行环境配置是针对某一类设备的最小Java平台,它包括满足该类设备的虚拟机,运行的最小子集和针对该类设备的核心库的最小子集。目前J2ME可用的配置有两种:CDC(Connected Device Configuration,连接设备配置)和CLDC(Connected Limited Device Configuration, 连接有限设备配置)。从库文件的角度来分析CDC和CLDC可知,CLDC是CDC的子集。CDC

23、应用于相对内存量较大、更强处理器的移动设备而CLDC则主要针对那些资源有限的嵌入式设备(如手机)都属于这一大类。简表是架构在配置之上的规范,因此每种简表都会声明它是基于哪种配置。简表针对不同的移动设备定义了各种高级API,这些高级API通常对于其它硬件设备不相关的扩充类库。SUN公司定义了两种可用的参考J2ME简表:基础简表和MIDP。基础简表主要用于CDC配置,因此其虚拟机几乎等同于标准的虚拟机。MIDP和性能较低的CLDC配置一起为开发移动设备应用程序提供了完整的Java平台。本文设计和开发的益智类游戏就是使用的MIDP。厂商可选包是由厂商提供给程序开发人员一组与其它规范(或API)没有任

24、何依存性的类库,开发人员可以利用这一类库可以开发出具有特定的功能应用程序。例如,有些产商会提供简单的数据库管理系统,那么他们就会提供JDBC(Java Database Connectivity,Java数据库连接)。综上,J2ME的体系结构如图2-3所示:CLDCMIDPKVMHost Operation SystemsPersonal ProfileFoundation ProfileCDCCVMCard VMJava Card API图2-3 J2ME体系结构2.1.3 MIDLET 应用程序简介MIDlet是在支持MIDP规范的移动信息设备上运行的应用程序。MIDlet的生命周期包括三

25、个基本状态:暂停状态(Paused)、激活状态(Active)和销毁状态(Destroyed)。这三种状态间的转换是应用程序管理器通过调用MIDlet的三个回调方法startApp()、pauseApp()和destroyApp()来实现的。如图2-4所示:图2-4 MIDlet生命周期转换图当MIDlet被执行时,应用程序管理器首先调用MIDlet的构造函数创建一个MIDlet实例,并将该MIDlet的状态置为暂停。然后应用程序管理器将它转换到激活状态并调用startApp()方法。当MIDlet的startApp()方法成功执行以后,MIDlet的生命周期就展开了。MIDlet的生命周期完

26、全由应用程序管理器调用对应的回调函数(即MIDlet 类定义的三个抽象方法)实现。当MIDlet想对自身生命周期产生影响,就必须通过三个状态改变方法:notifyPaused()、notifyDestoryed和resumeRequest()。这三个方法分别通知应用程序管理器转换到暂停状态、销毁状态或者激活状态。但是,这种状态的改变不一定成功。2.2 Emini Physics Engine 简介2.2.1 Emini Physics Engine的基本概念物理引擎通过为刚性物体赋予真实的物理属性的方式来实现运动、旋转和碰撞反应的模拟。通过物理引擎,程序员可以在游戏中实现对现实世界的一些物理效

27、果的模拟。比如:重力下降、摩擦力、弹性碰撞、非弹性碰撞、快速物体的碰撞等物理现象的模拟。为了实现一些物理效果,本人使用了Emini Physics Engine Version 1.3.3 。Emini Physics Engine是一个二维物理引擎库,使用这个引擎可以创建逼真的物理模拟。它可以完成碰撞的检测和处理,可以创建自定义的形状,处理摩擦力、重力等现实世界中的常见外力。Emini物理引擎的常见概念如下:(1) Body: 刚体,物理模拟中的基本元素,物理模拟中的所有相互作用的对象都是以Body的形式存在。它的静态属性有形状、重量、摩擦系数、弹性系数等和状态属性:位置、速度等。(2) S

28、hape: 形状,每一个刚体都有一个形状。形状定义了刚体的边界和物理属性,一个形状可以用于多个刚体且形状可以为凸多边形或者圆形。(3) World:世界,包括物理系统中所有的刚体、形状、外力和模拟物理系统的参数。(4) External Forces:外力。所有不是来自物理模拟系统的且作用于系统内部刚体的力都属于外力。例如:重力。可以通过实现External Forces接口,方便的加入外力。(5) Contact: 接触。刚体和刚体之间真实的接触被抽象为两种情况,第一种是一个刚体的一角和另一个刚体相交,抽象为点在平面上;第二种情况是两个刚体的平面重合,抽象为两个点在重合的平面上。(6) Co

29、llisions:碰撞。物理引擎首先检测所有刚体的碰撞。根据牛顿力学原理处理碰撞后的反应。(7) ShapeSet: 形状集合。每一个世界对象都会维护一个ShapeSet类型的对象,该对象包含所属世界的所有刚体的Shape类型。2.2.2 Emini Physics Engine所有包的层次结构简介Emini物理引擎的大部分实现类都是Object类的子类,这种实现方式提高了程序的运行效率,简化了类层次且易于理解。包的层次结构如图2-5所示:图2-5 Emini物理引擎包的层次结构2.2.3 Emini Physics Engine的数学知识由于CLDC1.0不支持浮点数运算,为了在运算中尽量准

30、确,Emini物理引擎使用FixPoint数据类型表示浮点数据。在使用FixPoint类型时,单精度数可表示的最小的数为。双精度数可表示的最小的数是。FixPoint数据类型的数据在内存中仍然是以整型数据或者长整型数据存储,只是在使用的时候将数据乘以对应位所表示的权重,就是所用的数据。按照这种方法就能最大限度的减小误差。例如,一个FixPoint类型的数据如4096表示的是十进数据1。使用Fixpoint的单精度类型存储浮点数据0.5时,就是使用0.5乘以4096。最后结果是2048。那么内存中存储的就是2048,用2048表示0.5。由于一个FixPoint类型的单精度数用12位的整型数据表

31、示,所以只能截取该类型数据的高四位0110来表示一个FixPoint类型的数据是如何转化为浮点型数据的。表2-1 FixPoint 代表的数0110表示的数210.50.250110= 2*0+1*1+0.5*1+0.25*0 = 1.52.3 开发平台与运行环境简介(1) JDKJDK是Java开发工具包(Java Development Kit),Java应用程序的基础。本文中所用的JDK版本为JDK 1.6。(2) Eclipse开发平台Eclipse是一个开放源代码的、基于Java的可扩展开发平台。Eclipse本身只是一个框架和一组响应的服务,并不能够开发什么程序。在Eclipse中

32、几乎每样东西都是插件,实际上正是运行在Eclipse平台上的种种插件提供我们开发程序的各种功能。同时各个领域的开发人员通过开发插件,可以构建与Eclipse环境无缝集成的工具。WTJ是一个用于J2ME开发的Eclipse插件。它使Eclipse可以更有效地开发移动设备的Java应用程序。本系统的开发工具首选开源工具Eclipse 3.6.2 Helios 和WTJ1.1.2作为J2ME开发工具。(3) 运行环境本系统开发时在如下环境中运行良好:操作系统:Microsoft Windows XP Professional Service Pack 3。运行环境:J2ME SDK 3.0。附加工具

33、:QuickTime 7。同时也可以在内存1.5M以上,应用程序限制大小大于800K、屏幕分辨率为240*320、支持混音的Nokia真机上运行。2.4小结本章主要是介绍了J2ME技术的基本框架组成、MIDlet程序的基本形式和Emini物理引擎的基本概念、框架结构和使用方法。最后介绍了开发工具、开发平台和运行环境。3 需求分析需求分析和系统设计是软件开发的基础,决定着软件开发的成功与否6。需求分析就是基于用户的需求并且结合现有技术能力通过分析游戏策略和规则进而得出系统的拟实现的功能需求。需求分析的结果影响着整个系统的成败。3.1 游戏规则简介鹅城之战以后,鹅城人民过了一段没有马匪的好日子。但

34、是,好景不长,一股马匪霸占了鹅城,无恶不作。鹅城人民生活在水深火热之中。张牧之不得不重新出山,赶走马匪,夺回镇长之位,保护鹅城人民。玩家开始游戏以后,可以控制游戏中的主角张牧之,通过点击触摸屏发射子弹,子弹会在空中飞行,飞行的过程中会击中在飞行路线上的马匪。如果马匪被全部消灭,且主角没有死亡,则闯关成功。玩家经过不断挑战各种关卡,最终夺回镇长之位。但是,闯关过程中玩家还要小心不要被木箱、铁球砸中。如果被砸中就会导致主角死亡,玩家闯关失败。每当玩家通过一关后系统就会保存玩家通过此关时消耗的子弹数量和这一关玩家可以使用的最大子弹数。系统在玩家游戏过程中还会适当的给予玩家奖励如提供更多的子弹,以便平

35、衡游戏的难度,鼓励玩家继续游戏。所以,每一关的最大子弹数可能不同。3.2 游戏设计目标本游戏的主要目的是让玩家体会到益智游戏的乐趣,通过思考子弹的碰撞路径进而让子弹消灭麻匪,消灭完所有马匪后,玩家就可通过这一关。通过本游戏让玩家体会到让子弹飞一会儿的真实感。因此,本游戏要实现部分物理效果,惯性、重力下降、摩擦力、弹性碰撞等。同时,本游戏还要提供玩家数据管理,系统默认为玩家保存和更新关卡信息。玩家也可以删除所通过关卡的信息。3.3 游戏的功能需求分析功能需求是指系统必须提供的服务。用例图的主要作用是描述参与者和用例之间的关系,帮助开发人员可视化的了解系统的功能。根据游戏的规则和游戏策略,玩家在游

36、戏开始之前可以通过按键选择操作,在游戏开始以后就可以通过触摸屏控制主角发射子弹和发射子弹的位置来进行游戏。玩家的操作有设置播放背景音乐、设置播放音效、关闭音效、关闭背景音乐、点击触摸屏、选择菜单项。玩家用例图如图3-1所示:图3-1 玩家用例图对数据管理用例的描述如下表所示:表3-1 数据管理用例描述用例编号: 102用例名称:数据管理用例概述:玩家通过选项菜单选择删除数据或者查看数据范围私有参与者:玩家前置条件:玩家开始游戏后置条件:根据用户操作对数据库数据进行操作。基本事件流:查看数据:玩家在游戏主画布上选择开始游戏选项。系统显示所有已经通过的关卡的数据。删除数据:用户选择清除数据选项。系

37、统删除所有关卡的数据。用例终止其他事件流:当用户没有通过任何一关时,不显示该内容。异常事件流:无后置条件:无从系统内部角度分析系统的功能需求可能有物理模拟、动画管理、声音管理、资源管理和游戏状态管理功能。下面开始介绍各个功能模块的需求。(1) 物理模拟模块可以模拟常见的物理现象,例如:重力下降即不在地面的物体例如马匪、箱子、球等物体可以做自由落体运动;摩擦力即物体运动一段时间以后可以自动停止;弹性碰撞即子弹击中马匪以后,子弹穿过马匪的身体即子弹不改变运动方向且动能不变;子弹击中墙壁等静止的建筑物或者道具后,子弹原来的运动方向上的速度变为零,然后按照光线反射原理,子弹反弹。子弹的速度大小不变。物

38、理模拟模块的用例图如下图所示:图3-2 物理模拟模块用例图物理模拟模块中的飞行用例的描述如下表所示:表3-2 飞行用例描述用例编号: 109用例名称:飞行用例概述:子弹发射以后按照80像素每秒的速度做匀速飞行。范围私有参与者:子弹前置条件:玩家开始游戏后点击触摸屏并且玩家还有子弹后置条件:子弹数减少一个,子弹开始运动。基本事件流:玩家开始游戏后,点击触摸屏。用户还有子弹,绘制一枚子弹并且子弹开始运动。子弹数减少一个。子弹发送碰撞。子弹碰撞数到10次,子弹消失。用例终止。其他事件流:当用户没有通过任何一关时,不显示该内容。异常事件流:无后置条件:无(2) 动画管理动画就是根据时间而发生连续变化的

39、图画。在手机游戏中,丰富多彩的动画给游戏增加不少吸引力。动画管理模块负责将游戏中的场景、精灵、道具绘制到画布中。本游戏中的动画管理主要分为两个部分:一部分主要是绘制游戏中的场景,另一部分主要是绘制物理模拟模块中的Body即建筑、精灵和道具。通过动画的绘制操作才能让游戏更真实更具有吸引力。(3) 声音管理在支持混音的手机上根据玩家的输入播放相应的声音。游戏开始后必须要有背景音乐,游戏开始页面和游戏过程中玩家的操作要有提示音乐,英雄发射子弹后要播放发射子弹的声音,英雄打光子弹以后要播放扣动扳机而没有子弹的声音,子弹碰撞墙壁等要有音效并且玩家可以设置是否播放音乐或音效。(4) 资源管理资源管理实现资

40、源的加载和释放。例如:动画管理模块需要图片资源进行绘制操作,资源管理模块就会提供图片。在动画管理模块不需要这个图片时,资源管理模块就将这个图片的引用设为null,这样虚拟机就能回收这块内存7。(5) 游戏状态管理判断游戏的状态是继续游戏、玩家胜利或是玩家失败。根据游戏的状态决定游戏的进程。(6) RMS管理。游戏需要保存玩家通过每一关的信息如:玩家通过的关卡ID、玩家发射的子弹数目、玩家通过此关时共有多少子弹(最大子弹数)。关卡信息里还要保存关卡ID、关卡奖励的子弹数。系统还可以保存游戏的状态。3.4 小结本章针对让子弹飞这款益智游戏拟实现的功能,分析得出本游戏的操作流程。根据J2ME开发的特

41、点和游戏策略得出该系统的功能需求,最后使用UML对系统进行建模,得出了本系统的用例图。414 系统总体设计4.1 功能设计在需求分析阶段获取了系统拟实现的功能模块后为了将所有的功能模块组装成一个系统,就需要一个模型即框架来组织这些模块。所以,本小节将介绍传统的基于J2ME的游戏框架和在传统框架基础上整合了Emini物理引擎的游戏框架。4.1.1 游戏框架设计一般基于J2ME的手机应用程序都必须是MIDlet的子类,并且子类必须重写父类的startApp()、pauseApp()和destroyApp()。当应用程序运行时首先调用startApp(),当应用程序运行时发生暂停时(如来电话或者短信

42、)pauseApp()可能被调用,这依靠手机的具体实现,MIDlet结束时或者玩家结束MIDlet程序时destroyApp()被调用。游戏类型的应用程序还额外需要一个或者几个画布并重写画布类的paint()方法以便实现游戏的逻辑处理和绘制游戏中的场景、精灵、道具等游戏元素。同时游戏画布类还要实现Runnable接口,通过run()控制游戏的运行,除此之外游戏一般要和用户交互。根据交互的方式不同可以选择要实现CommandListener接口或者实现触摸屏事件的响应。通过实现commandAction()方法响应玩家按键输入。如果游戏还需要响应玩家触摸屏事件或者按钮事件还必须根据系统和玩家的交

43、互需求重写画布类keyPressed()、keyRepeated()、keyReleased()、pointerPressed()、pointerDragged()或pointerReleased()方法8。一般框架的总体实现类图如图4-1所示:图4-1 一般框架的总体类图由于本游戏要实现一些物理效果,所以要集成Emini物理引擎。这就让本游戏的框架与传统的框架有些不同。首先是加入了一个中间的“容器”。传统框架中游戏中出现的角色比如精灵、怪兽、建筑物等是直接绘制在画布的。而集成了Emini物理引擎的游戏框架,它的游戏场景需要直接在画布中绘制,游戏中的马匪、箱子、主角都是集中在GraphicWo

44、rd类中。然后由这个GraphicWord类将所有元素绘制到画布中。这种绘制方式屏蔽了底层的绘制细节,提高了绘制的效率,减少了绘制的编码量。只需由所有元素的父类即Body类实现绘制方法。其次,游戏的逻辑控制实现要由画布的paint()方法转移到物理引擎的tick()方法。tick()方法的作用是在物理模拟的每一个周期内,处理游戏的物理方面的逻辑请求和物理模拟请求。逻辑请求的一种情况是:子弹击中了马匪,马匪应该死亡即设置马匪的isAlive属性为false,同时子弹的生命值减去1。第二种情况是马匪被道具砸中,本游戏中就认为马匪被砸死,所以要设置马匪的isAlive属性为false。物理请求的情况

45、是指物理模拟的需要,为了实现这个请求,在GraphicWord类的tick()内部,可以调用父类的tick()方法。最后,本系统将游戏分为四个层次。这四个层次依次是数据访问层、业务逻辑层、游戏控制层、游戏视图层。数据访问层有两个模块第一个是对使用RMS存储的数据和对以文件形式存储的游戏资源地管理。业务逻辑层主要是由两个模块组成,一个是声音管理模块另外一个是物理模拟模块。控制层主要是由游戏状态模块组成,同时还要接受视图层传送的用户输入处理后返回处理结果。视图层由动画管理模块组成。4.1.2 功能模块设计根据需求分析得出的系统拟实现的功能,可以进而设计各个模块中所包含的类。(1) 物理模拟模块中涉

46、及到的参与者有主角、马匪,障碍物如箱子、铁球还有主角的武器子弹。根据面向对象的思想,可以抽象出以上所有对象的共性符合Body类的属性。所以,将所有对象的超类定义为Body。又因为主角、马匪和子弹的特殊性,所以定义MySprite类和Bullet类为Body类的子类。Hero和Robber为MySprite类的子类。GraphicWord是Word类的子类,该类作为所有Body类的容器。GraphicShapeSet类管理所有Body类的Shape对象,该类作为将每个精灵的形状和图片连接在一起的桥梁。(2) 动画管理模块主要涉及到如何向用户呈现出精彩的游戏画面。所以本模块主要是由Canvas类的子类StartCanvas、Index、Simulation、EndCanvas等画布类来实现的。(3) 声音管理模块主要是管理背景音乐、前景音效的。所以,要用处理声音播放业务的类Audio和实现背景音乐播放的BackMusic和ForeMusic。由于音乐播放服务具有同步性所以BackMusic和ForeMusic是Thread类的子类。(4) 资源管理模块主要是对游戏中用

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1