1、 基于 Java ME无线网络移动端的俄罗斯方块游戏的实现 摘 要 本系统是 一个基于 Java ME 平台 的无线网络移动端的俄罗斯方块游戏, 利用 Java ME Wireless Toolkit(WTK)开发包工具 在 无线网络移动端上 实现 经典的俄罗斯方块游戏 。 论文 开始部分 对 无线网络移动 系统开发中常使用 几种开发语言和环境作了比较,说明了选择 Java ME Wireless Toolkit 作为 开发环境 的 的原因并对它作了 相关 的 介绍。 并展示了 在 WTK 中打开 一个 项目、把源文件打包成JAR 包、产生混淆包的方法和过程 。在 系统 设计时 , 遵循了 无
2、线网络移动端 程序 的 startApp、 pauseApp、 destroyApp 的 开发生命周期。在 设计与实现方面,分成 难度选择、游戏规则、方块处理这几个模块进行 实现。 在开发与实现的同时也讲解了俄罗斯方块这款古老而经典游戏的游戏背景、规则以及相关特性。最终展示了 无线网络移动端的 游戏开发的基本开发 过程 和设计思路 。 关键词: 无线网络移动端 ; Java ME; 俄罗斯方块 ; 游戏 开发Realization of the TETRIS Game Based On Mobile Platform of Java ME Wireless Network Abstract P
3、uzzle games are a pretty interesting type of game to create for Java ME. TETRIS is a great example of a mix of puzzle and action. TETRIS is one of the few games that achieve ultimate popularity. It is remarkably simple, yet remarkably difficult. The system is a TETRIS which is based on the platform
4、of Java ME mobile wireless, applying Java ME Wireless Toolkit (WTK) to achieve using TETRIS in simulator. This article offers a brief introduction about the development of Java ME Wireless Toolkit. The design and the development are including three parts: TETRISs rules, the selecting of difficulty a
5、nd the disposing of pieces. In the process of development and implementation, the article also interprets the TETRISs rules and TETRISs characters to show all the process of the development and design. Key words: wireless network UE; Java ME; TETRIS; game development 目 录 论文总页数 : 25页 1. 引言 . 1 1.1 系统
6、综述 . 1 1.2 Java ME 游戏开发背景 . 1 1.3 无线网络移动端游戏发展现状 . 1 2 开发环境介绍 . 2 2.1 编程环境的选择 . 2 2.2 Java ME Wireless Toolkit(WTK)简介 . 4 2.3 Java ME Wireless Toolkit(WTK)开发环境的简介 . 5 3 游戏设计 . 7 3.1 俄罗斯方块游戏的背景 . 7 3.2 俄罗斯方块游戏的规则 . 7 3.3 俄罗斯方块游戏的特性 . 7 4 游戏系统分析设计 . 8 4.1 系统解决方案 . 8 4.2 系统总体结构 . 8 4.2.1 难度选择模块 . 9 4.2.
7、2 方块处理模块 . 9 4.2.3 游戏规则模块 . 9 4.3 游戏中断处理流程 . 10 5 系统实现与测试 . 10 5.1 系统源文件结构 . 10 5.2 难度选择模块 . 11 5.2.1 难度选择模块结构 . 11 5.2.2 难度选择模块功能 . 12 5.3 游戏规则模块功能 . 14 5.3.1 游戏规则模块结构 . 14 5.3.2 游戏规则模块功能 . 15 5.4 方块处理模块 . 17 5.4.1 方块处理模块结构 . 17 5.4.2 方块处理模块功能 . 20 结 论 . 23 参考文献 . 23 致 谢 . 24 声 明 . 25 第 1 页 共 25 页
8、1. 引言 1.1 系统综述 综合运用以前所学专业知识,在 Java ME 开发平台上实现无线网络移动端的俄罗斯方块游戏。其研 究主要包括以下内容:第一,克服有限的可视屏幕尺寸,使游戏正常显示;第二,解决有限的可用内存调用问题,实现游戏流畅运行;第三,俄罗斯方块游戏规则算法在 Java ME 平台的实现,保证游戏可玩性;第四,游戏开始、结束等逻辑在游戏进行中的判断。本系统在 Windows XP 的操作系统下, Java Micro Edition Wireless Toolkit 2.1 为开发工具,用中文版 UltraEdit做为代码编辑器而实现的。 1.2 Java ME 游戏 开发背景
9、 游戏开发是艺术与编程技术相结合的完美表现。利用 Java 的“ Write once,run anywhere”特性,可以真正达到程序只写一次,在任何平台都可以执行。同时 Java语言对面向对象的良好支持,使开发具有高效性。所以 Java ME(Java Micro Edition)是广大无线网络移动端游戏开发厂商和游戏开发爱好者的首选平台 。 1.3 无线网络移动端游戏发展现状 纵观 IT 产业的历史,计算机游戏已经成为技术创新背后的动力之一。计算机游戏者渴望更加强大的硬件计算能力,渴望不受不同的软件的限制 无论是将图形强制在人工智能 (AI)上还是网络安全性。而无线网络移动端游戏已成为I
10、T产业中增长最快的部分之一。 无线网络移动端 是一个崭新的游戏 开发 平台。在众多种类的游戏当中,只有几种游戏类型是适合开发成 无线网络移动端 游戏的。低激烈程度的游戏;简单街机游戏;运动类“情景”游戏;简单的运动类游戏;解谜或简单的匹配游戏;主题测试游戏。在上面的游戏种类中,我选择了经典的方块匹配游戏:俄罗斯方块。俄罗斯方块有着举世闻名的游戏性且非常直观。某些与坠落的玩具碎片和它们的形状有关的东西,使得哪怕新手也会很自然地企图把它们排列起来,并加以适当组合,就好似俄罗斯方块触动了玩家某些内在的感官,使得哪怕是我们 当中最杂乱无章的人也要把事情整理妥 当。在操控性方面,只需方向键就可完成对游戏
11、的全盘控制,这也适合无线网络移动端 游戏的基本特性。 俄罗斯方块 要比过去二十年间出现的任何东西都要浪费人们的时间。它被GameSpot 评选为历史上最伟大游戏之一。它的起源实际上要追溯到八十年代中期,尽管它的人气一直到几年后才开始显露出来。游戏的概念十分简单,如今已经成为一种公认的规则:屏幕顶部以随机顺序落下形状各异的碎块, 玩家 要试图用它们拼成没有空隙的行列。 玩家是 没法打赢它 的, 因为坚持得时间越长,游戏速度也就变得越来越快,而游戏的吸引 力就在于使 玩家 顶住碎块的进攻,支撑的第 2 页 共 25 页 时间比上一次更长。俄罗斯方块举世闻名的游戏性,在该游戏新鲜出炉时就显得非常直观
12、。某些与坠落的玩具碎片和它们的形状有关的东西,使得哪怕新手也会很自然地企图把它们排列起来,并加以适当组合,就好似俄罗斯方块 触动了 玩家某些内在的感官,使得哪怕是最杂乱无章的 玩家 也要把事情整理妥当。 2 开发环境介绍 2.1 编程环境的选择 目前, 移动开发有以下四种主流平台。 Java Micro Edition(Java ME), Binary Runtime Environment for Wireless(BREW) , Symbian 和 Window Mobile Smartphone。 其中: Binary Runtime Environment for Wireless(
13、BREW) BREW 是基于高通公司的 Code Division Multiple Acces( CDMA)技术的手机为开发平台。它使用 C或 C+结合 BREW API 来开发 BREW 设备上面的程序。和Java ME一样 BREW能够作为游戏和地磁手机操作系统之间的一个中介。和 Java ME不同, BERW 也支持本地代码,能够专门针对某一手机的处理器而编译 。本地代码通常比对应的解释版本要快很多,但在设备之间移植会花费很多技巧。在北美和亚洲有部分无限通信服务提供商。 Symbian Symbian 是一种开放的操作系统,任何设备制造商都能获得使用许可。Symbian 支持 C+、
14、Java 和 Visual Basic 等编程语言。但大多数商业 Symbian游戏都是用 C+开发并作为本地 Symbian 应用程序,这使得它们和 Java 开发的游戏相比更快一些。 Window Mobile Smartphone 在 Window Mobile Smartphone 平台上,可以使用在 编写 Pocket PC 游戏时所用的一样的工具和 API。这意味着要使用 C、 C+或 C#编程语言并结合使用Window Mobile API。 这里我选用 Java Micro Edition(Java ME)作为开发平台。 Sun Microsystem 公司在 1999 年 6
15、月推出 Java ME。 Java ME 用于为信息家电市场提供应用服务,这些信息家电包括传呼机、移动电话、个人商务助理 (PDA)、电视机顶盒、 POS 终端以及其他消费电子设备。 Java ME 体系结构采用模块化、可扩展的设计。这种设计通过一个 3层软件模 型来实现。 由于无线移动设备比桌面计算机具有更弱的计算能力和更小的屏幕, Java ME代表着 Java SE 的一个简化功能集, Java ME 是 Java SE 的一个子集,它支持一个较小的功能集,这些功能适用于无线和有线的移动设备。 Java ME 包括一组可以灵活调用的开发工具和丰富的应用程序接口 (API)。依靠通用的字节
16、码而不第 3 页 共 25 页 是本地应用程序代码, 其程序 不需要费多大力气就可以移植到不同的手机。同时全球手机制造商中, Java ME 有着最广泛的工业支持。 Java ME 也是 目前 最 占据优势的移动软件开发技术。并且所有的 迹象表明它将保持并可能继续扩展它的市场份额。 2007 年约有 4.5 亿支持 Java 的手机销售出去,占据整个手机市场的 75%。 按照 MIDP 规范开发的 Java ME 应用程序叫做 MIDlet。因此,用 Java ME MIDP创建的任何游戏实际上都是 MIDlet。 MIDlet 类存储在 Java 字节码文件中,扩展文件名 .class。而
17、MIDlet 类必须在发布之前进行验证,以确保它们不会执行任何非法操作。进行这个预验证步骤的原因和移动设备所使用的虚拟机的限制有关。为了保证虚拟机尽可能地小且高效,在一个运行时 MIDlet 类上 所执行的验证被最小化。预验证在编译之后发生,并生成一个新的 class 文件,这个文件是通过验证后等待测试或发布的。最后 MIDlet 打包成 JAR 文件以便发布。应用程序描述符 (JAD 文件 )提供了和一个 JAR 文件中包含的多个 MIDlet 相关的描述信息。一个 MIDlet 套件中的 JAR 文件,能够提供安装和访问单个 MIDlet 的相应的信息。 Java SDK 是用 Java
18、进行开发的一个标准开发工具包。 Java ME Wireless Toolkit( JWT)的作用相当于一个用来和 Java SDK 协同工作的插件,它包括用来验 证和测试 MIDlet 的一个字节码验证器和几个 Java ME 模拟器。 Java ME 技术架构分为:简表 (Profile)、配置 (Configuration)和 Java 虚拟机 (Java Virtual Machine)3 层,它们都构建在本地操作系统之上。 其中,简表层定义了特定系列设备上可用的应用程序编程接口 (API)的最小子集;配置层 面对的是大量各种不同的小型嵌入式设备,通过定义其配置可以描述硬件的功能; J
19、ava 虚拟机层是针对在本地操作系统定制的虚拟运行平台。其架构图如下: 图 1 Java ME 架构 图 按照 MIDP 规范开发的 Java ME 应用程序叫做 MIDlet。 用 Java ME MIDP 创建的任何游戏实际上都是 MIDlet。 MIDlet 类存储在 Java 字节码文件中,扩展文简表 层 (Profile) 配置层 (Configuration) Java 虚拟机 (JVM) 第 4 页 共 25 页 件名 .class。而 MIDlet 类必须在发布之前进行验证,以确保它们不会执行任何非法操作。进行这个预验证步骤的原因和移动设备所使用的虚拟机的限制有关。为了保证虚拟
20、机尽可能地小且高效,在一个运行时 MIDlet 类上所执行的验证被最小化。预验证在编译之后发生,并生成一个新的 class 文件,这 个文件是通过验证后等待测试或发布的。最后 MIDlet 打包成 JAR 文件以便发布。应用程序描述符 (JAD 文件 )提供了和一个 JAR 文件中包含的多个 MIDlet 相关的描述信息。一个 MIDlet套件中的 JAR文件,能够提供安装和访问单个 MIDlet的相应的信息。 本系统的编译环境选用 Java ME Wireless Toolkit(JWT)version 2.1,这样对于游戏中包含的类,字节码验证器在打包前对它们进行验证。 Java ME 模
21、拟器可以用来在 PC 上测试,而不必下载到移动设备上。 2.2 Java ME Wireless Toolkit(WTK)简介 Java ME Wireless Toolkit(WTK) 的全称是 : Java ME 无线开发工具包。这一工具包的设计目的是为了帮助开发人员简化 Java ME 的开发过程。它的功能包括了编译、打包、模拟执行 MIDP 应用程序。其中包括了字节码验证器、 Java ME模拟器、 KToolBar、预配置服务器 (provisioning server)等很有用的工具。 该工具箱包含 的生成工具、实用程序以及设备仿真器。现在共推出有四个版本,分别是 1.0.4, 2
22、.0, 2.1 和 2.2。每个 版本都包括英语,日语,简体中文,繁体中文 4 个语种包。它的功能包括了编译、打包、模拟执行 MIDP 应用程序。1.0.4 版只能够开发 MIDP1.0 应用程序, 2.0 版只能够开发 MIDP2.0 应用程序,2.1版则可以同时开发 MIDP1.0、 JTWI(CLDC1.0,MIDP2.0,WMA1.1)可改用 CLDC1.1或加入 MMAPI1.1)、自定义 (随机组合 Configuration、 Profile 以及 Optional Package)三种环境下的应用程序。 2.2 版中, WTK 全面的支持 JTWI 规范。即 MIDP 2.0、
23、 CLDC 1.1、 WMA 2.0、 MMAPI 1.1、 Web Services(JSR 172)、 File and PIM APIs(JSR 75)、 Bluetooth and OBEX APIs(JSR 182)和 3DGraphics(JSR 184),同时也可以使用该版本开发面向 CLDC1.0 和 MIDP1.0 的应用程序。 WTK 工具包中的 KToolBar 是一个可视化的开发环境,可以通过一个图形用户界面来创建、编译、打包和测试 Java ME 应用程序。它也提供了直接的方法来管理 MIDlet 项目并生成 设置。 这里我选用 WTK 2.1 作为开发环境。 安装
24、WTK 2.1 后,将得到一个包括多种实用工具的开发包。以下是安装显示的菜单项,见下图: 第 5 页 共 25 页 图 2 WTK 文件结构 无论哪个版本的 WTK 都会包括以下几个目录: appdb 目录: RMS 数据库信息 apps 目录: WTK 自带的 demo 程序 bin 目录: Java ME 开发工具执行文件 docs 目录: 各种帮助与说明文件 lib 目录: Java ME 程序库, Jar 包与控制文件 session 目录:性能监控保存信息 wtklib 目录: JWTK 主程序与模拟器外观 2.3 Java ME Wireless Toolkit(WTK)开发环境的
25、简介 打开 WTK 下的 KTookBar。选择打开项目, WTK 会把自身 apps 目录下的应用项目全部显示出来,选择“打开项目”后,能够对 apps 目录下的 MIDlet 项目进行开发更改, 见下图: 图 3 打开一个项目 直接运行 MIDP应用程序可以在程序组中直接选择 Run MIDP Application 。在弹出的对话框中选择其它路径中的 JAD程序运行 。 JAD描述文件与其指定的 JAR文件需在同一个目录下 。同时运行目录路径中不能包含中文。 KToolBar 的生成功能只能帮将源代码编译并预先审核并不会帮产生 JAR 文件,如果要发布 MIDP程序,除了 JAD 描述文
26、件,还必须打包成 JAR 文件。 第 6 页 共 25 页 在 KToolbar 选中 Project-Package-Create Package,可以把整个程序,包括资源文件打包成 JAR 文件。形成的 JAR 保存在项目对应的 bin 目录下,如下图: 图 4 创建一个包 KToolBar 除了“产生包”,另外还有“产生混淆包”功能。为了防止别人反编译后读取源代码,将程序 (.class 文件 )进行混淆,经过混淆的 Java Byte Code可以增加反编译源代码的时间。在 KToolBar 的 Edit-Preferences 里面提供很多实用的功能,如下图: 图 5 选择 Preferences 菜单 KToolBar 除了“产生包”,另外还有“产生混淆包”功能。为了防止别人反编译后读取源代码,将程序 (.class 文件 )进行混淆,经过混淆的 Java Byte Code可以增加反编译源代码的时间。 在需要监视程序性能的时候,可以 在 Edit-Preferences 里 选中“ Enable Memory Monitor”,在下一次模拟器执行的时候,就可读出程序运行时的内存消耗均值,消耗峰 值以及具体产生对象的个数 使用情况。