




已阅读5页,还剩57页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于J2ME的手机五子棋游戏的设计与实现 作者 日期 毕毕业业设设计计说说明明书书 基于基于J2MEJ2ME的手机五子棋游戏的的手机五子棋游戏的 设计与实现设计与实现 专业专业计算机科学与技术 学生姓名学生姓名杨婷婷 班级班级B计算机064 学号学号 指导教师指导教师王 榕 完成日期完成日期2010年5月25日 基于基于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 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 目目 录录 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 基于基于J2MEJ2ME的手机五子棋游戏的设计与实现的手机五子棋游戏的设计与实现 1 概述 1 1 课题研究背景 手机游戏的实现方式主要包括嵌入式游戏 浏览器游戏 短消息服务游戏 J2 ME和其它的解释语言 Java 2 Micro Edition是一种针对移动电话和PDA这样的小型设备的Java语言 J2ME与台式机中的 Java相比还是有一定的限制 但是它已经极大的提高了移动电话支持游戏的能力 并且具备一定的优势 庞大的潜在用户群 便携性 开发门槛较低 手机是现代生活方式的产物 如同因特网的普及导致网络游戏的高速发展一样 手机的普及 对满足不同功能的手机软件的需求也就越来越迫切 这就需要比较 好的手机软件开发平台 此时具有平台无关性优点的J2ME开发平台也就应运而生 J2ME是Sun公司为消费电子和嵌入式设备软件的需要而开发的应用程序接口和技术 规范 J2ME提供了由多家大型的移动设备厂商一起设计和提出的工业标准简表 简 称MIDP 的开发接口 由于这个MIDP简表不是某个特定的商家所拥有的 所以具有 一定的通用性 因此由J2ME开发的软件对多家大型移动设备厂商生产的支持MIDP简 表的手机都适用 比如Nokia Motorola和三星等多家手机厂商推出的多款支持J2M E的手机 与传统的主流的PC游戏相比 手机游戏的价值在于打发一些无聊的时间 作为 一个移动的娱乐终端 手机游戏施展身手的机会永远可能是在地铁站 公交车或者 是洗手间这些地方 也许在庞大的游戏行业里 手机游戏将永远扮演着一个边缘者 的角色 因为谁也不能指望一个人在家的时候用手机玩游戏或者看电影 但是手机 游戏的市场是巨大的 即便是只有十分之一的用户来购买游戏 那也将是不可忽视 的商业机遇 随着移动开发技术的不断升级和终端设备成本的下降 近年来 手机在普通消 费人群中得到了极大的普及 凭借其便于携带 沟通迅捷 功能多样 私密性强等 独有优势 手机已经成为普通民众不可替代的随身工具 其益智 趣味和休闲的特 点迎合了消费者的娱乐需要 手机游戏的开发推广已经成为手机生产商和运营商重 要的业务增长点 游戏软件产业价值不断提升 手机游戏是手机的一种高附加值操 作软件 游戏编程是手机软件编程的重要组成 同时也持续推动手机软件技术升级 进步 手机游戏按手机平台分类 主要有J2ME Brew UniJa等 其中J2ME手机开 发平台使用最为广泛 作为SUN公司针对微型嵌入式消费电子产品开发的编程系统 J2ME技术是当前手机软件开发的主流平台 各大手机生产厂商目前的主流产品绝 大都使用J2ME技术 基于J2ME技术开发手机软件可以实现手机功能的多样化与专业 化 极大的满足了人们对手机要求更高的需求 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类及其子类的继承关系如同一棵倒 立的树形 根类为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 一种功能强大的现代面向对象的编程语言 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还提供了灵活的图形用户界面 健壮的安全模型 广泛的联 网协议支持 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 和连接受 Optional Packages Profiles Configuration Host Operating Syste Java Virtual Machines 限设备配置 CLDC CLDC和CDC的大部分功能都来源于J2SE 因为CDC与CLDC针对 设备的CPU处理能力和内存大小不同 所以它们使用的虚拟机和核心类库也不相同 CDC的核心类库比CLDC的要大 提供的功能也更强 CLDC CDC和J2SE之间的关系 如图2 3所示 图2 3 CLDC CDC和J2SE的关系图 连接设备配置 Connected Device Configuration CDC 为处理能力较强 内存空间更大 联网能力更出色且电源 稳定的设备设计 CDC的目标设备包括主要包括电视机顶盒 车载娱乐系统 高端P DA等 它们通常具备32位或64位的CPU 2MB以上可以用于Java平台实现和运行相关 应用程序的内存空间 连接受限设备配置 Connected Limited Device Configuration CLDC 为具有间断性联网能力 较慢的处理器 有限内存 没有 稳定的电源供应的设备设计 CLDC的目标设备主要包括移动电话 双向呼叫器和入 门级的PDA等 它们通常具有16位或32位的CPU 配置128KB 512KB的内存可用于Ja va平台实现和运行相关应用程序 CLCD主要面向J2ME开发平台 由两个部分组成 为应用程序提供的最小Java语言类库以及适合在资源受限设备上运行的Java虚拟机 KVM 简表 Profiles 层 简表层定义了特定系列设备上可用的应用程序编程接口 API 的最小集 简表在一个特定的配置上面实现 应用程序是针对特定的简表 编写的 因此可以移植到支持该简表的任何设备上 另外 一个设备可以同时支持 多个简表 用户和开发人员看到最多的就是这一层 Java虚拟机是J2ME技术的核心 但是配置和简表提供特殊环境的类应用程序接 口 配置是用于一组通用设备的最小的Java平台 而简表则为具体的设备家族或特 别的应用程序提供更具体的功能 每个配置和简表处理一般或具体的消费产品 配 置和简表规范是由多种多样的设备生产商和用户共同开发并建立的 简化地举例概括说明 假设如果想为小型信息家电编写Java应用程序的话 需 要两个前提 一个配置和至少一个简表 现在 一般是配置捆绑了虚拟机和一套针 对各自的平台所能够用的横向分组设备的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 移动信息设备还描述包括基于有限连接设备配置GenericConnection框架的网络支 持 图2 5 MIDlet生命周期流程图 2 5 开发平台 随着手机软件开发的发展 市场上同时并存许多手机游戏开发平台 目前的手 机访问Internet只能通过WAP Wireless Application Protocol 方式 而且只能访问WML Wireless Markup Language 网页 而不是主流的HTML网页 也不能显示复杂的图形格式 此外 WAP 采用的Brower Serve方式访问Internet 能提供的功能很有限 并且因为现有的WA P解决方案不够智能化 又不能访问本地存储区 如果进行在线交易会增加服务器 负荷 使服务器的反应速度变慢 使无线Internet的应用受到了很大限制 J2ME的 出现恰好有效的解决了以上问题 其Java语言的特性 使其具有以下优点 a 动态内容传输 新的应用 服务和内容可以通过不同类型的网络动态下载 b 安全 类文件校验 明确定义的应用程序编程接口和安全组件确保了第二方 应用程序的行为是可靠的 不会对设备或者网络造成损害 c 交叉平台的兼容性 标准化语言组件和库意味着由于支持J2ME配置和描述所 带来的约束使应用和内容可以在不同设备之间灵活地传输 d 离线获取 不用激活网络连接 应用就可以被使用 这种特点降低了传输费 用 减轻了可能的网络故障带来的影响 e 现代的面向对象思想 Java相对当前用于无线软件开发的编程语言和工具来 说具有更加完善的抽象机制和更高级的程序构造 这使得应用开发更加有效 f 巨大的开发者团队 这些特性使第二方软件开发商可以很容易地介入应用程序的开发 并且可以很 方便地将应用程序安装到手机上 开发周期大大缩短 而且还能支持应用程序的动 态下载和升级 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的任何厂家的移动 设备上运行 软件最好操作简单容易 受手机屏幕大小和显示的影响 手机键盘的 不方便 游戏需要设计得容易操作 其次 软件具有人工智能算法原理要简单 并且运行快速 对于人机游戏 不 需要网络连接 游戏处理不会有太长的等待时间 游戏是需要快速反应的 手机处 理器的频率直接要求我们需要使用简单实用的智能算法 另外 所制作的软件在结构上应具有很好的可扩展性 便于以后的功能扩展 3 2 23 2 2 系统的功能需求系统的功能需求 A 游戏内容 此款游戏主题是五子棋对弈 无 禁手 的规则基本是人人皆知 相同颜色的 棋子 五子一线为胜 B 游戏方式 区别于一般的生活中的人与人的对弈 用在手机上为人机对弈 在手机屏幕上 构造一个游戏棋盘 并且设计黑 白棋子 利用人工智能的相关知识实现对弈 C 游戏对象 五子棋手机游戏是大众游戏 游戏者只要具备一般的操作知识就可以进入游戏 对玩游戏者并没有什么特殊要求 D 游戏目标 此款手机游戏为棋类游戏 就是为了让人们闲暇时间休闲 锻炼棋艺 游戏设 计尽可能地模拟现实生活中的场景 a 游戏开始界面 玩家可使用 开始 软键进入游戏 b 棋子选择功能 玩家可选择走棋先后顺序 黑先白后 c 棋盘界面 对弈界面 使用上 下 左 右键来移动落子点位 使用确定按钮来落 子 相应条件下可实现悔棋 暂停 重新开始游戏功能 d 胜负判断 涉及人工智能 用以判断人与机器的输赢状况 游戏无 禁手 五子 首先连成一线则为胜 3 3 系统概要设计 3 3 13 3 1 模块划分模块划分 在完成了需求分析后 需要对此游戏进行总体的规划 模块的划分 基本的流 程设计 在总体规划期间相对要考虑到游戏的扩展性 因为在最初设计游戏的时候 不可能面面俱到 而且随着技术的发展 也需要游戏具有很好的扩充性 此次系统设计的主要模块分为 欢迎模块 规则说明模块 对弈模块 胜负判 断模块 各主要模块的功能描述如下 欢迎模块 这部分是游戏出现的第一个界面 主要是为了说明已经进入五子棋 游戏系统 规则说明模块 此模块主要是游戏者的选择界面 提供的选择项有游戏说明 开始游戏和退出游戏 对弈模块 该部分主要是进行人机对弈的棋盘界面 该模块中包含悔棋 暂停 游戏 放弃本局这些功能 胜负判断模块 这部分即是对每次棋局结果的判断 是人赢了或者是机器获胜 系统主要功能模块如图3 1所示 图3 1 系统功能模块图 3 3 23 3 2 系统流程系统流程 明确了主要模块功能后 就需要对此游戏软件基本流程有一个总体规划 本款 手机游戏软件基本流程图如图3 2所示 游戏规则界面 棋子类型选择 选择黑子 玩家先行 选择白子 机器先行 棋盘对弈界面 结果判断界面 开始游戏 退出游戏 落 子 走 棋 实 现 悔 棋 暂 停 恢 复 游 戏 放 弃 本 局 基于J2ME的手机五子棋游戏 欢 迎 模 块 胜 负 判 断 模 块 规 则 说 明 模 块 对弈模块 图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 microedi tion midlet MIdlet抽象类 程序从该类开始执行 b StartGame java 该文件生成的类显示开始游戏入口以及游戏说明 c Chessboard java 该文件生成的类用来创建棋盘对象 在画布上绘制棋盘 另外 获得棋盘上棋 子信息 将手机上的软键转化为游戏键进行走棋控制 棋盘可进行悔棋 暂停 放 弃游戏 d Chesses java 该文件生成的类负责创建棋子对象 棋子对象可以获取本身的颜色外观 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字节数组的格式 具 体采用哪一种格式需要根据容量以及性能多方面综合考虑 目前 大多数手机游戏 均采用PNG作为主要的图形资源 PNG格式提供透明背景的图象 这对绘制游戏画面 和被操纵主角极有帮助 PNG格式图片中包含许多定义其图片特性的冗余部分 Chun ks 这些代码包含在每一个单独的png格式图象中 然而如果将多个png图象合并 在一张幅面稍大一些的整图中 多个chunks就可以得到精简 图片的大小可以得到 控制 使用Image类中的createImage函数可从整图中分割出所需要的元素 MIDlet类本身并没有提供直接操作画面显示的功能 因此在MIDlet类的子类中 也没有直接操作画面显示的功能 因此 我们要使用提供了管理画面显示功能的ja vax microedition lcdui Display类 这个Display类可以让javax microedition lcdui Display类的子类显示在画 面上 Displayable类的子类大致可以分为两种 分别为用来进行线与图形 图像 的低级描绘类 与用于显示警告与文本的输入 选择列表等UI组件类 前者是java x 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对象 以及指定与MIDl et 相同JAR文件内的PNG文件的路径后获取对象的功能 创建Image对象的Static方法 如下表所示 表4 5 javax microedition lcdui Image类 方 法描 述 static Image createImage byte imageData int imageOffset int 从一个PNG格式的字节数组创建一个不可 变的图像 imageLength static Image createImage Image source 从另外的一个图像创建一个不可变的图像 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类一样 是继承了D isplayable类 因此可以用setCurrent Displayable 方法来将其显示在画面上 一个MIDlet中可以有多个Displayable对象 但是在特定的时间只能有一个在 屏幕中 示意图如图4 9所示 MIDlet Display Other Displayable Displayable Current Other Displayable 图 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 设置到当前显示 取代之前的CommandLi stener 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 int elementNum String stringPart Image imagePart 直接设置一个元素的字符串和图像 Image getImage int elementNum 返回与一个元素相关的图像 String getString int elementNum 返回与一个元素相关的字符串 boolean isSelected int elementNum 返回一个布尔值 表明一个特定的选项是否 被选中 int getSelectedIndex 获取当前被选中选项的索引值 List类对象中 listType定义的参数为Choice类型的三个常数 如表4 8所示 表4 8 Choice类型的三个常数 结果菜单选择界面如图4 10所示 图4 10菜单选择界面 设计中 对游戏中的部分疏忽给予提示 使用到Alert类 该类可以看做是简单的 对话框 用它来显示一定的提示信息 因为它是一个screen 所以接管整个屏幕 部分相应的方法如表4 9所示 表4 9 javax microedition lcdui Alert类 方 法描 述 Alert String title 构造一个简单的Alert 它会在经过一 个系统定义的时间后自动消失 Alert String title String alertText Image alertImage AlertType alertType 使用一个标题 一个消息 一个图像 和一个类型来构造一个Alert int getDefaultTimeout 获取MID使用的默认超时时长 Image getImage 获取Alert的图像 String getString 获取Alert的字符串 AlertType getType 获取当前类型 void setImage Image img 设置图像 void setTimeout int time 设置超时时长 常数名称 说 明 EXCLUSIVE 只能选择列表中的单个项目 M
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 化工装置建造讲解
- 巴彦淖尔市重点中学2026届英语九年级第一学期期末综合测试试题含解析
- 2026届北京师范大附属中学化学九上期中考试试题含解析
- 关于开展2025年医师资格考试报名资格审核工作的通知
- 人民银行招聘考试题库及答案
- 磐石彩钢房施工方案
- 社团校外活动安全责任协议书5篇
- 知识产权许可与授权合同范本:全方位保障双方利益
- 生物医药企业间生物技术知识产权许可协议
- 物业服务企业员工行为规范与智慧社区建设与运营合同
- 第1课-远古时期的人类活动【同步练习】
- 演唱会招商方案
- 河北信息技术学业水平考试试题集
- 压力容器使用单位安全总监题库
- 创业合伙人五份协议书模板
- 建筑工程消防查验检查表
- 应征公民政治审查表
- FZ∕T 71006-2021 山羊绒针织绒线
- 慢性创面的治疗及护理课件
- 2023年上海交通大学招聘考试真题
- YY/T 0003-2023手动病床
评论
0/150
提交评论