基于j2me的益智游戏设计毕业论文(设计)(编辑修改稿)内容摘要:

了详细说明。 系统测试 介绍了测试计划并从功能方面进行 测试。 最后 对 本游戏 的应用展望 未来。 本章首先简单地介绍手机移动游戏的开发背景、手机游戏的市场状况、用户数量、社会对游戏的反映。 进而发现 了当前一些游戏的弊端,因此提出了绿色健康的益智游戏这个论题。 最后,叙述了本游戏的开发意义和论文的组织安排。 3 2 相关技术与工具介绍 J2ME 简介 J2ME 在 Java 体系中的地位 JAVA 是一门优秀的编程语言,具有面向对象、与平台无关、安全、稳定、和多线程等特点,是目前软件设计中最为流行的编程语言之一。 目前主要包括 Java平台标准版 (Java platform Standard Edition, Java SE)、 Java 平台企业版 (Java platform Enterprise Edition, Java EE)、 Java 平台微型版 (Java platform Micro Edition. Java ME)和 Java 卡平台 (Java Card)。 Java SE 的目标是个人计算机和服务器的应用; Java EE 的目标是企业计算机和服务器的应用; Java ME 的目标是便携式计算机和嵌入式设备的应用 [4][5]。 如图 21所示: 图 21 四种 Java 平台 Java ME 实际上是一系列规范的集合,由 Java Community Process(Java 社区组织, JCP)制 定并发布相关的 Java 规范请求 (Java Specification Request, JSR),各个厂商按照规范在自己的产品上进行实现,但是必须要通过 TCK(Technical Compatible Kit,兼容性测试包 )测试来确保兼容性。 J2ME 技术框架 由于移动设备这个概念涵盖了广泛的领域,包括智能手机、普通手机、掌上电脑、传呼机等,他们都具有各个不同的硬件配置,而这些硬件特性如内存大小、浮点运算能力等都严重限制了手机应用程序的可移植性。 为了方便 应用 程序的开 J2SE J2EE J2ME Java Card 基于 J2ME 的益智游戏设计 4 发,迫切需 要定义一个规范来统一 这些嵌入式设备。 但是,这个规范同样需要灵活性和较高的适应性,这样才能使规范更有意义。 因此, J2ME 定义了一种灵活的层次规范结构来规范各种移动设备,不同层次的规范相互协作来提供一个完整的移动 Java 平台。 J2ME 定义的移动平台分为四层:主机操作系统、配置、简表和厂商可选包,如图 22 所示。 因为 Java 应用程序是独立于操作系统的,因此, Java ME 规范仅 包括三层:配置、简表和厂商可选包。 图 22 Java 应用运行环境 配置 是针对某一类设备的最小 Java 平台,它包括满足该类设备的虚拟机, 运行的最小子集和针对该类设备的核心库的最小子集。 目前 J2ME 可用的配置有两种: CDC(Connected Device Configuration,连接设备配置 )和 CLDC( Connected Limited Device Configuration, 连接有限设备配置)。 从库文件的角度来分析 CDC和 CLDC 可知, CLDC 是 CDC 的子集。 CDC 应用于相对内存量较大、更强处理器的移动设备而 CLDC 则主要针对那些资源有限的嵌入式设备(如手机)都属于这一大类。 简表是架构在配置之上的规范,因此每种简表都会声明它是 基于哪种配置。 简表针对不同的移动设备定义了各种高级 API,这些高级 API 通常对于其它硬件设备不相关的扩充类库。 SUN 公司定义了两种可用的参考 J2ME 简表:基础简表和 MIDP。 基础简表主要用于 CDC 配置,因此其虚拟机几乎等同于标准的虚拟机。 MIDP 和性能较低的 CLDC 配置一起为开发移动设备应用程序提供了完整的 Java平台。 本文设计和开发的益智类游戏就是使用的 MIDP。 厂商可选包是由厂商提供给程序开发人员一组与其它规范(或 API)没有任何依存性的类库,开发人员可以利用这一类库可以开发出具有特定的功能应用程序。 例如,有些产商会提供简单的数据库管理系统,那么他们就会提供 JDBC( Java Database Connectivity, Java 数据库连接)。 厂商可选包 简表 配置 JVM 主机操作系统 5 综上, J2ME 的体系结构如图 23所示: 图 23 J2ME 体系结构 MIDLET 应用程序简介 MIDlet 是在支持 MIDP 规范的移动信息设备上运行的应用程序。 MIDlet 的生命周期包括三个基本状态:暂停状态( Paused)、激活状态( Active)和销毁状态( Destroyed)。 这三种状态间 的转换是应用程序管理器通过调用 MIDlet 的三个回调方法 startApp()、 pauseApp()和 destroyApp()来实现的。 如图 24所示: 图 24 MIDlet 生命周期转换图 当 MIDlet 被执行时,应用程序管理器首先调用 MIDlet 的构造函数创建一个MIDlet 实例,并将该 MIDlet 的状态置为暂停。 然后应用程序管理器将它转换到激活状态并调用 startApp()方法。 当 MIDlet 的 startApp()方法成功执行以后, MIDlet的生命周期就展开了。 MIDlet 的生命周期完全由应用程序 管理器调用对应的回调函数 (即 MIDlet 类定义的三个抽象方法 )实现。 当 MIDlet 想对自身生命周期产生影响,就必须通过三个状态改变方法:notifyPaused()、 notifyDestoryed 和 resumeRequest()。 这 三个方法分别通知应用程序管理器转换到暂停状态、销毁状态或者激活状态。 但是,这种状态的改变不一CLDC MIDP KVM Host Operation Systems Personal Profile Foundation Profile CDC CVM Card VM Java Card API 基于 J2ME 的益智游戏设计 6 定成功。 Emini Physics Engine 简介 Emini Physics Engine 的基本概念 物理引擎通过为刚性物体赋予真实的物理属性的方式来 实现 运 动、旋转和碰撞反 应的 模拟。 通过物理引擎,程序员可以在游戏中实现对现实世界的一些物理效果的模拟。 比如:重力下降、摩擦力、弹性碰撞、非弹性碰撞、快速物体的碰撞等物理现象的模拟。 为了实现一些物理效果,本人使用了 Emini Physics Engine Version。 Emini Physics Engine 是一个二维物理引擎库,使用这个引擎可以创建逼真的物理模拟。 它可以完成碰撞的检测和处理,可以创建自定义的形状,处理摩擦力、重力等现实世界中的常见外力。 Emini物理引擎的常见概念如下: (1) Body: 刚体,物理模拟中的基本元素,物理模拟中的所有相互作用的对象都是以 Body 的形式存在。 它的静态属性有形状、重量、摩擦系数、弹性系数等和状态属性:位置、速度等。 (2) Shape: 形状,每一个刚体都有一个形状。 形状定义了刚体的边界和物理属性,一个形状可以用于多个刚体且形状可以为凸多边形或者圆形。 (3) World:世界,包括物理系统中所有的刚体、形状、外力和模拟物理系统的参数。 (4) External Forces:外力。 所有不是来自物理模拟系统的且作用于系统内部刚体的力都属于外力。 例如:重 力。 可以通过实现 External Forces 接口,方便的加入外力。 (5) Contact: 接触。 刚体和刚体之间真实的接触被抽象为两种情况,第一种是一个刚体的一角和另一个刚体相交,抽象为点在平面上;第二种情况是两个刚体的平面重合,抽象为两个点在重合的平面上。 (6) Collisions:碰撞。 物理引擎首先检测所有刚体的碰撞。 根据牛顿力学原理处理碰撞后的反应。 (7) ShapeSet: 形状集合。 每一个世界对象都会维护一个 ShapeSet 类型的对象 ,该对象包含所属世界的所有刚体的 Shape 类型。 7 Emini Physics Engine 所有包的层次结构简介 Emini物理引擎的大部分实现类都是 Object类的子类,这种实现方式提高了程序的运行效率,简化了类层次且易于理解。 包的层次结构如图 25所示: 图 25 Emini 物理引擎包的层次结构 Emini Physics Engine 的数学知识 由于 不支持浮点数运算,为了在运算中尽量准确, Emini 物理引擎使用 FixPoint 数据类型表示浮点数据。 在使用 FixPoint 类型时,单精度数可表示的最小的数为 1221 。 双精度数可表示的最小的数是 2412。 FixPoint 数据类型的数据在内存中仍然是以整型数据或者长整型数据存储,只是在使用的时候将数据乘以对应位所表示的权重,就是所用的数据。 按照这种方法就能最大限度的减小误差。 例如,一个 FixPoint 类型的数据如 4096 表示的是十进数据 1。 使用 Fixpoint的单精度类型存储浮点数据 时,就是使用 乘以 4096。 最后结果是 2048。 那么内存中存储 的就是 2048,用 2048 表示。 由于一个 FixPoint 类型的单精度数用 12 位的整型数据表示,所以只能截取该类型数据的高四位 0110来表示一个 FixPoint类型的数据是如何转化为浮点型数据的。 基于 J2ME 的益智游戏设计 8 表 21 FixPoint 代表的数 0110 表示的数 2 1 0 1 1 0 = 2*0+1*1+*1+*0 = 开发平台与运行环境 简介 (1) JDK JDK 是 Java 开发工具包 (Java Development Kit), Java 应用程序的基础。 本文中所用的 JDK 版本为 JDK。 (2) Eclipse 开发平台 Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。 Eclipse 本身只是一个框架和一组响应的服务,并不能够开发什么程序。 在 Eclipse 中几乎每样东西都是插件,实际上正是运行在 Eclipse 平台上的种种插件提供我们开发程序的各种功能。 同时各个领域的开发人员通过开发插件,可以构建与 Eclipse 环境无缝集成的工具。 WTJ 是一个用于 J2ME 开发的 Eclipse 插件。 它使 Eclipse 可以更有效地开发移动设备的 Java 应用程 序。 本系统的开发工具首选开源工具 Eclipse Helios 和 作为 J2ME 开发工具。 (3) 运行环境 本系统 开发时在如下 环境 中运行良好: 操作系统: Microsoft Windows XP Professional Service Pack 3。 运行环境: J2ME SDK。 附加工具: QuickTime 7。 同时也可以在内存 以上,应用程序限制大小大于 800K、屏幕分辨率为240*3支持混音的 Nokia 真机上运行。 本章主要是介绍了 J2ME 技术的基本框架组成、 MIDlet 程序的基本形式和Emini 物理引擎的基本概念、框架结构和使用方法。 最后介绍了开发工具、开发平台和运行环境。 9 3 需求分析 需求分析和系统设计是软件开发的基础,决定着软件开发的成功与否 [6]。 需求分析就是基于用户的需求并且结合现有技术能力通过分析游戏策略和规则进而得出系统的拟实现的功能需求。 需求分析的结果影响着整个系统的成败。 游戏规则简介 鹅城之战以后,鹅城人民过了一段没有马匪的好日子。 但是,好景不长,一股马匪霸占了鹅城,无恶不作。 鹅城人民生活在水深火热之中。 张牧 之不得不重新出山,赶走马匪,夺回镇长之位,保护鹅城人民。 玩家开始游戏以后,可以控制游戏中的主角张牧之,通过点击触摸屏发射子弹,子弹会在空中飞行,飞行的过程中会击中在飞行路线上的马匪。 如果马匪被全部消灭,且主角没有死亡,则闯关成功。 玩家经过不断挑战各种关卡,最终夺回镇长之位。 但是,闯关过程中玩家还要小心不要被木箱、铁球砸中。 如果被砸中就会导致主角死亡,玩家闯关失败。 每当玩家通过一关后系统就会保存玩家通过此关时消耗的子弹数量和这一关玩家可以使用的最大子弹数。 系统在玩家游戏过程中还会适当的给予玩家奖励如提供更多 的子弹,以便平衡游戏的难度,鼓励玩家继续游戏。 所以,每一关的最大子弹数可能不同。 游戏设计目标 本游戏的主要目的是让玩家体会到益智游戏的乐趣,通过思考子弹的碰撞路径进而让子弹消灭麻匪,消灭完所有马匪后,玩家就可通过这一关。 通过本游戏让玩家体会到让子弹飞一会儿的真实感。 因此,本游戏要实现部分物理效果,惯性、重力下降、摩擦力、弹性碰撞等。 同时,本游戏还要提供玩家数据管理,系统默认为玩家保存和。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。