




已阅读5页,还剩59页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
毕毕业业设设计计说说明明书书 基于基于J2MEJ2ME的手机五子棋游戏的的手机五子棋游戏的 设计与实现设计与实现 专业专业计算机科学与技术 学生姓名学生姓名杨婷婷 班级班级B 计算机 064 学号学号 指导教师指导教师王 榕 完成日期完成日期2010 年 5 月 25 日 盐城工学院本科生毕业设计说明书 2010 基于基于J2MEJ2ME的手机五子棋游戏的设计与实现的手机五子棋游戏的设计与实现 摘 要 J2ME Java 2 Micro Edition 是近年来随着各种不同设备 尤其是移动 通信设备的飞速发展而诞生的一项开发技术 它因其 write once run anywhere 的 Java 特性而提高了开发的效率 随着手机性能的不断提高 手机休 闲娱乐应用将成为 PC 休闲娱乐应用之后又一重要业务增长点 棋类游戏规则单一 比较适合在手机等便携终端推广 由于具有跨平台 易于移植 占用空间小的优势 J2ME 成为移动应用开发平台 的主流 并提供了很多用以支持移动应用软件的开发的 API 现将该技术用于这次 的手机游戏开发 可以实现游戏的快速开发 不但便于查看游戏运行过程中内存的 占用量和程序的每一部分代码消耗了多少处理器时间 而且可以不断地优化代码 使代码具有高度的复用性 可扩展性 可维护性 游戏的开发以 J2ME 为平台 利用 Java 技术 结合 J2ME 的 MIDP 技术 并对于 程序设计思想 重要类 方法等展开讨论 在对弈部分 分析设计走棋算法 选择 合适的方式组织成代码 实现基本的人工智能 过程中使用了 J2ME 中的 CLDC MIDP 软件体系 主要运用了 MID Profile 的特定类的支持 来完成游戏的开发 关键词 J2ME CLDC MIDP 盐城工学院本科生毕业设计说明书 2010 Design and Implementation of Gobang Cell phone Game Based on J2ME Abstract J2ME is a kind of fast developing technology implemented on various devices especially mobile communication equipments It improves the efficiency of the development process because of its write once run anywhere nature The development trend of the entertainment market based on the cell phone is very obvious because the handset performance enhances unceasingly The entertainment market based on the cell phone will to be the new important business growth point follow the PC entertainment market As the rules of a single chess game it is more suitable for mobile phones and other portable terminal extension J2ME has been the preferred platform for development because of its platform independent and compatibility and provides a lot of APIs to support the development of mobile application software The technology for mobile game development can achieve the rapid development of the game It is not only easy to observe the memory consumption and processor consumed time during the operation of the game but also can optimize the code so that the code has a high degree of reusability scalability maintainability The game has designed by J2ME the Java technology and the MIDP technology I studied the procedure thought the important class and the method In the playing chess part I have analyzed the algorithm choosed the appropriate way to organize the code and realized the basic artificial intelligence On the other hand I learned software system of CLDC MIDP and the specific class of the MID Profile to complete the game development Key words J2ME CLDC MIDP 基于 J2ME 的手机五子棋游戏的设计与实现 目目 录录 1 概述 1 1 1 课题研究背景 1 1 2 课题研究意义 2 2 开发技术背景 2 2 1 JAVA 语言概述 2 2 2 J2ME 简介 3 2 3 J2ME 的体系结构 4 2 4 移动信息设备简表 7 2 5 开发平台 8 3 系统分析及总体设计 9 3 1 可行性分析 9 3 2 需求分析 9 3 3 系统概要设计 10 4 系统详细设计 13 4 1 界面设计 13 4 2 走棋算法 27 4 3 胜负判断 29 5 系统测试 30 5 1 测试方案 30 5 2 测试结果 30 6 结 束 语 35 参考文献 36 致 谢 37 附 录 38 附录 1 程序清单 38 附录 1 1 StartGame java 程序清单 38 附录 1 2 Chesses java 程序清单 39 附录 1 3 Chessboard java 程序清单 44 附录 1 4 其它程序清单 49 盐城工学院本科生毕业设计说明书 2010 1 基于基于J2MEJ2ME的手机五子棋游戏的设计与实现的手机五子棋游戏的设计与实现 1 概述 1 1 课题研究背景 手机游戏的实现方式主要包括嵌入式游戏 浏览器游戏 短消息服务游戏 J2ME 和其它的解释语言 Java 2 Micro Edition 是一种针对移动电话和 PDA 这样 的小型设备的 Java 语言 J2ME 与台式机中的 Java 相比还是有一定的限制 但是它 已经极大的提高了移动电话支持游戏的能力 并且具备一定的优势 庞大的潜在用 户群 便携性 开发门槛较低 手机是现代生活方式的产物 如同因特网的普及导致网络游戏的高速发展一样 手机的普及 对满足不同功能的手机软件的需求也就越来越迫切 这就需要比较好 的手机软件开发平台 此时具有平台无关性优点的 J2ME 开发平台也就应运而生 J2ME 是 Sun 公司为消费电子和嵌入式设备软件的需要而开发的应用程序接口和技术 规范 J2ME 提供了由多家大型的移动设备厂商一起设计和提出的工业标准简表 简 称 MIDP 的开发接口 由于这个 MIDP 简表不是某个特定的商家所拥有的 所以具 有一定的通用性 因此由 J2ME 开发的软件对多家大型移动设备厂商生产的支持 MIDP 简表的手机都适用 比如 Nokia Motorola 和三星等多家手机厂商推出的多款 支持 J2ME 的手机 与传统的主流的 PC 游戏相比 手机游戏的价值在于打发一些无聊的时间 作 为一个移动的娱乐终端 手机游戏施展身手的机会永远可能是在地铁站 公交车或 者是洗手间这些地方 也许在庞大的游戏行业里 手机游戏将永远扮演着一个边缘 者的角色 因为谁也不能指望一个人在家的时候用手机玩游戏或者看电影 但是手 机游戏的市场是巨大的 即便是只有十分之一的用户来购买游戏 那也将是不可忽 视的商业机遇 随着移动开发技术的不断升级和终端设备成本的下降 近年来 手机在普通消 费人群中得到了极大的普及 凭借其便于携带 沟通迅捷 功能多样 私密性强等 独有优势 手机已经成为普通民众不可替代的随身工具 其益智 趣味和休闲的特 点迎合了消费者的娱乐需要 手机游戏的开发推广已经成为手机生产商和运营商重 要的业务增长点 游戏软件产业价值不断提升 手机游戏是手机的一种高附加值操 作软件 游戏编程是手机软件编程的重要组成 同时也持续推动手机软件技术升级 进步 手机游戏按手机平台分类 主要有 J2ME Brew UniJa 等 其中 J2ME 手机 开发平台使用最为广泛 作为 SUN 公司针对微型嵌入式消费电子产品开发的编程系 统 J2ME 技术是当前手机软件开发的主流平台 各大手机生产厂商目前的主流产品 绝大都使用 J2ME 技术 基于 J2ME 技术开发手机软件可以实现手机功能的多样化与 专业化 极大的满足了人们对手机要求更高的需求 基于 J2ME 的手机五子棋游戏的设计与实现 2 1 2 课题研究意义 本设计基于 J2ME 技术 开发一款五子棋游戏软件 可以供人们闲暇时间随时 随地娱乐 提高棋艺 同时五子棋游戏程序的开发实现这个课题 正好提供给我这 样一个研究的机会 通过对人工智能中博弈方面的研究 实现简单的人机对弈设计 通过对该课题的研究与实践 首先 进一步熟悉面向对象语言 加深对 J2ME 层次结构的了解 通过 NetBeans 集成开发环境创建软件 最终形成一个具备基本 功能的手机五子棋游戏 可应用于便携式设备 适合于棋类爱好者 其次 了解手 机游戏开发的特点和现状 并且对人工智能中比较容易实现的人机博弈进行学习 更深刻地理解人工智能这门边缘学科的实用性 2 开发技术背景 2 1 JAVA 语言概述 Java 的出现是源于对独立于平台语言的需要 希望这种编程语言能编写出嵌入 各种家用电器等设备的芯片上 且易于维护的程序 人们发现当时的编程语言都有 一个共同的缺点 就是针对 CPU 芯片进行编译 这样 一旦电器设备更换了芯片就 不能保证程序正确运行 九零年 Sun 公司成立了开发小组 开始致力于开发一种可 移植的 跨平台的编程语言 该语言能生成正确运行于各种操作系统 各种芯片上 的代码 Java 的出现标志着真正的分布式系统的到来 Java 是一种跨平台的 面向对象的 分布式的 解释的 安全的 结构的 可 移植的 性能很优异的多线程的动态语言 Java 的特点 平台无关性 平台无关性是指 Java 能运行于不同的平台 Java 引进虚拟机原 理 并运行于虚拟机 实现不同平台的 Java 接口之间 使用 Java 编写的程序能在 世界范围内共享 Java 的数据类型与机器无关 Java 虚拟机 Java Virtual Machine 是建立在硬件和操作系统之上 实现 Java 二进制代码的解释执行功能 提供不同平台的接口的 安全性 Java 的编程类似 C 学习过 C 的读者将很快掌握 Java 的精髓 Java 舍弃了 C 的指针对存储器地址的直接操作 程序运行时 内存由操作系统分 配 这样可以避免病毒通过指针侵入系统 Java 对程序提供了安全管理器 防止程 序的非法访问 面向对象 Java 吸取了 C 面向对象的概念 将数据封装于类中 利用类的优 点 实现了程序的简洁性和便于维护性 类的封装性 继承性等有关对象的特性 使程序代码只需一次编译 然后通过上述特性反复利用 程序员只需把主要精力用 在类和接口的设计和应用上 Java 提供了众多的一般对象的类 通过继承即可使用 父类的方法 在 Java 中 类的继承关系是单一的非多重的 一个子类只有一个父 类 子类的父类又有一个父类 Java 提供的 Object 类及其子类的继承关系如同一 盐城工学院本科生毕业设计说明书 2010 3 棵倒立的树形 根类为 Object 类 Object 类功能强大 经常会使用到它及其它派 生的子类 分布式 Java 建立在扩展 TCP IP 网络平台上 库函数提供了用 HTTP 和 FTP 协 议传送和接受信息的方法 这使得程序员使用网络上的文件和使用本机文件一样容 易 健壮性 Java 致力于检查程序在编译和运行时的错误 类型检查帮助检查出许 多开发早期出现的错误 Java 自己操纵内存减少了内存出错的可能性 Java 还实 现了真数组 避免了覆盖数据的可能 这些功能特征大大提高了开发 Java 应用程 序的周期 并且 Java 还提供了 Null 指针检测 数组边界检测 异常出口 Byte code 校验等功能 2 2 J2ME 简介 J2ME是SUN公司针对嵌入式 消费类电子产品推出的开发平台 与J2SE和J2EE 共同组成Java技术的三个重要的分支 J2ME实际上是一系列规范的集合 由JCP组 织制定相关的Java Specification Request JSR 并发布 各个厂商会按照规范 在自己的产品上进行实现 但是必须要通过TCK测试 这样确保兼容性 J2ME是 JAVA的三大分支之一 专门用于开发基于消费性电子产品的应用 J2ME支持个人手 持移动设备 如手机 PDA等 手机用户可以通过支持JAVA功能的终端 使用多种全 新图形化 动态化和个性化的移动增值服务 J2ME提高了移动电话支持游戏的能力 比SMS或WAP更容易控制和交互的界面 并且可以通过无线网络连接到远程的服务器 随着JAVA手机的普及 J2ME成为目前最流行的移动游戏开发环境 目前手机访问Internet只能访问WML网页 而不是主流的HTML网页 也不能显 示复杂的图形格式 能提供的功能很有限 并且 因为现有的解决方案不够智能化 又不能访问本地存储区 如果进行在线交易会增加服务器负荷 使服务器的反应速 度变慢 使无线Internet的应用受到了很大限制 J2ME的出现则使上述问题迎刃而 解 因为J2ME是基于Java语言的 所以它天生就具有以下优点 A 动态内容传输 新的应用 服务和内容可以通过不同类型的网络动态下载 B 安全 类文件校验 明确定义的应用程序编程接口和安全组件确保了第三方应用程序 的行为是可靠的 不会对设备或者网络造成损害 C 交叉平台的兼容性 标准化语言组件和库意味着由于支持配置和描述所带来的约束使应用和内容可 以在不同设备之间灵活地传输 D 离线获取 不用激活网络连接 应用就可以被使用 这种特点降低了传输费用 减轻了可 能的网络故障带来的影响 E 一种功能强大的现代面向对象的编程语言 基于 J2ME 的手机五子棋游戏的设计与实现 4 Java 相对于当前用于无线软件开发的编程语言和工具来说具有更加完善的抽象 机制和更高级的程序构造 这使得应用开发更加有效 这些特性使第三方软件开发 商可以很容易地介入应用程序的开发 并且可以很方便地将应用程序安装到手机上 开发周期也大大缩短 而且还能支持应用程序的动态下载和升级 J2ME 应用程序除 了能够更好地完善手机上已有的应用外 还进一步增加了字典 图书 游戏 定 时提醒等新的应用 并能访问电子邮件 即时消息 股票和电子地图等信息 J2ME 程序设计的几个原则 第一 使用面向对象编程 虽然使用面向过程编程 可以减小文件的尺寸 但是为了以后维护的方便和利于扩展 还是要使用面向对象 编程 第二 使用 MVC 模式 将模型 界面和控制分离 第三 自动存储用户设定 使用 RMS 来存储用户的信息 这样不仅可以减少用户的输入 而且对用户友好 很 多程序做了自动登陆等 第四 一些系统设置允许用户关闭 如背景音乐 背景灯 显示等 第五 将低级用户界面的绘制动作放在一个独立的线程里面去 第六 在 需要大量时间才能完成的工作时 给用户一个等待界面 2 3 J2ME 的体系结构 Java 2 技术是一系列产品的集合 Java 2 技术体系结构如图 2 1 所示 图 2 1 Java 2 技术体系结构 其中 J2ME为运行在嵌入式消费类电子产品的设备 如移动电话 PDA 游戏 终端之上的应用程序提供了一个健壮的 灵活的环境 与J2SE J2EE和JavaCard一 样 J2ME同样包含了一个小型的虚拟机和一系列的Java API 除此之外 J2ME还提 供了灵活的图形用户界面 健壮的安全模型 广泛的联网协议支持 盐城工学院本科生毕业设计说明书 2010 5 J2ME 是一种通过许多部件和规范的技术 这众多的部件和规范帮助 J2ME 来满 足这众多的消费产品的不同的需要 和所有的爪哇程式语言技术一样 在它的核心 属于一种虚拟机 就像使用所有 Java 技术一样 J2ME 的核心也在一种虚拟机中 最初 用于 J2ME 应用程序虚拟机的被称作 Kilobyte virtual machine 或简称 KVM 就像它名称的含义 KVM 比较小 通常只有 128K 或更少 这比起通常了解和 使用的 Java 2 标准版 Java 虚拟机 JVM 的 32MB 来说就小得多了 为了使 J2ME 程 序广泛适用于各类嵌入式平台 J2ME 采用了模块化的结构 底层是宿主机的操作系 统 内部则分为三层 Java Virtual Machine 虚拟机层 Configuration 配置 层 Profile 简表层 J2ME 中有两类虚拟机 CVM C 虚拟机 与 KVM K 虚拟机 CVM 的功能比 KVM 更为强大 其体系结构如图 2 2 所示 图 2 2 体系结构框图 Java 虚拟机 JVM 层 这一层是针对设备本地操作系统定制的 Java 虚拟机 的实现 支持特定的 J2ME 配置 就像使用所有 Java 技术一样 J2ME 的核心也在一 种虚拟机中 配置 Configuration 层 面对的是大量各种不同的小型嵌入式设备 它们 在外观和功能上均各不相同 J2ME 将这些设备进行分类 将一些共性提取出来形成 适合于某个范畴中设备可用的规范 称为 配置 读者也可以将配置理解成为对 硬件的描述 所以通过定义配置的方法就能够清楚地描述硬件功能 对大量软硬件特性不同的嵌入式设备 根据其外观和性能特点进行分类 提取 其中共性形成的一套规范称之为配置 配置在 J2ME 的体系结构中起着承上启下的 作用 定义了针对存储空间 电源配置 网络连接等硬件功能和特性包括 规定了 所支持的 Java 编程语言特性 规定了所支持的 Java 虚拟机特性 规定了所支持的 基本 Java 类库及其 API 函数 到目前为止 通过 Java 规范定义的只有两种配置 连接设备配置 CDC 和连 接受限设备配置 CLDC CLDC 和 CDC 的大部分功能都来源于 J2SE 因为 CDC 与 CLDC 针对设备的 CPU 处理能力和内存大小不同 所以它们使用的虚拟机和核心类库 也不相同 CDC 的核心类库比 CLDC 的要大 提供的功能也更强 CLDC CDC 和 J2SE 之间的关系如图 2 3 所示 Optional Packages Profiles Configuration Host Operating Syste Java Virtual Machines 基于 J2ME 的手机五子棋游戏的设计与实现 6 图 2 3 CLDC CDC 和 J2SE 的关系图 连接设备配置 Connected Device Configuration CDC 为处理能力较强 内存空间更大 联网能力更出色且电源稳定的设备设计 CDC 的目标设备包括主要 包括电视机顶盒 车载娱乐系统 高端 PDA 等 它们通常具备 32 位或 64 位的 CPU 2MB 以上可以用于 Java 平台实现和运行相关应用程序的内存空间 连接受限 设备配置 Connected Limited Device Configuration CLDC 为具有间断性联 网能力 较慢的处理器 有限内存 没有稳定的电源供应的设备设计 CLDC 的目标 设备主要包括移动电话 双向呼叫器和入门级的 PDA 等 它们通常具有 16 位或 32 位的 CPU 配置 128KB 512KB 的内存可用于 Java 平台实现和运行相关应用程序 CLCD 主要面向 J2ME 开发平台 由两个部分组成 为应用程序提供的最小 Java 语言 类库以及适合在资源受限设备上运行的 Java 虚拟机 KVM 简表 Profiles 层 简表层定义了特定系列设备上可用的应用程序编程接口 API 的最小集 简表在一个特定的配置上面实现 应用程序是针对特定的简表 编写的 因此可以移植到支持该简表的任何设备上 另外 一个设备可以同时支持 多个简表 用户和开发人员看到最多的就是这一层 Java 虚拟机是 J2ME 技术的核心 但是配置和简表提供特殊环境的类应用程序 接口 配置是用于一组通用设备的最小的 Java 平台 而简表则为具体的设备家族 或特别的应用程序提供更具体的功能 每个配置和简表处理一般或具体的消费产品 配置和简表规范是由多种多样的设备生产商和用户共同开发并建立的 简化地举例概括说明 假设如果想为小型信息家电编写 Java 应用程序的话 需要两个前提 一个配置和至少一个简表 现在 一般是配置捆绑了虚拟机和一套 盐城工学院本科生毕业设计说明书 2010 7 针对各自的平台所能够用的横向分组设备的 Java 类库 另外至少需要一个简表来 为平台提供附加的 Java 类 这个简表通常会为各自的相应设备提供用户界面 输 入和数据库类 有了这两个前提 就有了可以使用 Java 为不同的设备编写应用程 序的基本的 J2ME 环境 2 4 移动信息设备简表 移动信息设备简表 MIDP 为移动电话和入门级PDA设计 为移动应用程序提供 了所需的全部核心功能 包括应用程序模型 用户界面 持久性数据存储 联网能 力及应用程序管理功能 目前应用非常广泛的MIDlet就是在MIDP中定义的 CLDC与 MIDP组成了完备的Java运行环境大大提升了手持移动智能设备的功能 并且最小化 了设备内存和电源消耗 MIDP 框架如图 2 4 所示 图 2 4 MIDP 框架图 MIDP提供核心应用程序功能 包括用户界面 网络连接 本地数据存储和应用 程序生命周期管理 MIDlet生命周期流程图如图2 5所示 MIDP中含有下列API包 A javax microedition lcdui 用户界面 UI API 它为MIDP应用提供了一整 套实现用户界面的功能特性 B javax microediton rms 移动信息设备描述提供了一种让MIDlets持久性 储存并在以后可以取回数据的机制 C javax microedition midlet 这个MIDlet包明确定义了MIDP应用 也定义 了和应用环境之间的交互 D javax microedition io 移动信息设备还描述包括基于有限连接设备配置 基于 J2ME 的手机五子棋游戏的设计与实现 8 GenericConnection框架的网络支持 图 2 5 MIDlet 生命周期流程图 2 5 开发平台 随着手机软件开发的发展 市场上同时并存许多手机游戏开发平台 目前的手 机访问Internet只能通过WAP Wireless Application Protocol 方式 而且只能访 问WML Wireless Markup Language 网页 而不是主流的HTML网页 也不能显示复 杂的图形格式 此外 WAP采用的Brower Serve方式访问Internet 能提供的功能 很有限 并且因为现有的WAP解决方案不够智能化 又不能访问本地存储区 如果 进行在线交易会增加服务器负荷 使服务器的反应速度变慢 使无线Internet的应 用受到了很大限制 J2ME的出现恰好有效的解决了以上问题 其Java语言的特性 使其具有以下优点 a 动态内容传输 新的应用 服务和内容可以通过不同类型的网络动态下载 b 安全 类文件校验 明确定义的应用程序编程接口和安全组件确保了第二方 应用程序的行为是可靠的 不会对设备或者网络造成损害 c 交叉平台的兼容性 标准化语言组件和库意味着由于支持J2ME配置和描述所 带来的约束使应用和内容可以在不同设备之间灵活地传输 d 离线获取 不用激活网络连接 应用就可以被使用 这种特点降低了传输费 用 减轻了可能的网络故障带来的影响 e 现代的面向对象思想 Java相对当前用于无线软件开发的编程语言和工具来 说具有更加完善的抽象机制和更高级的程序构造 这使得应用开发更加有效 f 巨大的开发者团队 这些特性使第二方软件开发商可以很容易地介入应用程序的开发 并且可以很 方便地将应用程序安装到手机上 开发周期大大缩短 而且还能支持应用程序的动 盐城工学院本科生毕业设计说明书 2010 9 态下载和升级 J2ME定义和标准化了一种可移植的无线应用开发环境 主要是针对 第二方应用开发商 将设备软件开发向第二方开放 这个环境可以灵活地附加到设 备制造商开发的已经存在的软件和硬件之上 并且不会对已经存在的系统软件造成 影响 这种嵌入式思想也极大地推动了J2ME的发展壮大 本设计主要是在 Netbeans IDE 开发环境下进行开发 测试与调试 基于 J2ME 平台 它将 Java 语言的与平台无关的特性移植到小型电子设备上 允许移动无线 设备之间共享应用程序 NetBeans 是一套完全以 Java 撰写而成 并且开放原始码 的开发工具 Java Studio Micro Edition 大致上是把 NetBeans IDE 和 J2ME Wireless Toolkit 结合在一起的产品 可以方便 J2ME 应用程序的开发者更容易追 踪问题与除错 四种模拟器种类 如表 2 1 所示 表 2 1 模拟器版本 模拟器名称 说 明 DefaultColorPhone 普通彩屏电话 DefaultGrayPhone 普通灰屏电话 MediaControlSkin 有音频和视频控制的普通电话 QwertyDevice 有 Qwerty 样式键盘的掌上设备 3 系统分析及总体设计 3 1 可行性分析 3 1 13 1 1 技术可行性技术可行性 五子棋是传统的对弈游戏 历史悠久 规则单一 手机游戏的实现方式主要包 括嵌入式游戏 浏览器游戏 短消息服务游戏 J2ME 和其它的解释语言 Java 2 Micro Edition 是一种针对移动电话和 PDA 这样的小型设备的 Java 语言 虽然它与 台式机中的 Java 相比还是有一定的限制 但是已经极大的提高了移动电话支持游 戏的能力 在 NetBeans 环境中编写并在模拟器中运行简单明了 3 1 23 1 2 操作可行性操作可行性 本游戏开发后可导入手机操作 供个人平常娱乐所用 完全使用手机键盘操作 操作简单 所以在这方面是完全可行的 3 2 需求分析 3 2 13 2 1 系统的性能需求系统的性能需求 首先 手机游戏最大的问题在于每一款手机拥有自己的屏幕大小和特定的 API 及性能 游戏开发过程中 要考虑到游戏程序的设计要能合乎大多数手机的应用 J2ME 提出的一系列标准使得使用 J2ME 开发的游戏可以在配备 J2ME 的任何厂家的移 基于 J2ME 的手机五子棋游戏的设计与实现 10 动设备上运行 软件最好操作简单容易 受手机屏幕大小和显示的影响 手机键盘 的不方便 游戏需要设计得容易操作 其次 软件具有人工智能算法原理要简单 并且运行快速 对于人机游戏 不 需要网络连接 游戏处理不会有太长的等待时间 游戏是需要快速反应的 手机处 理器的频率直接要求我们需要使用简单实用的智能算法 另外 所制作的软件在结构上应具有很好的可扩展性 便于以后的功能扩展 3 2 23 2 2 系统的功能需求系统的功能需求 A 游戏内容 此款游戏主题是五子棋对弈 无 禁手 的规则基本是人人皆知 相同颜色的 棋子 五子一线为胜 B 游戏方式 区别于一般的生活中的人与人的对弈 用在手机上为人机对弈 在手机屏幕上 构造一个游戏棋盘 并且设计黑 白棋子 利用人工智能的相关知识实现对弈 C 游戏对象 五子棋手机游戏是大众游戏 游戏者只要具备一般的操作知识就可以进入游戏 对玩游戏者并没有什么特殊要求 D 游戏目标 此款手机游戏为棋类游戏 就是为了让人们闲暇时间休闲 锻炼棋艺 游戏设 计尽可能地模拟现实生活中的场景 a 游戏开始界面 玩家可使用 开始 软键进入游戏 b 棋子选择功能 玩家可选择走棋先后顺序 黑先白后 c 棋盘界面 对弈界面 使用上 下 左 右键来移动落子点位 使用确定 按钮来落子 相应条件下可实现悔棋 暂停 重新开始游戏功能 d 胜负判断 涉及人工智能 用以判断人与机器的输赢状况 游戏无 禁手 五子首先连成一线则为胜 3 3 系统概要设计 3 3 13 3 1 模块划分模块划分 在完成了需求分析后 需要对此游戏进行总体的规划 模块的划分 基本的流 程设计 在总体规划期间相对要考虑到游戏的扩展性 因为在最初设计游戏的时候 不可能面面俱到 而且随着技术的发展 也需要游戏具有很好的扩充性 此次系统设计的主要模块分为 欢迎模块 规则说明模块 对弈模块 胜负判 断模块 各主要模块的功能描述如下 欢迎模块 这部分是游戏出现的第一个界面 主要是为了说明已经进入五子棋 游戏系统 规则说明模块 此模块主要是游戏者的选择界面 提供的选择项有游戏说明 开始游戏和退出游戏 对弈模块 该部分主要是进行人机对弈的棋盘界面 该模块中包含悔棋 暂停 盐城工学院本科生毕业设计说明书 2010 11 游戏 放弃本局这些功能 胜负判断模块 这部分即是对每次棋局结果的判断 是人赢了或者是机器获胜 系统主要功能模块如图 3 1 所示 图 3 1 系统功能模块图 3 3 23 3 2 系统流程系统流程 明确了主要模块功能后 就需要对此游戏软件基本流程有一个总体规划 本款 手机游戏软件基本流程图如图3 2所示 游戏规则界面 棋子类型选择 选择黑子 玩家先行 选择白子 机器先行 棋盘对弈界面 结果判断界面 开始游戏 退出游戏 落 子 走 棋 实 现 悔 棋 暂 停 恢 复 游 戏 放 弃 本 局 基于 J2ME 的手机五子棋游戏 欢 迎 模 块 胜 负 判 断 模 块 规 则 说 明 模 块 对弈模块 基于 J2ME 的手机五子棋游戏的设计与实现 12 图 3 2 系统基本流程图 3 3 33 3 3 系统用例图系统用例图 游戏设计用例图如图 3 3 所示 图 3 3 系统用例图 3 3 43 3 4 主要类的介绍主要类的介绍 J2ME 是面向对象的程序设计语言 类是其设计的核心 程序总体设计阶段首 要任务就是设计好相应的类 只要类设计好了可以让程序一目了然 在这款游戏中 总共是分为了八个类 其实很多类都是相对类似的 首要的类是 MIDlet 类的子类 Wuziqi 它是整个程序的框架 程序的运行必须从它开始 其次根据前面设计的功 能模块的划分 相应的要设计各个子类 如游戏欢迎界面 游戏说明界面 棋盘设 计界面 棋子设计 对弈界面 人工智能的实现界面等 另外的 J2ME 技术主要就 是在屏幕绘制的基础上利用命令监听实现各个功能 主要类的作用说明 a Wuziqi1 java 该 java 文件是设计 MIDlet 程序的基本框架 该生命周期继承了 javax microedition midlet MIdlet 抽象类 程序从该类开始执行 b StartGame java 该文件生成的类显示开始游戏入口以及游戏说明 c Chessboard java 该文件生成的类用来创建棋盘对象 在画布上绘制棋盘 另外 获得棋盘上棋 子信息 将手机上的软键转化为游戏键进行走棋控制 棋盘可进行悔棋 暂停 放 弃游戏 d Chesses java 该文件生成的类负责创建棋子对象 棋子对象可以获取本身的颜色外观 选择棋子 人机对弈 落子走棋 悔棋 暂停游戏 放弃本局 玩家 盐城工学院本科生毕业设计说明书 2010 13 e Point java 该文件生成的类用来创建棋盘的棋点对象 可以判断该点上是否有棋子 指定 当前点上的棋子 获取当前点上的棋子 移动当前点上的棋子 f AI java 该文件类主要是实现走棋算法以及结局判断 4 系统详细设计 4 1 界面设计 该部分主要说明手机游戏画面显示 包括一开始项目的创建 画面的低级绘制 图像的获取 UI 组件的显示及如何进行游戏按键处理 本程序的设计主要使用了 MIDP 所提供的 javax microedition lcdui 包中的类 来实现手机的用户界面 各个类如表 4 1 所示 表4 1 javax microedition lcdui包 类描 述 接口 Choice提供一个常规的接口来管理选中的项目 CommandListener允许创建一个高级的UI命令消息的监听器 UI系统以及工具类 Display代表系统显示设备和输入设备的管理器 Font获得字体对象和它们的尺寸 Image提供一个类来保存图像对象 以PNG格式 AlertType提供一个帮助类来定义可以创建的Alert的类型 Displayable提供一个可以显示对象的抽象基类 高级UI Command抽象用户的交互动作 Screen类 Screen提供高级UI组件的基类 Alert提供一个Screen来警告一些事情 List提供一个Screen对象包括一列被选项 Forms else minV maxW h0 minV 16 15 x0 maxW h0 15 2 y0 maxH h0 15 2 绘制 16 条横线和 16 条竖线 for int i 0 i 16 i g drawLine x0 y0 h0 i x0 15 h0 y0 h0 i g drawLine x0 h0 i y0 x0 h0 i y0 h0 15 绘制空形方块 g setColor 255 0 0 g drawRect x h0 x0 h0 2 y h0 y0 h0 2 h0 h0 在本程序设计中 使用到了双缓冲 绘制图像通常是在 paint 方法中加入代码 先获得图像上下文 然后在显示设备上面绘图 但是 在游戏循环中 这么做会出 现问题 需要增加另外一个区域 用来绘图 这个区域可以叫做缓冲区 这样理解 就有了两个缓冲区 一个在屏幕上 另一个在屏幕外 可以在任何时间在上面绘图 4 1 44 1 4 图像的获取图像的获取 游戏中最直观的就是图形图像效果 这是影响游戏娱乐性和趣味性的一个重要 因素 由于手机游戏运行的速度及其大小通常和手机游戏中绘制的图像和使用的图 片有很大的关系 为了手机游戏性能更好及其容量不大 对图形资源处理的时候要 遵循以下几个原则 A 减小图片尺寸 移动设备可供装在移动应用的空间有限 可供应用使用的内存空间也有限 游 戏中往往会用到大量的图片 减小图片的尺寸就能直接的节省 ROM 和 RAM 的大小 减小尺寸的方法有 共享重复的模块 使用多个小图片代替大图 B 减少绘图方法调用的次数 游戏循环的每一帧当中 绘图部分占去了 80 以上的时间 减少绘图函数的调 用次数可以大幅度提高游戏运行的速度 达到更好的效果 C 采用缓冲技术减少闪烁 由于游戏在更新屏幕时不是一次操作就完成 往往是先画背景 再画前景 如 果把游戏中的图形直接显示在屏幕上 人眼将能观察到屏幕的刷新过程 其效果就 是整个屏幕都在闪烁 为了消除这种现象 游戏都采用了缓冲技术 先把图画在虚 拟屏幕缓冲区里 等所有绘图操作完成 再把虚拟屏幕缓冲区的内容拷贝到物理屏 幕缓冲区 D 针对不同的手机采用不同的图片格式 支持 MIDP2 0 的手机除了标准的 PNG 格式以外 还支持 RGB 字节数组的格式 具体采用哪一种格式需要根据容量以及性能多方面综合考虑 目前 大多数手机游 基于 J2ME 的手机五子棋游戏的设计与实现 22 戏均采用 PNG 作为主要的图形资源 PNG 格式提供透明背景的图象 这对绘制游戏 画面和被操纵主角极有帮助 PNG 格式图片中包含许多定义其图片特性的冗余部分 Chunks 这些代码包含在每一个单独的 png 格式图象中 然而如果将多个 png 图 象合并在一张幅面稍大一些的整图中 多个 chunks 就可以得到精简 图片的大小 可以得到控制 使用 Image 类中的 createImage 函数可从整图中分割出所需要的元 素 MIDlet 类本身并没有提供直接操作画面显示的功能 因此在 MIDlet 类的子类 中也没有直接操作画面显示的功能 因此 我们要使用提供了管理画面显示功能的 javax microedition lcdui Display 类 这个 Display 类可以让 javax microedition lcdui Display 类的子类显示在 画面上 Displayable 类的子类大致可以分为两种 分别为用来进行线与图形 图 像的低级描绘类 与用于显示警告与文本的输入 选择列表等 UI 组件类 前者是 javax micredition lcdui Canvas 类 后者是 javax microedition lcdui Screen 类与其子类 Alert Form List 类等 如图 4 8 所示 图 4 8 Display 继承结构图 在MIDP中可以使用的图像格式为PNG Portable Network Graphics 格式 PNG与GIF格式相比 文件有时较大 但不需支付版权费用 要获得图像 必须使用 javax microedition lcdui Image类的方法 Image类的Static方法 提供了从byte数组中提取Image对象 以及指定与 MIDlet 相同JAR文件内的PNG文件的路径后获取对象的功能 创建Image对象的 Static方法如下表所示 表4 5 javax microedition lcdui Image类 方 法描 述 static Image createImage byte imageData int imageOffset int imageLength 从一个 PNG 格式的字节数组创建一个不可 变的图像 static Image createImage Image source 从另外的一个图像创建一个不可变的图像 盐城工学院本科生毕业设计说明书 2010 23 static Image createImage int width int height 以一个给定的宽度和高度创建一个不可变 的图像 续表 4 5 方 法描 述 static Image createImage java lang String name 从一个 PNG 资源文件创建一个不可变的图 像 Graphics getGraphics 获取 Image 上的 Graphic 对象来进行绘图 int getHeight 获取图像高度 int getWidth 获取图像宽度 boolean isMutable 确定图像是否可变 为了减少额外错误处理 在调用出来的时候要进行try catch或throw 下面 的代码展示了如何创建Image对象 Image img Try img Image createImage baizi png catch java io IOException e 4 1 54 1 5 UIUI 组件的使用组件的使用 UI组件是指继承了javax microedition lcdui Screen类的一系列子类 一个Alert是在屏幕上显示的一个信息 可以用来提示用户出现一个需要注意 的信息 这些信息可能是错误或者是提示 在通常情况下 报警仅仅显示文本信息 但是实际上报警可以显示图像和发出声音 不过 显示文本信息是报警的基本功能 在任何MIDP的实现中都只备此功能 但有的厂商不完全支持图像显示和声音 Form类是能够将一个以上的图像 文本 Item类的子类混合显示的组件 本游 戏设计中涉及使用很少 List类 是用来显示项目的列表 以让用户来进行选择为 目的的组件 也可以是附有选择按钮的列表与附有复选框的列表 Alert Form List TextBox各类的超类Screen由于与Canvas类一样 是继承了 Displayable类 因此可以用setCurrent Displayable 方法来将其显示在画面上 一个MIDlet中可以有多个Displayable对象 但是在特定的时间只能有一个在 屏幕中 示意图如图4 9所示 MIDlet Display Other Displayable Displayable Current Other Displayable 基于 J2ME 的手机五子棋游戏的设计与实现 24 图 4 9 Displayable示意图 下表4 6显示了Displayable类中的API 表4 6 javax microedition lcdui Displayable类和CommandListener类 方 法 描 述 void addCommand Command cmd 增加一个新的命令 void removeCommand Command cmd 删除一个命令 void setCommandListener Command Listener 1 设置一个CommandListener 将Command 设置到当前显示 取代之前的 CommandListener void commandAction Command c Displayable d 在指定的可视界面 d 上执行 Command 命 令 命令 c 在 Displayable d 上被执行 时触发了对这个方法的调用 List 可以给用户显示一组备选项的组件 如表 4 7 所示 表4 7 javax microedition lcdui List类 方 法描 述 List String title int listType 用特定的标题和 list 类型来创建一个 list List String title int listType String stringElements Image imageElements 使用预先定义的一组选项和相应的图像来构 造一个 list int append String stringPart Image imagePart 添加一个元素 choice 到一个列表 也可 指定一个可选的图像 void set i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 餐饮加盟店选址评估及开业指导合同
- 车辆股份及使用权转让的综合性合同范本
- 厂房租赁期满续签合同样本
- 车辆租赁押金及新能源车辆推广合同
- 浙江省台州市玉环市2025年八年级下学期期末数学试题及参考答案
- 莆田市荔城区供销社总公司招聘考试真题2024
- 加层导致该房屋裂缝赔偿合同书(4篇)
- 公众公司监督管理制度
- 专科医生调考复习试题附答案
- 药理学复习测试题
- 通向自由与智慧之路
- GB/T 18380.12-2008电缆和光缆在火焰条件下的燃烧试验第12部分:单根绝缘电线电缆火焰垂直蔓延试验1 kW预混合型火焰试验方法
- word基础入门公开课课件
- 综合、专科医院执业校验标准
- 学习罗阳青年队故事PPT在急难险重任务中携手拼搏奉献PPT课件(带内容)
- 稀土元素的分离方法-icaredbd课件
- 四年级下数学课件-火车过桥-通用版
- 版式设计课件3,网格系统全攻略
- 船舶防台风安全安全知识
- 国家开放大学《人文英语3》章节测试参考答案
- 用双棱镜干涉测光波(20149)
评论
0/150
提交评论