毕业设计论文角色扮演游戏的技能设计(赵昕).doc_第1页
毕业设计论文角色扮演游戏的技能设计(赵昕).doc_第2页
毕业设计论文角色扮演游戏的技能设计(赵昕).doc_第3页
毕业设计论文角色扮演游戏的技能设计(赵昕).doc_第4页
毕业设计论文角色扮演游戏的技能设计(赵昕).doc_第5页
免费预览已结束,剩余49页可下载查看

下载本文档

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

文档简介

西 南 交 通 大 学 本科毕业设计 论文 角色扮演游戏的技能设计 年 级 2006 级 学 号 20065687 姓 名 赵昕 专 业 计算机软件 指导老师 杨宁学 2010 年 6 月 西南交通大学本科毕业设计 论文 第 I 页 院 系 软件学院 专 业 计算机软件 学 号 20065687 姓 名 赵昕 题 目 角色扮演游戏的技能设计 指导教师 评 语 指导教师 签章 评 阅 人 评 语 评 阅 人 签章 成 绩 答辩委员会主任 签章 年 月 日 西南交通大学本科毕业设计 论文 第 II 页 毕毕 业业 设设 计计 任任 务务 书书 班级 06 软计 3 班 姓名 赵昕 学号 20065687 专业 计算机软件 发 题 日 期 年 月 日 完 成 日 期 年 月 日 题题 目目 角色扮演游戏的技能设计 题目类型题目类型 工程设计 科学实验 软件开发 理论研究 综合应用 一 一 设计任务及要求设计任务及要求 技能在角色扮演游戏中占据着重要作用 玩家在游戏中常常追求着较多较好的 技能 在技能设计中 需要考虑到技能的种类 技能的表现形式 技能的威力 攻 击力 等到要素 其中技能的威力通常还与角色的某些属性 如攻击力和等级 有 关 游戏中的技能种类较多 因此设计时需要对技能进行抽象 设计出符合多种技 能的抽象模型 从而使系统容易扩展 采用 J2ME 开发 要求条理清晰 结构合理 符合面向对象程序设计思想 二 二 应完成的硬件或软件实验应完成的硬件或软件实验 三 三 应交出的设计文件及实物 包括设计论文 程序清单或磁盘 实验装置或产应交出的设计文件及实物 包括设计论文 程序清单或磁盘 实验装置或产 品等 品等 西南交通大学本科毕业设计 论文 第 III 页 毕业设计论文 英文翻译 程序清单 系统演示视频 四 四 指导教师提供的设计资料指导教师提供的设计资料 五 五 要求学生搜集的技术资料 指出搜集资料的技术领域 要求学生搜集的技术资料 指出搜集资料的技术领域 游戏技能设计相关资料 六 六 设计进度安排设计进度安排 共 共 16 周 周 第一部分 收集资料 2 周 第二部分 技能种类收集 分析 2 周 第三部分 系统设计 2 周 第四部分 系统实现 6 周 第五部分 撰写论文 3 周 评阅及答辩 评阅及答辩 1 周 指导教师 年 月 日 室主任审查意见 审 批 人 年 月 日 注 设计任务书审查合格后 发到学生手上 西南交通大学本科毕业设计 论文 第 IV 页 西南交通大学软件学院 2008 年制 西南交通大学本科毕业设计 论文 第 V 页 摘 要 手机游戏发展日益加快 随着手机的不断更新发展 用户开始习惯于用手机享 受一些游戏的乐趣 手机游戏中 比较具有商业价值 且较多用户热衷的游戏类型 是角色扮演游戏 而一款好的角色扮演游戏 其技能设计是极其重要的 为了开发 一款手机游戏的技能群 开发者需要把技能抽象出来 做成一个技能通用模型 方 便日后游戏技能的丰富 本文详细介绍了一个角色扮演游戏中的技能开发 该游戏中的技能都是基于一 个技能抽象模型设计的 具有良好的可移植性 程序使用 Java 语言编写 开发期间 使用了 Netbeans WTK2 5 2 等工具 完成了一个角色扮演游戏中的技能设计开发 开发时首先确定了技能涉及的数据条件 然后对技能模型进行抽象编写 形成一个 所有技能通用的模型 之后进行程序的编码工作 编码结束后对游戏的可行性进行 测试 对游戏进行封装 达到了角色扮演游戏技能设计的要求 有完整的游戏场景 能在战斗场景中施放技能 本次开发的手机 Java 角色扮演游戏技能具有良好的扩展 性和可移植性 本文在第一章节给出课题的背景以及采用的程序语言介绍 在第二章节详细介 绍了 J2me 的架构和手机游戏开发优势 然后在第三章节介绍了开发环境的搭建 介 绍了用到的开发工具 第四章根据需求进行系统功能的设计以及一些事件的处理方 式 第五章详细描述了手机游戏的实现中重要代码的编写 关键词 Java 语言 技能模型 技能设计 手机游戏 西南交通大学本科毕业设计 论文 第 VI 页 Abstract With the development of mobile phones that mobile phone users begin to get used to enjoy some games on the mobile phone In mobile phone games the most valuable and the most people like of the game type is role playing game A good role playing game their skills and design is extremely important In order to develop a group of the skills in mobile games developers need to abstract out skills made a general model of skills to facilitate the future adding of skills in the game This paper describes a role playing game skill development the skills of the game are based on an abstract model of design skills has good portability the program using the Java language Designed on development of Netbeans WTK2 5 2 and other tools to complete a role playing game skills design and development Development of the skills involved that the first step is data conditions and then write an abstract model of skills to make a common model for all skills after the coding process coding the game after the end of the feasibility of testing the game packaging role playing game skills to the design requirements a complete game scenes use skills in the scene of fight The development of mobile Java skills role playing game has good scalability and portability In the first section of this paper it gives the background of the subject and the use of the programming language introduced In the second chapter introduces J2me mobile game development framework and advantages Then in the third chapter introduces the development environment set up describes use of development tools In chapter four demand functions of the system under design and some event handling Chapter five describes in detail of the implementation of mobile phone games key code writing KeyKey wordswords java language skills model skills design mobile phone games 西南交通大学本科毕业设计 论文 第 VII 页 目 录 第 1 章 绪论 1 1 1 课题研究背景 1 1 2 J2ME 游戏技术 2 1 3 Java 的特点以及优势 2 1 4 本章小结 3 第 2 章 J2ME 技术基础 4 2 1 J2ME 的概念 4 2 2 J2ME 简介及发展 4 2 2 1 J2ME 架构 6 2 2 2 JVM 虚拟机 简介 6 2 2 3 MIDP 移动信息设备简表 7 2 2 4 MIDP2 0 7 2 3 手机游戏的介绍和发展 8 2 3 1 手机游戏编程环境的限制 8 2 3 2 J2ME 的开发优势 9 2 4 本章小结 11 第 3 章 开发环境及相关技术 12 3 1 开发环境 12 3 2 Java 语言特点 12 3 3 关于 NetBeans 12 3 4 关于 Wireless Tool Kit 13 3 5 本章小结 14 第 4 章 游戏功能设计 15 4 1 MIDP 中的游戏 API 15 4 2 游戏中的技能及相关 16 4 3 主要类构成 17 4 3 1 Hero Role 类实现 17 4 3 2 Skilldata 类实现 19 4 3 3 RPGameCanvas 类实现 19 4 4 游戏中的事件处理 21 4 4 1 key Pressed 方法 21 4 4 2 key Released 方法 22 西南交通大学本科毕业设计 论文 第 VIII 页 4 5 本章小结 22 第 5 章 游戏详细设计和实现 23 5 1 游戏的启动和菜单 23 5 2 游戏的初始 24 5 3 游戏的地图加载 25 5 4 战斗场景及技能实现 27 5 5 具体技能设计和实现 30 5 5 英雄阵亡和怪物死亡后的操作改变 34 5 6 玩家英雄单位重复选择技能 36 5 7 玩家战斗获胜或者失败 38 5 8 本章小结 40 结论 41 致谢 43 参考文献 44 西南交通大学本科毕业设计 论文 第 1 页 第 1 章 绪论 1 1 课题研究背景 手机是人们日常生活中所用的非常频繁的通信工具 虽然现在其费用比有线电 话高 但是其随时随地的沟通优势 使人们摆脱了线路的束缚 目前中国的一些大 城市几乎人手一部或几部手机 正是由于手机的高普及率 使得无线移动商务才得 以迅速普及和发展 而对于手机游戏来说 它的盈利主要是由于它们的涉及面很广 手机已经与现 代生活方式紧紧地结合在一起 他们是最普遍携带的个人用品中仅次于钥匙和钱包 的东西 传统的台式机游戏将目标锁定在低级趣味的人和青少年身上 而手机游戏 则每个人都可以访问的到 随时 随地 尽管每个手机游戏都不贵 但是巨大的 使用量 如 每人每星期一个新游戏 将使得这个市场商机无限 但是 对于开发 者来说 将控制台游戏迁移到手机游戏工程很大 因为他们所面向的对象 生活方 式和分布式模型都有着极大的区别 一个成功的手机游戏大多具有以下特征 1 易于学习 既然手机游戏面向的是普通消费者而不是计算机专家 那么他们 不可能深入的学习游戏技巧 消费者不会花几个小时去研究一个 3 元的手 动操作的游戏 保持游戏的简单是最基本的要求 2 可中断性 多任务处理是手机生活方式的基本特征 一个好的手机游戏应该 提供短时间的娱乐功能 并且允许用户在游戏和工作模式之间顺利切换 3 基于订阅 手机游戏的盈利成功取决于他们巨大的使用量 一开始开发和设 计每个游戏都是昂贵的 如果一个手机游戏开发者要赢利的话 重要的是 同一个游戏引擎 多个标题 基本的故事情节类似 基于订阅的游戏是不 断产生收入的最好方法 4 丰富的社会交互 不管一个游戏设计得多好 只要玩家找到了它的根本模式 或者玩完了所有的游戏路径很快就会厌烦这个游戏 对于一个基于订阅的 游戏 重要的是与别的玩家合作以增强所玩游戏的智力和随机性 5 利用手机技术的优点 巨额的手机技术研发费用都花在提高设备和网络的可 用性和可靠性上面 因此 手机设备硬件和网络协议与桌面 控制台世界 如全球定位系统 GPS 扩展 条形码扫描仪 和短消息服务 SMS 多媒 体信息服务 MMS 通讯 有着非常大的差别 好的手机游戏应该利用那些 更新的设备特征和网络基础设备的优点 6 无违法内容 既然所有年龄 性别的人群都玩手机游戏并且常常在公共 工作 西南交通大学本科毕业设计 论文 第 2 页 场合 就应该避免明显的暴力或者色情内容 对于手机游戏来说 传统的手机存在以下弊端 1 传统手机出厂时均由硬件厂商固化程序 程序不能增加 删除 有了错误也 不能更新 修改 若要增加新功能必须另换一部手机 2 传统手机访问互联网是通过 WAP Wireless Application Protocal 所有网络 资源必须接通网络才能在线访问 非常耗时 费用亦很高 1 2 J2ME 游戏技术 Java 2 Micro Edition J2ME 是一种针对移动电话和 PDA 这样的小型设备的 Java 语言 大部分的手机厂商都迫切希望 Java 手机推广应用 上千万的 Java 手机已经到 了消费者的手中 J2ME 与台式机中的 Java 相比还是有很大的限制 但是它已经极 大的提高了移动电话支持游戏的能力 它有比 SMS 或 WAP 更好控制的界面 允许 使用子图形动画 并且可以通过无线网络连接到远程服务器 支持 Java 的手机的普 及 所以它成为目前最好的移动游戏开发环境 在这里本篇论文将详细研究 J2ME 游戏的开发 J2ME 不是手机上配置的唯一的解释语言 但是它是一个许多厂商支 持的行业标准 一些专用的解释语言也在某些区域有上佳的表现 如北美的 Qualcomm 的 BREW Binary Runtime Environment for Wireless 用于无线应用程序的 二进制运行环境 和一些韩国移动运营商支持的名为 GVM 的标准 在这篇论文中将 要重点讨论使用 J2ME 开发移动游戏 1 3 Java 的特点以及优势 针对传统手机游戏的缺点 Java 技术在无线应用方面的优势非常明显 所以在 本论文中采用 J2ME 作为开发技术 Java 技术已经从一种最初用来编写与硬件无关的嵌入式系统的编程语言变成了 一种与厂商无关 与硬件无关的健壮的服务器端技术 它使整个企业界可以全面发 掘以 Web 为核心的应用程序的巨大潜力 随着 Java 技术的不断更新提高 J2ME 技 术的出现 使得手机游戏越来越成为人们关注的焦点 J2ME 技术目前最流行的就 是在制作手机游戏方面 Java 手机的出现使得这一技术更有它的用武之地 发挥着 他灵活 轻便 快捷的作用 对于手机游戏开发来说 J2ME 技术的优势主要表现 在 1 应用程序可按需下载 而不是购买由硬件商提供的套件 可升级空间大 2 Java 技术提供了一个类库 它使的应用开发商可以创建更为直觉 丰富的用 户界面 GUI 西南交通大学本科毕业设计 论文 第 3 页 3 Java 技术使网络带宽的应用更为有效 因为应用程序可以下载到器件上 并 在本地运行 仅仅是在连接到服务器时才会占用网络带宽 而且 在软件环境飞速发展的同时 J2ME 平台的硬件环境和市场同样越来越 成熟 Java 手机的数量在成倍增长 硬件中加快集成 Java 预计将进一步促进 Java 在 市场中的普及 J2ME 将成为事实上的标准 与此同时移动增值业务的突飞猛进大 大的推动了 J2ME 技术的发展 J2ME 是嵌入式 移动应用平台的王者 Linux 和 WinCE 分列二 三位 Nokia 等厂商力推的 Symbian 平台目前开发者占有率尚未达 到满意水平 考虑到调查项合并了嵌入式设备 例如 PDA 和移动设备 例如智能手 机 Symbian WinCE 系列在移动平台上会是竞争的主要两方 如果厂商能在标准 实现上做得更加规范 则 J2ME 的跨平台特性会发挥得更加淋漓尽致 继续保有王 者地位 从发展趋势上说 MIDP2 0 是趋势 1 4 本章小结 本章节重点介绍了本毕业设计的课题背景 以及课题所用语言 JAVA 和 J2ME 的目前发展水平 简单介绍了 J2ME 的技术背景 以及运用 JAVA 语言进行本毕业 设计游戏开发的优势 西南交通大学本科毕业设计 论文 第 4 页 第第 2 章章 J2ME 技术基础技术基础 2 1 J2ME 的概念 J2ME 的全称是 Java2 Micro Edition J2ME Java2 技术微型版 与 J2SE J2EE 一样都是有美国 SUN 微系统公司提出的 JAVA 技术规范 技术体系结 构如图 2 1 所示 可选包 Java 2 平台企业版 J2EE Java 2 平台企业版 J2EE 可选包 Java Virtual Machine 可选包 可选包个人简表 基础简表MIDP CDCCLDC CVMKVM Java Card Card VM Java2 Platform Micro Edition J2ME 图 2 1 Java 2 技术体系结构 2 2 J2ME 简介及发展 要介绍 J2ME 就必须从 Java 开始 Java 语言的前身是 Oak 当时它的设计目 的是用于洗衣机 电视机顶盒等消费性电子产品 但是一直没有得到多大的发展 随着 Internet 的发展普及 无意中成全了 Java 使它很快成为了 Internet 上广为流传 的编程语言 1998 年 1 月 Sun 实验室启动了一个名为 Spotless 的项目 来研究 Java 技术应 用于那些资源有限的设备上 在项目的初期 Spotless 仅仅是一个项目 但是在 Motorola 等公司的推动下 此项目不久成为了一个商业产品 并由此产生了 Spotless 虚拟机 Virtual Machine 的商业化版本 KVM K Virtual Machine 或者说 KJava Virtual Machine 1999 年 6 月 Sun 正式向 Java 团体推出了 J2ME 并重新划分了 Java 2 的体系 结构 面向企业应用开发的 J2EE Java 2 企业版 Java 2 Enterprise Edition 面向 桌面应用开发的 J2SE Java 2 标准版 Java 2 Standard Edition 面向消费产品和嵌 西南交通大学本科毕业设计 论文 第 5 页 入式设备应用开发的 J2ME Java 2 微型版 Java 2 Micro Edition J2EE J2SE J2ME 三者构成了 Java 的完整架构 至此 Java 已经由单纯的 编程语言发展到一种平台的高度 这三者的结合 可以将从服务器到台式机到移动 设备的应用开发集中到一种技术之下 其中 J2ME 是为了能够开发运行在小型设备 独立设备 互联移动设备 嵌 入式设备上的 JAVA 应用程序而被提出的 J2ME 是建立在一个由概要描述 配置 JAVA 虚拟机和操作系统等部分组成的标准架构之上的 这些内容共同组成了完整 的 J2ME 实时运行环境 它的技术核心是由一个 JAVA 虚拟机 JVM 及一套适 合运行在上述设备环境上的 API 接口构成 J2ME 在 1999 年的 JavaOne 开发人员大会上初次亮相 它的目标是面向智能无 线设备和小型计算设备的开发人员 这些开发人员需要在他们的产品中整合跨平台 的能力 无线设备和小型计算设备的消费者期望这些设备能够有较高的性能 他们 希望小型计算设备有快速的响应时间 与同种设备相兼容 拥有功能完备的应用程 序 消费者希望桌面计算机和笔记本电脑上的软件和功能同样能够运行在移动电话 和个人数字助理上 为了满足他们的需求 开发人员必须重新考虑他们设计计算机系统的方式 开 发人员需要利用商业计算机上现有的前端和后端软件的计算能力 并将这些能力传 递到微型 移动和无线的计算设备上 J2ME 能够以最小的修改来实现这种传递 如果应用程序的设计是可伸缩的 应用程序就可以适应小型计算设备上有限的资源 J2ME 为在小型电子设备上创建性能卓越的网络应用提供了一套完整的解决方 案 能很好的解决软件跨平台的兼容性和安全性的问题 从整个移动通信行业的发展来说 通过手机 PDA 来进行 Internet 的连接一定 会成为一个趋势 国际大公司如 Nokia Motorola 及 Siemens 等所设计的手机内都加 入 Java 程序的支持 为了确保来自不同制造商的不同种类设备间的互操作性 标准 化是必须的 J2ME 当中 被定义了 CDC Connected Device Configuration CLDC Connected Limited Device Configuration 两个 Configuration Configuration 只提供了基本的核心函数库与 JavaVM 然后再依据定义的设备 Profile 在其上附加 GUI 与事件处理 描述等来让 Java 运行 1999 年 Sun 针对低端电子消费产品发布了两个规范 CLDC 有限连接设备配 置 Connected Limited Device Configuration 和 MIDP 移动信息简档 Mobile Information Device Profile CLDC 的目的是为小型 互连 资源有限的设备定义 Java 平台的 最低标准 并没有定位于特定的设备 而 MIDP 是建立在 CLDC 之 上 定义了附加的 API 和移动通信设备所需要的技术 这样一来 就可以当成 西南交通大学本科毕业设计 论文 第 6 页 MIDP 应用程序 MIDlet 来运行了 同时 以 MIDP 为基准所制作出来的应用程 序 也将可以在流通于市面上的移动电话上执行 J2ME 平台被认为是最杰出的手机游戏平台 它为开发者 设备制造商 网络 通信公司和消费者广泛接受 它有一些非常重要的特征对所有组织都有益 因为 J2ME 应用在不同设备上都是便携式的 他们常常可在网络上下载和执行 如果没 有正确的防范 它则为用户和无线通信公司冒着无数个安全的风险 幸运的是 Java 被设计成一种安全的语言 所有字节码应用在执行之前都要校验 JVM 在执行 过程中监督应用的安全性和存储违反问题 MIDP 2 0 运行时间包括一个完全特征化 的 基于域的安全管理员 它在应用的数字签名者鉴别的基础上赋予应用 API 级许 可 2 2 1 J2ME 架构 J2ME 架构的模块化设计使应用程序可以灵活适应小型计算设备的限制 J2ME 架构没有替代小型计算设备的操作系统 相反 J2ME 架构由位于原生操作系统之 上的多层软件组成 这些软件共同称为 连接有限设备配置 Connected Limited Device Configuration CLDC 安装在操作系统之上的 CLDC 形成了小型计算设备的 运行时环境 J2ME 架构由 3 个软件层组成 第一层是包括在内的配置层 这个层次直接与 原生操作系统进行交互 配置层还处理 profile 和 JVM 之间的交互 第二层是 profile 层 由小型计算设备的应用程序编程接口 API 的最小集合组成 第三层是 Mobile Information Device Profile MIDP 层 MIDP 层由用户网络连接 永久存储和 用户界面的 Java API 组成 它还能够访问 CLDC 库和 MIDP 库 2 2 2 JVM 虚拟机 简介 JVM 是专门为微型电子设备与资源受限设备如 手机 寻呼机 移动互联网设 备 家用微电子设备等设计的一种轻便 紧凑的 Java 虚拟机 JVM 可以为微型电子设备提供一个完整的 Java 运行环境 除了一些微型设备所 必需的适当的功能有所不同外 它是由 Java 虚拟机规范定义的真实的 Java 虚拟机 它是专门为那些受资源限制 只有几百 K 字节内存的微型设备设计的 JVM 起初是由 SUN 微系统实验室为一个名叫 Spotless 的项目创建的 它的 目标是为资源受限制的 Palm 是目前较为流行的掌上电脑操作系统 可连接的电子 设备 实现一个 Java 虚拟机 基于上述原因 JVM 具有以下几个特点 1 小 仅具有 40KB 至 80KB 的静态内存 西南交通大学本科毕业设计 论文 第 7 页 2 轻便 精巧 3 模块化并可定制 4 尽可能完全紧凑的完成设计目的 2 2 3 MIDP 移动信息设备简表 MIDP 是专门为互联受限设备配置设计的 它为移动设备提供了一套 API 集合 MIDP 包含用户界面类 持久存储功能与网络功能 它同时也包括一个供用户下载 新应用到终端设备的标准运行环境 运行在 MIDP 下的小应用程序叫做 MIDlet 移动 设备小应用程序 它与 Applet 类似 MIDP 要求平台设备提供一个机制用来存储简 单的数据记录 通过正常的平台事件 比如重新启动和电池更新维护系统的完整性 MIDP 是以 SUN Motorola Nokia 为中心的 MIDPEG 组织 Mobile Information Profile Expert Group 所制订出来使用在 CLDC 上的 Profile 是以能使用 在移动电话 双向对讲机 可无线通信的 PDA 个人数字助理 上面为前提设计出 来的 另外 像日本国内的 NTT DoCoMo J PHONE KDDI 等电信商与移动电话 制造商也都曾参与了 MIDPEG MIDP 是在 CLDC 的功能上附加提供适合目标设备用的 GUI 与事件处理功能 这样一来 就可以当成 MIDP 应用程序 MIDlet 来运行了 MIDP 由于是由多个企业所共同策划出来的开放标准 因此主要的移动电话制 造商也会制造出大量的对应机种 也就是说 以 MIDP 为基准所制作出来的应用程 序 也将可以在流通于市面上的移动电话上执行 另外 MIDP 不仅限于移动电话 也已经被移植到 PDA Palm OS 上 而以 MIDP for Palm OS 的名字来称呼 与 KJava 是不同的 在不使用各电信商的扩展 API 的时候 制作给移动电话用的 MIDlet 也将可以使用在 Palm OS 上面 由于未来 MIDP 也将会搭载到不同设备之上 也由于其兼容性高 只要写过一次程序 就可 以在其他移动电话或是移动电话以外的设备上执行 而这也就是它最大的好处 2 2 4 MIDP2 0 早期流行的无线移动设备大多数支持 MIDP1 0 但是由于 MIDP1 0 面向游戏的 功能很少 开发人员不得不自己编写游戏库 结果导致移动设备上的游戏程序又大 又慢 这也正是目前移动设备上的游戏无论从功能上还是从性能方面都难以得到满 足的原因 最新的 MIDP2 0 规范提供了许多针对游戏的新特性 如全屏模式的支持 透明 PNG 图像的支持 能够使用脱机屏幕缓冲区 碰撞检测 精灵 图层分块 图 层管理 按键状态的直接查询等 这些功能实际上是通过一个新增的 javax microedition lcdui game 包来实现 这个包里定义了用于游戏开发的五个类 西南交通大学本科毕业设计 论文 第 8 页 Gamecanvas Layer TiledLayer Sprite 和 LayerManger 2 3 手机游戏的介绍和发展 移动游戏并不是新鲜的事物 早在 20 世纪 80 年代掌上游戏机就已经风靡一时 其中最成功的是任天堂的游戏小子 Nintendo GameBoy 然而 随着无线通信业的 巨大发展 以及微处理器性能的大幅提升和 Internet 的快速崛起 已经从根本上改变 了通信网络 设备与服务的整体蓝图 手机增值服务成为巨大的商业市场 各种增 值服务 如短信 彩信 KJava 和彩铃等已经得到了市场的认可 而手机游戏正是 众多热门服务中最重要的一部分 手机游戏的广阔市场和巨大发展潜力必将是移动 游戏的下一个黄金时期 手机游戏与大型在线游戏如奇幻游戏 Dungeons Sprite 类 还提供了许多变换 翻转和旋转 模式和碰撞检测方法 能大大简化游戏逻辑的实现 TiledLayer 该类也是 Laye 的子类 TiledLaye 又称 砖块 这个类允许开发者 在不必使用非常大的 Image 对象的情况下创建一个大的图像内容 TiledLaye 有许多 单元格构成 每个单元格能显示由一个单一 Image 对象提供的一组贴图中的某一个 贴图 单元格也能被动画贴图填充 动画贴图的内容能非常迅速地变化 这个功能对 于动画显示非常大的一组单元格非常有用 例如一个充满水的动态区域 通常游戏 中的地图场景都是用这样的技术来设计实现的 javax microedition lcdui game Canvas GameCanvasLayer Graphics Image Object LayerManager SpriteTiledLayer Java langjavax microedition lcdui 图 4 1 MIDP2 0 游戏包和游戏设计常用的类 4 2 游戏中的技能及相关 手机 RPG 游戏中技能的实现 一般是通过战斗场景来实现的 因此 开发人员 在设计时 会设计单独的一幕战斗场景 用来展示游戏中的技能 而技能所设计到的一些因素 包括技能对怪物所照成的伤害 技能的魔法值消 西南交通大学本科毕业设计 论文 第 16 页 耗 技能对于友军的治疗 还有魔法值不足时施放技能的提示等 战斗中玩家拥有英雄单位会涉及到技能先后问题 当第一顺位英雄确认需要施 放的技能后 光标下移指向第二顺位英雄 让玩家进行技能选择 玩家在确认完所 有技能选择后 游戏将自动按照之前玩家所选择的技能进行施放 并由游戏中怪物 施放技能 如此往复 直至怪物死亡或者玩家的英雄死亡结束战斗 进入战斗场景 选择英雄技能 野外遇怪 逃跑 怪物自动攻击 玩家胜利或者玩家阵亡 图 4 2 游戏战斗技能展示流程控制 4 3 主要类构成 在游戏中 主要的一些类构成有 Hero Role Skilldata RPGameMid RPGameCanvas 其中 Hero Role 类继承了 Sprite 类 用来进行游戏中人物和怪物的相关属性的设定和控制 Skilldata 类继承了 Sprite 类 用来进行游戏中人物和怪物的技能相关的设定和控制 RPGameMid 类继 承了 MIDlet 类 用于游戏控制 GameCanvas 类继承了 Canvas 类 进行画面的描 绘与操作 4 3 1 Hero Role 类实现 Hero Role 类继承了 Sprite 类 主要控制 角色类型 角色名字 性别类型 等级 经验 当前生命值 总生命值 魔法值 最大魔法值 攻击力 防御力 角 色相对于屏幕的坐标 人物的步长 移动速人物的步长度 角色方向 角色状态 动作的数量 当前要播放的动作 ID 角色所在的地图的对象等 Sprite 类是一个能显示几个绘图帧 frame 中的其中一帧的基本动态层 这些 帧大小相同并且由一个单独的图片 image 对象提供 Sprite 类可以使许多帧连续 的运动 可以使一个定制的序列以任何方式被放置 另外还可以提供转化于检测方 西南交通大学本科毕业设计 论文 第 17 页 法 下面是 Sprite 代码样例 import Javax microedition lcdui game import Javax microedition lcdui public class Text Layer extends Sprite Image image String string TextLayer Image i super i public void draw Graphics g throws NullPointerException Graphics LEFT 用于渲染Sprite 的原始帧由一个单独的Image 对象提供 此Image 可以是可变 的 也可以是不可变的 如果使用多帧 图像将按照指定的宽度和高度被切割成一 系列相同大小的帧 同一序列的帧可以以不同的排列存储 这取决于游戏开发者是 否方便开发 每一帧都被赋予一个唯一的索引号 左上角的帧被赋予索引号0 余下的帧按照 行的顺序索引号依次递增 索引号从第一行开始 接着是第二行 以此类推 getRawFrameCount 方法返回所有原始帧的总数 Sprite 的帧序列定义了帧以什么样的顺序来显示 缺省的帧序列就是所有可用 帧的顺序排列 因此 帧序列和对应的帧的索引号是一致的 这表示缺省的帧序列 的长度和所有原始帧的总数是相等的 例如 如果一个Sprite 有4 帧 缺省的帧序 列为 0 1 2 3 可以使用setFrameSequence int sequence 来为Sprite 设置帧序列 当调用此方 法时 将会复制sequence 数组 因此 随后对参数sequence 数组进行的任何更改均 不会影响Sprite 的帧序列 传入null 将使Sprite 的帧序列重置为缺省值 开发者必 须在帧序列中手动切换当前帧 可以调用setFrame int prevFrame 或者nextFrame 方 法来完成 注意 这些方法是针对帧序列操作 而不是对帧的索引操作 如果使用 缺省的帧序列 那么帧序列的索引和帧的索引是可互换的 如果愿意 可以为Sprite 定义任意的帧序列 帧序列必须至少包含一个元素 并且每个元素都必须是一个有 效的帧的索引号 通过定义新的帧序列 开发者可以方便地以任意想要的顺序来显 示Sprite 的帧 帧可以重复 忽略 或者以相反的顺序显示 等等 要创建一个静态的 Sprite 可以调用 public Sprite Image image 通过提供的图 西南交通大学本科毕业设计 论文 第 18 页 像创建一个新的 Sprite 如果要创建动态的 Sprite 就必须使用 public Sprite Image image int frameWidth int frameHeight 帧的大小由 frameWidth 和 frameHeight 指定 所有帧的大小必须相等 可以在图像中水平 竖直或以方格形式排列 源图像的宽 度必须是帧宽度的整数倍 高度必须是帧高度的整数倍 如果 image 的宽度或高度 不是 frameWidth 或 frameHeight 的整数倍 将会抛出 IllegalArgumentException 异 常 4 3 2 Skilldata 类实现 此类用于技能抽象接口 把游戏中的所有技能抽象成一个技能模型 然后根据 不同的技能效果添加技能数据 从而控制不同技能的实现和效果 这样做的好处是 能够规范技能 是程序易懂 且方便日后技能的添加 Skilldata 类控制 技能种类 技能等级 使用技能所需要的 HP MP 等级 其中技能伤害公式为 技能实际伤害效果 基础伤害 治疗 防御 效果 技能等 级 角色等级 K 主角隐藏属性 道具效果 注 加入常数 K 是为了能够在一 定范围内控制技能的伤害量 进行调整 下同 角色损耗魔法值计算公式为 技能 消耗的 MP 技能消耗的基础 MP 技能等级 角色等级 K 主角隐藏属性 道具效果 4 3 3 RPGameCanvas 类实现 RPGameCanvas 类继承了 GameCanvas 类 主要用于控制 游戏主角 游戏背 景 战场数据控制 地图数据控制 当前战斗状态 游戏中所用菜单 UI 人物属性 图片 人物头像图片 技能图 战斗场景 英雄碰撞检测用坐标 主角在地图中的 位置 当前战斗状态下的英雄数 当前战斗状态下的怪物数 攻击哪个敌人 怪物 攻击力 英雄攻击力等 每个GameCanvas实例都会有一个为之创建的专用的缓冲区 因为每个 GameCanvas 实例都会有一个唯一的缓冲区 可以从GameCanvas 实例获得其对应 的Graphics 对象 而且 只有对Graphics 对象操作 才会修改缓冲区的内容 外部 资源如其他的MIDlet 或者系统级的通知都不会导致缓冲区内容被修改 该缓冲区在 初始化时被填充为白色 缓冲区大小被设置为GameCanvas 的最大尺度 然而 当 请求填充时 可被填充的区域大小会受限于当前GameCanvas 的尺度 一个存在的 Ticker Command 等等都会影响到GameCanvas的大小 GameCanvas 的当前大小可 以通过调用getWidth 和getHeight 获得 以下代码演示了一个典型的游戏循环的结 构 从后备屏幕缓冲获得Graphics 对象 西南交通大学本科毕业设计 论文 第 19 页 Graphics g getGraphics while true 检查用户输入并更新位置 如果有需要 int keyState getKeyStates if keyState else if keyState 将背景清除成白色 g setColor 0 xFFFFFF g fillRect 0 0 getWidth getHeight 绘制Sprite 精灵 sprite paint g 输出后备缓冲区的内容 flushGraphics 要创建一个新的GameCanvas 实例 只能通过继承并调用父类的构造函数 protected GameCanvas boolean suppressKeyEvents 这将使为GameCanvas 准备的一个新的缓冲区也被创建并在初始化时被填充为 白色 为了在GameCanvas 上绘图 首先要获得Graphics 对象来渲染GameCanvas protected Graphics getGraphics 返回的Graphics 对象将用于渲染属于这个GameCanvas 的后备屏幕缓冲区 off screenbuffer 但是渲染结果不会立刻显示 直到调用flushGraphics 方法 输出缓 冲区的内容也不会改变缓冲区的内容 即输出操作不会清除缓冲区的像素 每次调用这个方法时 都会创建一个新的Graphics 对象 对于每个GameCanvas 实例 获得的多个Graphics 对象都将渲染同一个后备屏幕缓冲区 因此 有必要在 游戏启动前获得并存储Graphics 对象 以便游戏运行时能反复使用 刚创建的Graphics 对象有以下属性 1 渲染目标是这个GameCanvas 的缓冲区 2 渲染区域覆盖整个缓冲区 3 当前颜色是黑色 black 西南交通大学本科毕业设计 论文 第 20 页 4 字体和调用Font getDefaultFont 返回的缺省字体相同 5 绘图模式为SOLID 6 坐标系统的原点定位在缓冲区的左上角 在完成了绘图操作后 可以使用flushGraphics 方法将后备屏幕缓冲区的内容输 出到显示屏上 输出区域的大小与GameCanvas 的大小相同 输出操作不会改变后 备屏幕缓冲区的内容 这个方法会直到输出操作完成后才返回 因此 当这个方法返回时 应用程序 可以立刻对缓冲区进行下一帧的渲染 如果 GameCanvas 当前没有被显示 或者系统忙而不能执行输出请求 这个方 法不做任何事就立刻返回 4 4 游戏中的事件处理 事件可以分为 低层事件 low level event 与高层事件 high level event 低 层事件一般用来处理设备事件 如 按键事件 探针事件 高层事件用来处理应用 中的相关事件 如 命令事件 组件状态变化事件 由于开发手机游戏时设计者主 要用到的是 Key 事件的处理方法 因为移动设备的键盘是传递用户意图的最主要的 输入设备 Key 事件属于低层事件 那么低层事件中用下面的两种方法来处理应用 的 Key 事件 4 4 1 key Pressed 方法 方法 key Pressed 是用来处理键被按下的事件 这个方法没有与其对应的显示的 听众对象 Listener 这些听众对象有系统根据实际对象缺省提供 例如后面提 到的 Canvas 对象就是默认的 key 事件听众对象 它缺省地实现了 Key Listener 接口 简单的一个样例代码 public void keyPressed int keyCode if keyCode 0 输出当前被按下键的键码 System out println keyPressed char keyCode else 西南交通大学本科毕业设计 论文 第 21 页 当按下手机的操作键盘上的按键时 就会触发这 key 事件 系统并会自动调用 keyPressed 方法 并且系统将捕获到的键码传递给该方法 在上面的那段代码中 方法判断了所按的按键值是否大于 0 如果大于 0 输出所按的手机键盘上的实际值 否则执行其他的操作任务 4 4 2 key Released 方法 可以说方法 key Released 与上面提到的 keyPressed 方法是对应的 它是 用来处理手机操作键盘上的按键被释放的事件 这个方法也同样没有与之对应的显 示的听众 这些听众也是由系统根据实际对象提供的 下面是一个样例代码 public void keyReleased int keyCode if keyCode 0 输出当前被释放键的键码 System out println keyReleased char keyCode else 当释放手机操作键盘上被按下的按键时 则会触发这个 key 事件 系统并会自 动交由 keyReleased 方法来处理该事件 同样的上面的这段代码中 该方法判断 了所按的按键值是否大于 0 如果大于 0 则输出所释放的手机键盘上的被按下的按 键的实际键值 否则执行其他的操作任务 4 5 本章小结 本章节介绍本毕业设计的所要求开发的功能 以及在设计初期设想的实现方式 重点介绍了 MIDP 的 API 类 以及要实现游戏技能所涉及到的设计流程 介绍了实 现游戏运行所涉及到的几个大类的具体功能模块 以及手机游戏中需要考虑到的一 些操作涉及的设计思路 西南交通大学本科毕业设计 论文 第 22 页 第第 5 章章 游戏详细设计和实现游戏详细设计和实现 5 1 游戏的启动和菜单 游戏在启动后会加载一张 CP 图 在商用后还会需要加载一张运行商 LOGO 也就是 SP 图 游戏启动后默认为全屏效果 如图 5 1 及 5 2 所示 public RPGameCanvas super true this setFullScreenMode true 设置全屏 this setST GameData ST CP 设置游戏状态 initGameData 初始化游戏 gameThread

温馨提示

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

评论

0/150

提交评论