分类号 TP311 UDC D10621-408-(2007)6154-0密 级公开 编号 2002801081
成都信息工程学院
学位论文
基于Java ME无线网络移动端的俄罗斯方块游戏的实现
论文作者姓名 胡昊天
申请学位专业 网络工程
申请学位类别 工学学士
指导教师姓名(职称) 李晓岗(高级工程师)
论文提交日期 2007年06月 03 日
基于Java ME无线网络移动端的俄罗斯方块游戏的实现
摘 要
本系统是一个基于Java ME平台的无线网络移动端的俄罗斯方块游戏利用Java ME Wireless Toolkit(WTK)开发包工具在无线网络移动端上实现经典的俄罗斯方块游戏。论文开始部分对无线网络移动系统开发中常使用几种开发语言和环境作了比较说明了选择Java ME Wireless Toolkit作为开发环境的的原因并对它作了相关的介绍。并展示了在WTK中打开一个项目、把源文件打包成JAR包、产生混淆包的方法和过程。在系统设计时遵循了无线网络移动端程序的startApp、 pauseApp、 de stro yApp的开发生命周期。在设计与实现方面分成难度选择、游戏规则、方块处理这几个模块进行实现。在开发与实现的同时也讲解了俄罗斯方块这款古老而经典游戏的游戏背景、规则以及相关特性。最终展示了无线网络移动端的游戏开发的基本开发过程和设计思路。
关键词无线网络移动端 Java ME俄罗斯方块游戏开发
Realization of the TETRIS Game Based On Mobile
Platform of Java ME Wireless Network
Abstract
Puzzle games are a pretty interesting type of game to create for Java ME.TETRIS is a great example of a mix ofpuzzle and action.TETRIS is one of the fewgames that achieve ultimate popularity. It is remarkably simple, yet remarkablydifficult.The system is a TETRIS which is based on the platform ofJava ME mobilewireless, applying Java ME Wireless Toolkit (WTK) to achieve using TETRIS insimulator.This article offers a brief introduction about the development of Java MEWireless Toolkit. The design and the development are including three parts:TETRIS’s rules, the selecting ofdifficulty and the disposing ofpieces. In the processof development and implementation, the article also interprets the TETRIS's rulesand TETRIS’s characters to show all the process ofthe development and design.
Key words:wireless network UE;Java ME;TETRIS;game development
目 录
论文总页数 25页
1. 引言. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1
1. 1 系统综述. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .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.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. 引言
1. 1系统综述
综合运用以前所学专业知识在Java ME开发平台上实现无线网络移动端的俄罗斯方块游戏。其研究主要包括以下内容第一克服有限的可视屏幕尺寸使游戏正常显示第二解决有限的可用内存调用问题实现游戏流畅运行第
三俄罗斯方块游戏规则算法在Java ME平台的实现保证游戏可玩性第四游戏开始、结束等逻辑在游戏进行中的判断。本系统在Windows XP的操作系统下 JavaMicroEditionWirelessToolkit 2. 1为开发工具用中文版UltraEdit做为代码编辑器而实现的。
1.2 Java ME游戏开发背景
游戏开发是艺术与编程技术相结合的完美表现。利用Java的“Writeonce,run anywhere”特性可以真正达到程序只写一次在任何平台都可以执行。同时Java语言对面向对象的良好支持使开发具有高效性。所以Java ME(JavaMicro Edition)是广大无线网络移动端游戏开发厂商和游戏开发爱好者的首选平台。
1.3无线网络移动端游戏发展现状
纵观IT产业的历史计算机游戏已经成为技术创新背后的动力之一。计算机游戏者渴望更加强大的硬件计算能力渴望不受不同的软件的限制——无论是将图形强制在人工智能(AI)上还是网络安全性。而无线网络移动端游戏已成为IT产业中增长最快的部分之一。
无线网络移动端是一个崭新的游戏开发平台。在众多种类的游戏当中只有几种游戏类型是适合开发成无线网络移动端游戏的。低激烈程度的游戏简单街机游戏运动类“情景”游戏简单的运动类游戏解谜或简单的匹配游戏主题测试游戏。在上面的游戏种类中我选择了经典的方块匹配游戏俄罗斯方块。俄罗斯方块有着举世闻名的游戏性且非常直观。某些与坠落的玩具碎片和它们的形状有关的东西使得哪怕新手也会很自然地企图把它们排列起来并加以适当组合就好似俄罗斯方块触动了玩家某些内在的感官使得哪怕是我们当中最杂乱无章的人也要把事情整理妥当。在操控性方面只需方向键就可完成对游戏的全盘控制这也适合无线网络移动端游戏的基本特性。
俄罗斯方块要比过去二十年间出现的任何东西都要浪费人们的时间。它被GameSpot评选为历史上最伟大游戏之一。它的起源实际上要追溯到八十年代中期尽管它的人气一直到几年后才开始显露出来。游戏的概念十分简单如今已经成为一种公认的规则屏幕顶部以随机顺序落下形状各异的碎块玩家要试图用它们拼成没有空隙的行列。玩家是没法打赢它的因为坚持得时间越长游戏速度也就变得越来越快而游戏的吸引力就在于使玩家顶住碎块的进攻支撑的
时间比上一次更长。俄罗斯方块举世闻名的游戏性在该游戏新鲜出炉时就显得非常直观。某些与坠落的玩具碎片和它们的形状有关的东西使得哪怕新手也会很自然地企图把它们排列起来并加以适当组合就好似俄罗斯方块触动了玩家某些内在的感官使得哪怕是最杂乱无章的玩家也要把事情整理妥当。
2 开发环境介绍
2. 1 编程环境的选择
目前移动开发有以下四种主流平台。Java Micro Edition(Java ME) BinaryRuntime Environment for Wireless(BREW) Symbian 和 Window MobileSmartphone。其中
Binary Runtime Environment for Wireless BREW
BREW是基于高通公司的Code Division Multiple Acces CDMA技术的手机为开发平台。它使用C或C++结合BREW API来开发BREW设备上面的程序。和Java ME一样BREW能够作为游戏和地磁手机操作系统之间的一个中介。和Java ME不同 BERW也支持本地代码能够专门针对某一手机的处理器而编译。本地代码通常比对应的解释版本要快很多但在设备之间移植会花费很多技巧。在北美和亚洲有部分无限通信服务提供商。
Symb ian
Symb ian是一种开放的操作系统任何设备制造商都能获得使用许可。Symbian支持C++、 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月推出Java ME。 Java ME用于为信息家电市场提供应用服务这些信息家电包括传呼机、移动电话、个人商务助理(PDA) 、电视机顶盒、 POS终端以及其他消费电子设备。 Java ME体系结构采用模块化、可扩展的设计。这种设计通过一个3层软件模型来实现。
由于无线移动设备比桌面计算机具有更弱的计算能力和更小的屏幕 JavaME代表着Java SE的一个简化功能集 Java ME是Java SE的一个子集它支持一个较小的功能集这些功能适用于无线和有线的移动设备。 Java ME包括一组可以灵活调用的开发工具和丰富的应用程序接口(API) 。依靠通用的字节码而不
是本地应用程序代码其程序不需要费多大力气就可以移植到不同的手机。同时全球手机制造商中 Java ME有着最广泛的工业支持。
Java ME也是目前最占据优势的移动软件开发技术。并且所有的迹象表明它将保持并可能继续扩展它的市场份额。 2007年约有4.5亿支持Java的手机销售出去 占据整个手机市场的75%。
按照MIDP规范开发的JavaME应用程序叫做MIDlet。因此用Java ME MIDP创建的任何游戏实际上都是MIDlet。 MIDlet类存储在Java字节码文件中扩展文件名.class。而MIDlet类必须在发布之前进行验证以确保它们不会执行任何非法操作。进行这个预验证步骤的原因和移动设备所使用的虚拟机的限制有关。为了保证虚拟机尽可能地小且高效在一个运行时MIDlet类上所执行的验证被最小化。预验证在编译之后发生并生成一个新的class文件这个文件是通过验证后等待测试或发布的。最后MIDl et打包成JAR文件以便发布。应用程序描述符(JAD文件)提供了和一个JAR文件中包含的多个MIDl et相关的描述信息。一个MIDlet套件中的JAR文件能够提供安装和访问单个MIDlet的相应的信息。
Java SDK是用Java进行开发的一个标准开发工具包。 Java ME WirelessToolkit JWT的作用相当于一个用来和Java SDK协同工作的插件它包括用来验证和测试MIDlet的一个字节码验证器和几个Java ME模拟器。
Java ME技术架构分为简表(Profile) 、配置(Configuration)和Java虚拟机(Java Virtual Machine)3层它们都构建在本地操作系统之上。
其中简表层定义了特定系列设备上可用的应用程序编程接口(API)的最小子集配置层面对的是大量各种不同的小型嵌入式设备通过定义其配置可以描述硬件的功能 Java虚拟机层是针对在本地操作系统定制的虚拟运行平台。其架构图如下
图1 Java ME架构图
按照MIDP规范开发的Java ME应用程序叫做MIDlet。用Java ME MIDP创建的任何游戏实际上都是MIDlet。MIDlet类存储在Java字节码文件中扩展文
件名.class。而MIDlet类必须在发布之前进行验证 以确保它们不会执行任何非法操作。进行这个预验证步骤的原因和移动设备所使用的虚拟机的限制有关。为了保证虚拟机尽可能地小且高效在一个运行时MIDlet类上所执行的验证被最小化。预验证在编译之后发生并生成一个新的class文件这个文件是通过验证后等待测试或发布的。最后MIDlet打包成JAR文件以便发布。应用程序描述符(JAD文件)提供了和一个JAR文件中包含的多个MIDl et相关的描述信息。一个MIDlet套件中的JAR文件能够提供安装和访问单个MIDlet的相应的信息。
本系统的编译环境选用Java ME Wireless Toolkit(JWT)version 2. 1这样对于游戏中包含的类字节码验证器在打包前对它们进行验证。 Java ME模拟器可以用来在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.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以及OptionalPackage)三种环境下的应用程序。 2.2版中 WTK全面的支持JTWI规范。即MIDP
2.0、 CLDC 1. 1、 WMA 2.0、 MMAPI 1. 1、 Web Services(JSR 172) 、 File and PIMAPIs(JSR 75) 、 Bluetooth and OBEX APIs(JSR 182)和3DGraphics(JSR 184) 同时也可以使用该版本开发面向CLDC1.0和MIDP1.0的应用程序。
WTK工具包中的KToolBar是一个可视化的开发环境可以通过一个图形用户界面来创建、编译、打包和测试Java ME应用程序。它也提供了直接的方法来管理MIDlet项目并生成设置。
这里我选用WTK 2. 1作为开发环境。
安装WTK 2. 1后将得到一个包括多种实用工具的开发包。以下是安装显示的菜单项见下图
IonSwitch是一家2016年成立的国外VPS主机商,部落上一次分享的信息还停留在2019年,主机商提供基于KVM架构的VPS产品,数据中心之前在美国西雅图,目前是美国爱达荷州科德阿伦(美国西北部,西接华盛顿州和俄勒冈州),为新建的自营数据中心。商家针对新数据中心运行及4号独立日提供了一个5折优惠码,优惠后最低1GB内存套餐每月仅1.75美元起。下面列出部分套餐配置信息。CPU:1core内存...
百驰云成立于2017年,是一家新国人IDC商家,且正规持证IDC/ISP/CDN,商家主要提供数据中心基础服务、互联网业务解决方案,及专属服务器租用、云服务器、云虚拟主机、专属服务器托管、带宽租用等产品和服务。百驰云提供源自大陆、香港、韩国和美国等地骨干级机房优质资源,包括BGP国际多线网络,CN2点对点直连带宽以及国际顶尖品牌硬件。专注为个人开发者用户,中小型,大型企业用户提供一站式核心网络云端...
profitserver怎么样?profitserver是一家成立于2003的主机商家,是ITC控股的一个部门,主要经营的产品域名、SSL证书、虚拟主机、VPS和独立服务器,机房有俄罗斯、新加坡、荷兰、美国、保加利亚,VPS采用的是KVM虚拟架构,硬盘采用纯SSD,而且最大的优势是不限制流量,大公司运营,机器比较稳定,数据中心众多。此次ProfitServer正在对德国VPS(法兰克福)、西班牙v...