摘要:随着通信技术的发展和手机的普及,手机游戏的开发技术越来越为人们所关注。以J2ME为开发平台,利用Java提供强大工具,不但可以在手机上实现静态HTML技术所无法实现的计算处理、数据存储、与服务器的通信等功能,而且能够开发各种手机游戏。本文在介绍J2ME及其体系结构的基础上,以贪吃蛇游戏为实例,描述了借助J2ME的MIDlet类库开发手机游戏的过程。
关键词:手机游戏; MIDP应用程序; 永久性数据
Develops based on the J2ME handset game
Abstract: Along with communication development and handset popularization, people more and more pay attention to the handset game development technology. Develops the platform take J2ME, provides the powerful tool using Java, not only may realize the handset functions that static HTML technology be unable to realize, such as computation processing, data storage, and communication with server, but also can develop all kinds of handset games. On the basis of the technology and architecture of J2ME being introduced, the gluttonous snake game was taken as a example, the development process of handset game with the aid of the J2ME MIDlet class library is described in this article.
Key Words: Handset game; MIDP application pragram; Permanent data
目 录
第一章 绪论 1
1.1 研究背景 1
1.2 研究内容 1
第二章 J2ME及其体系结构概述 2
2.1 J2ME简介 2
2.2 J2ME 体系结构 2
2.3 移动信息设备简表概述 3
2.3.1 MIDP的目标硬件环境 3
2.3.2 MIDP应用程序 3
2.3.3 CLDC和MIDP库中的类 3
2.4 J2ME API简介 4
2.4.1 MIDP API概述 4
2.4.2 MIDlet应用程序 4
2.4.3 使用定时器 5
2.4.4 网络 6
2.4.5 使用Connector 7
2.4.6 使用HttpConnection 8
2.4.7 永久性数据(RMS) 9
2.4.8 存储集(Record Store) 10
2.4.9 记录 11
2.4.10 枚举 12
2.4.11 异常 13
2.5 用户界面(LCDUI 13
2.5.1 UI基础 13
2.5.2 高级UI 14
2.5.3 低级UI 15
第三章 手机游戏开发过程 16
3.1 贪吃蛇游戏的规则简介以及开发环境 16
3.1.1 贪吃蛇游戏的规则简介 16
3.1.2 开发环境 16
3.2 详细设计 16
3.2.1 代码设计 17
第四章 程序的调试与运行 22
4.1游戏的调试 22
4.2 游戏的运行环境 23
第五章 总结 24
致 谢 25
参考文献 25
第一章 绪论
1.1 研究背景
JAVA自从20世纪90年代早期诞生以来,以其强大的功能迅速为广大程序员们所接受。从2001年开始,日本的国内的移动电话开始搭载Java。使用本来就是一种程序语言的Java之后,就可以在移动电话上完成以往静态的HTML内容所无法达成的计算处理、数据存储、与服务器的通信等等。如果能利用Java上其他丰富功能,那么就可以实现更多的功能。随着手机游戏的发展,国内外各大开发商纷纷运用Java进行手机游戏开发。J2ME作为一种基于Java的便携设备开发平台,在各大手机开发公司得到了广泛应用。
1.2 研究内容
本课题拟研究基于J2ME的手机游戏开发技术以及其特点,具体研究内容如下:
1、手机游戏开发以及J2ME的基本理论和J2ME类库的使用;
2、J2ME体系结构的研究;
3、MIDP移动信息设备简表的研究;
(1)、MIDP的目标硬件环境;
(2)、MIDP应用程序;
(3)、CLDC和MIDP库中的类。
4、J2ME API的研究;
(1)MIDlet应用程序的研究;
(2)MIDlet的类库研究;
(3)各事件发生器的应用。
5、开发工具的应用和开发环境的设置。
其中MIDP移动信息设备简表的研究和J2ME API的研究为重点,本课题将通过一个具体的手机游戏的开发来研究以上内容。
第二章 J2ME及其体系结构概述
2.1 J2ME简介
现在JAVA-JAVA2 Platform大致可分为J2SE、J2EE、J2ME三类。J2SE为JAVA-JAVA2 Platform 的标准版,通常在PC上使用的JAVA。J2EE是在J2SE的API上,扩展了给企业使用EJB与Servlet等主要使用在服务器上的功能。而J2ME则是面向家电和通信工具等微小设备。
J2ME的目标是微小设备,这类设备有许多种类,在这些设备的J2ME当中,定义了CDC(Connected Device Configuration),CLDC(Connected Limited Device Configuration)这两个Configuration。
CDC是以能用在个人网关、下一代移动电话、PDA(个人数字助理)、家电设备、POS终端、车辆导航系统等上运行为前提设计出来的。CLDC,是以能使用在移动电话、PDA(个人数字助理)、家电设备、POS终端等上面为前提设计出来的。
2.2 J2ME 体系结构
配置和简表:配置定义了一个设计在一系列类似硬件上运行的Java平台的能力。J2me的目标是家电与嵌入式设备,这类设备有很多种类,对应这些设备的J2me当中,定义了CDC(连接设备配置)和CLDC(受限接设备配置)两个配置,配置所提供的类函数只有Java.lang, Java.io,Java..util包等J2SE等核心类的子集。CLDC是与手机相关的,它实际是定义一个设备制造商用来实现Java运行环境的标准,第三方开发者只需要遵循这个标准。CLDC主要影响Java开发和软件发布的以下方面:
1)目标设备的特性;
2)安全模型:安全模型有两个部分,虚拟机和应用程序安全。虚拟机安全层的目的是保护下面的设备不受任何执行代码可能引起的损害。
2.3 移动信息设备简表概述
2.3.1 MIDP的目标硬件环境
1)显示 :96*54象素,1位颜色,大约1:1比例;
2)输入: (a)单手键盘或者小键盘;
(b)双手的QWERTV键盘;
(c)触摸屏。
3)内存: (a)128KB非易失性内存,供MIDP组件使用;
(b)8KB的非易失性内存,供应用程序生成的永久数据使用;
(c)32KB的易失性内存,供Java堆使用。
4)网络: (a)双响无线网络,可间歇性连接;
(b)通常是很有限的带宽。
2.3.2 MIDP应用程序
在MIDP上运行的Java程序被称为MIDlet。MIDlet是服从一些关于它运行环境和程序打包的一些规则。其运行环境是启动MIDlet,这是设备内置应用管理器的任务。应用程序能访问到下面的一些资源:(1)震动文件中的所有文件。(2)MIDlet描叙文件的内容(JAD)。
2.3.3 CLDC和MIDP库中的类
打包:MIDlet应用一般采用震动文件的形式。这个文件应该包含运行应用程序需要的类和所有的资源文件,它也应该包含一个叫manifest.mf的清单文件。保存在震动文件中的清单文件是一个简单的文本文件,包含属性值。
应用程序描叙(JADs)在移动电话网络上传送大量的数据,需要有一个描叙文件让用户在没有下载整个包之前来查看一下MIDlet震动的细节。
2.4 J2ME API简介
2.4.1 MIDP API概述
MIDP API包含以下五个部分,如表2-1所示:
表2-1 MIDP API
类 别 | 描 述 |
Application | 包括MIDlet类。 |
Timers | 主要包括Timers和Timers Task类。 |
Networking | 提供访问设备通信能力的接口。 |
Persistence | 通过记录管理系统(RMS)API访问用户永久存储。 |
User Interface | 包括MIDP LCDUI(液晶显示器用户界面)类。 |
2.4.2 MIDlet应用程序
MIDlet即MIDP的应用程序, MIDlet应用程序的核心是MIDlet类。为了创建一个MIDlet,必须从这个虚基类派生出自己的类。表2-2提供了从MIDlet类继承的方法。
表2-2 MIDlet类
方 法 | 描 述 |
访问JAR和JAD文件中的属性 | |
String gerAppProperty(string key) | 返回JAR和JAD中与key相对应的属性的值。 |
Abstract void destoryApp (boolean unconditinal) | 应用程序管理器在应用程序关闭前,调用这个方法来给我们做一些事情的机会(例如保存状态和释放资源)。 |
Abstract void pauseApp() | 在用户暂停游戏时,应用程序管理器调用MIDlet的类方法。 |
Abstract void startApp() | 应用程序管理器调用MIDlet的这个方法,来告诉用户再次开启游戏。 |
Abstract void notifyDestroyed() | 如果游戏者决定退出游戏,可以调用这个方法来通知应用程序管理器。 |
续表2-2 MIDlet类
方 法 | 描 述 |
Abstract void notifyPausrd() | 调用这个方法来通知应用程序管理器游戏者已经暂停游戏。 |
Abstract void notifyRequest() | 调用这个方法来告诉应用程序管理器MIDlet要重新开始。 |
应用程序管理器(Application Manager ,AM)的作用就是管理MIDlet 。本质上来说,MIDlet应用程序只存在两种状态——暂停和运行。MIDlet被创建后默认为暂停状态,当应用程序管理器认为它准备完毕,它会调用startApp方法来通知MIDlet进入运行状态。
2.4.3 使用定时器
MIDP API 包括两个关于定时器的类——Java.util.Timer和Java.util.Timer Tast类 (如表2-3和2-4所示):
表2-3 Java.util .Timer类
方 法 | 描 述 |
Timer() | 构造一个新的Timer对象。 |
Void cancel() | 停止Timer。 |
Void schedule(TimeTask task,,Dare d) | 把一个任务定时在时间d运行。 |
Void schedule(TimeTask task, Data firstTime, long period ) | 让一个任务第一次在一个指定的时间运行,然后每隔period毫秒运行一次。 |
Void schedule(TimeTask task,long delay) | 指定一个任务在delay毫秒后运行一次。 |
Void schedule(TimeTask task,long delay,long period) | 指定一个任务从delay毫秒连续运行,然后每隔period毫秒运行一次。 |
Void scheduleAtFixedRate(timeTask task,Date firstTime,long period) | 指定一个任务从firstTime连续运行,然后以固定间隔period毫秒连续运行。 |
Void scheduleAtFixedRate(TimeTask task,long delay,long period) | 指定一个任务在delay毫秒后运行,然后以固定间隔period毫秒连续运行。 |
表2-4 Java.util.Timer Tast类
方 法 | 描 述 |
Timer Task() | 构造一个新的Timer Task对象。 |
Boolean cancel() | 结束该任务。 |
Abstract void run() | 这个方法必须被一个包含Timer时间执行的代码的方法重载。 |
Long scheduledExecution Time() | 返回任务上一次执行的确切时间。 |
我们可以通过不同schedule的方法来确定什么时候执行任务,包括在一个指定的时间执行一次和那个时间后按照一个固定的时间间隔连续执行。也可以在一段延迟(单位是毫秒)后执行任务,还可以选择以固定的时间间隔连续执行。
2.4.4 网络
MIDP包含对CLDC中的GCF(Generic Connection Framework),即通用连接框架的支持,MIDP规范只是要区分必须实现HTTP的连接。如果想开发的是基于无线网络的高性能的多人联网游戏,这非常值得考虑应用。目前的情况是,无线网络的传输情况是高延迟以及高丢失率,所以响应时间在50ms的游戏很难实现。通用连接框架使用静态工厂类Connector去创建和返回一个连接。如图2-1
所示是所有类型的类层次图。
图2-1 类层次图
图2-1 通用连接框架包含丰富的多功能的通信类;但是MIDP只确保支持HttpConnection。
2.4.5 使用Connector
通用连接框架设计包括一个超级Connector的概念,这个Connector作为一个支持任何连接类型的工厂,基本上来说,调用Connector类的静态方法open即可,把需要连接的资源的名字作为参数传递过去,这个名字应该采用“协议: 地址: 参数”的格式。
第三章 手机游戏开发过程
3.1 贪吃蛇游戏的规则简介以及开发环境
3.1.1 贪吃蛇游戏的规则简介
在贪吃蛇游戏中,玩家操作由小方块连接而成的蛇,去吃随机散落在画面内的小方块,每吃一块就增加一小方块长度,要是撞壁以及撞自己的尾,就属于失败,如无失败则直到通关为止。
屏幕的长度的行向为11单位,纵向为18单位。在这个范围内,玩家通过操作方向键来控制蛇的运动方向。该游戏的最大特色是屏幕自适应,无论各种手机,PDA的屏幕大小如何,该游戏总是能获得最佳的显示效果。
3.1.2 开发环境
(1)开发的硬件环境:CPU C1.7HZ/Maxor 40G/DDR 256M/CD-ROW 40X
(2)开发软件:JDK1.3和J2MEWTK
3.2 详细设计
本游戏的操作流程(如图3-1):用户在启动MIDlet后,即进入游戏主画面,屏幕开始显示为欢迎画面。用户按下[开始]按钮后,就可以开始玩游戏。当用户想暂停时,再次按一下[开始]按钮,游戏就暂停了,在暂停的情况下再按[开始]按钮,游戏继续运行。任何时候按[退出]按钮,游戏MIDlet都会终止。
图 3-1操作流程
图3-3游戏区域
图 4-2 游戏失败的两种情况
如果您在计算机领域有任何疑虑或不确定的地方,请毫不犹豫地与老师交流噢,我们期待着为您提供有针对性的建议和指导。您的问题和讨论对我们来说都非常重要。