基于J2ME技术的手机游戏开发——疯狂赛车毕业论文.doc

上传人:laozhun 文档编号:3938523 上传时间:2023-03-28 格式:DOC 页数:76 大小:808KB
返回 下载 相关 举报
基于J2ME技术的手机游戏开发——疯狂赛车毕业论文.doc_第1页
第1页 / 共76页
基于J2ME技术的手机游戏开发——疯狂赛车毕业论文.doc_第2页
第2页 / 共76页
基于J2ME技术的手机游戏开发——疯狂赛车毕业论文.doc_第3页
第3页 / 共76页
基于J2ME技术的手机游戏开发——疯狂赛车毕业论文.doc_第4页
第4页 / 共76页
基于J2ME技术的手机游戏开发——疯狂赛车毕业论文.doc_第5页
第5页 / 共76页
点击查看更多>>
资源描述

《基于J2ME技术的手机游戏开发——疯狂赛车毕业论文.doc》由会员分享,可在线阅读,更多相关《基于J2ME技术的手机游戏开发——疯狂赛车毕业论文.doc(76页珍藏版)》请在三一办公上搜索。

1、南 京 工 程 学 院毕业设计说明书(论文)专 业: 电子信息科学与技术 题 目: 基于J2ME技术的手机游戏开发 疯狂赛车 毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作 者 签 名: 日 期: 指导教师签名: 日期: 使用授权说明本人完全了解 大学关于收集、保存、

2、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名: 日 期: 学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。作者签名: 日期:

3、年 月 日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。涉密论文按学校规定处理。作者签名:日期: 年 月 日导师签名: 日期: 年 月 日指导教师评阅书指导教师评价:一、撰写(设计)过程1、学生在论文(设计)过程中的治学态度、工作精神 优 良 中 及格 不及格2、学生掌握专业知识、技能的扎实程度 优 良 中 及格 不及格3、学生综合运用所学知识和专业技能分析

4、和解决问题的能力 优 良 中 及格 不及格4、研究方法的科学性;技术线路的可行性;设计方案的合理性 优 良 中 及格 不及格5、完成毕业论文(设计)期间的出勤情况 优 良 中 及格 不及格二、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范? 优 良 中 及格 不及格2、是否完成指定的论文(设计)任务(包括装订及附件)? 优 良 中 及格 不及格三、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义 优 良 中 及格 不及格2、论文的观念是否有新意?设计是否有创意? 优 良 中 及格 不及格3、论文(设计说明书)所体现的整体水平 优 良 中 及格 不及格建议成绩:

5、优 良 中 及格 不及格(在所选等级前的内画“”)指导教师: (签名) 单位: (盖章)年 月 日评阅教师评阅书评阅教师评价:一、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范? 优 良 中 及格 不及格2、是否完成指定的论文(设计)任务(包括装订及附件)? 优 良 中 及格 不及格二、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义 优 良 中 及格 不及格2、论文的观念是否有新意?设计是否有创意? 优 良 中 及格 不及格3、论文(设计说明书)所体现的整体水平 优 良 中 及格 不及格建议成绩: 优 良 中 及格 不及格(在所选等级前的内画“”)评阅教师:

6、(签名) 单位: (盖章)年 月 日教研室(或答辩小组)及教学系意见教研室(或答辩小组)评价:一、答辩过程1、毕业论文(设计)的基本要点和见解的叙述情况 优 良 中 及格 不及格2、对答辩问题的反应、理解、表达情况 优 良 中 及格 不及格3、学生答辩过程中的精神状态 优 良 中 及格 不及格二、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范? 优 良 中 及格 不及格2、是否完成指定的论文(设计)任务(包括装订及附件)? 优 良 中 及格 不及格三、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义 优 良 中 及格 不及格2、论文的观念是否有新意?设计是否有创

7、意? 优 良 中 及格 不及格3、论文(设计说明书)所体现的整体水平 优 良 中 及格 不及格评定成绩: 优 良 中 及格 不及格(在所选等级前的内画“”)教研室主任(或答辩小组组长): (签名)年 月 日教学系意见:系主任: (签名)年 月 日毕业设计说明书(论文)中文摘要J2ME 虚拟机在手机上的普及为手机游戏的发展提供了最适合的土壤。随着MIDP2.0包的发布,使得手机游戏开发者可以更专注于游戏性的增强而不再是繁琐的动画处理与地图设计,而开发过程变得更加方便迅捷。本文完整地描述了在 Eclipse 平台应用 J2ME 技术,特别是 MIDP2.0 中新增加的 GameAPI 在手机上实现

8、一个疯狂赛车游戏。核心在于其游戏引擎的构建,其中涉及到的技术有Midlet框架、赛道产生算法、游戏状态机和精灵等。关键字 J2ME MIDP 2.0 Game API Eclipse 疯狂赛车毕业设计说明书(论文)外文摘要Title Development of Cell Phone Game Based On J2ME Crazy Racing Car AbstractWidespread use of KVM on the cell phone promotes the development of cell phone game. The release of MIDP 2.0 enab

9、les game producer to concentrate more on improvement of game performance than effort in animation processing and map design. And the development progress becomes rapider and more convenient. The thesis introduces the J2ME technology of based on the integrated development environment of Eclipse. It i

10、s mainly about the implementation of a gameCrazy Racing Car. The core of the thesis focuses on the game engine construction. The technology concerned includes the MIDlet class, thread, spirits etc.Keywords J2ME, MIDP2.0, Game API, Eclipse, Crazy Racing Car目录第一章 绪论11.1 移动游戏的文化和业务11.2 移动平台简介21.3 关于本课题

11、4第二章 开发环境与主要技术52.1 开发平台52.2 主要技术62.3 术语及相关缩写解释14第三章 系统需求分析153.1 运行平台153.2 界面要求153.3 速度要求153.4 游戏具体需求15第四章 系统设计与实现184.1 整体框架184.2 游戏的启动管理204.3 游戏的主类的实现234.4 游戏闪屏的实现274.5 游戏菜单的实现304.6 游戏画布的实现334.7 赛道产生算法364.8 键控处理算法374.9 碰撞检测算法394.10 游戏角色的AI策略设计414.11 游戏引擎的实现42第五章 游戏测试455.1 打包455.2 下载测试465.2 BUG发现与测试总

12、结48第六章 结束语496.1 毕业设计的难点与创新496.2 毕业设计的收获49致 谢51参考文献52附录:英文技术资料翻译53第一章 绪论本章主要对发展中的移动游戏进行介绍,并对当前流行的移动平台进行简单的介绍。1.1 移动游戏的文化和业务移动游戏的发展远远落后与相应的PC机上的游戏,主要的困难在于移动设备的处理能力。但是由于掌上电脑和手机的最新发展正在快速改变这种现象,它们具备真正的计算能力但却小得可以放到随身口袋中。当前的移动游戏已经形成自己独有的文化和业务。1.1.1 移动游戏的文化短消息已经从全球范围内把我们联系起来,它的直接性超出了我们的想象;同样,手机游戏也搭建了一个舞台对视频

13、游戏的全部概念进行转换,其效果会令人震惊。这些话是不是有些过分夸张?我们来考虑一下这样一种情形:你能够和来自世界各地的人们一起参加一个大型的网络化的多玩家游戏,你可能是在一次郊游的休息时来做这件事。这个情形说明了一个关键问题,手机游戏能够通过一个移动介质,在任何时候把任何地点的人们连接起来让他们一起娱乐。现在这已经不是一个不切实际的梦想,这种游戏随着3G时代的到来已经悄然的在我们的身边出现。现在全球范围的多玩家网络游戏的思想并非新东西,人们在他们的桌面电脑上干这种事情已经很多年了。但那需要网络连接到其他的计算机,而这些计算机都很大无法自由移动。即使最轻巧的笔记本电脑也需要放置到平缓的表面上,还

14、需要接入某种无线网络。手机则能够装入的口袋中,并且默认地处于无线连接状态。它们使得轻松地加入和退出多玩家网络游戏成为可能。通过创建一个让游戏玩家来去更加自由的环境,随着游戏和相关技术的成熟,手机游戏的公共性方面可能成为最大的吸引力之一。手机痛信已经使得世界变得很小,而手机游戏则充当允许人们一起玩游戏而不关心其实际位置,从而使这种情况达到一种新的水平。手机游戏不但能够克服地理位置的障碍,而且能够突破语言和文化的障碍。人们不需要说相同的语言,也能够一起玩贪吃蛇。人们会设计出更多更富创意的游戏,从而游戏玩家之间的文化差异变得最小化。1.1.2 移动游戏的业务纵观IT产业的历史,计算机游戏已经成为技术

15、创新背后的动力之一。1998年诺基亚公司年发布了全球第一款手机游戏“变色龙6110”,内置贪食蛇、记忆力和逻辑猜图三款游戏,受到了全世界的欢迎,其他厂商纷纷跟进。计算机游戏者渴望更加强大的硬件计算能力;渴望不受不同的软件的限制无论是将图形强制在人工智能(AI)上还是网络安全性。游戏开发者和玩家常常是前沿计算机技术的最早的采用者。由于他们的创新天性,游戏不再是由大型采购公司控制的技术产品游戏领域总是有充足的空间给那些在这方面有天分的单个创新者。手机已经与现代生活方式紧紧地结合在一起。他们是最普遍携带的个人用品中仅次于钥匙和钱包的东西。传统的台式机游戏将目标锁定在低级趣味的人和青少年身上,而手机游

16、戏则每个人都可以访问得到随时随地。尽管每个手机游戏的价格都不贵,但是巨大的使用量(如:每人每星期一个新游戏)将使得这个市场商机无限。但是,对于开发者来说,将控制台游戏迁移到手机游戏工程很大。因为他们所面向的对象、生活方式和分布式模型都有着极大的区别。1.2 移动平台简介尽管手机游戏的格局的确会风云突变,但是占据主流的移动平台,因而在某种程度上是相当稳定的。主流的移动平台主要有: Java 2 Micro Edition (J2ME); Binary Runtime Environment for Wirless (BREW); Symbian; Windows Mobile Smartphon

17、e。所有这四种平台都得到了当前手机的支持,并且它们都以免费文档和工具的方式提供对开发者的支持。接下来将详细地讨论每个平台,介绍它们之间的区别。1.2.1 J2MEJ2ME 是Sun微系统公司流行Java编程语言的紧凑版本。J2ME包括一组开发工具和丰富的应用程序接口(API)以供开发手机应用程序,人们称为MIDlet。J2ME也包括K虚拟机,它负责协助Java字节码在每个手机上的执行,依靠通用的字节码而不是本地应用程序代码,J2ME能够开发的游戏程序的基本代码,并且能够移植到不同的手机而不需要太大力气01。事实上,如果不需要改变屏幕尺寸和图形显示能力,在J2ME手机之间移植一个游戏所需的工作几

18、乎是零。下面章节将详细介绍J2ME技术。1.2.2 BREWJ2ME得到广泛支持,与此不同的是BREW则是一个专门以基于高通公司的CDMA(Code Division Multiple Access,码分多址)技术的手机为目标的平台。这并不是说BREW不能得到相对较多的手机的支持。BREW开发者通常使用C或C+结合BREW API来开发BREW设备所需要的手机游戏。BREW也支持其他的软件开发技术,如XML甚至Java。和J2ME一样,BREW能够作为游戏和底层手机操作系统之间的一个中介。和J2ME不一样的是BREW也支持本地代码,这意味着游戏能够专门针对某一个手机的处理器而编译。本地代码游戏

19、通常比它们对应的解释版本要快许多,但是在设备之间移植它们需要技巧。BREW已经流行开来并且在亚洲的部分国家有数量惊人的用户群,包括在日本和韩国。在美国,Alltel和Version Wireless是支持BREW手机的领头无线通信服务提供商。1.2.3 SymbianSymbian是和BREW采取完全不同的方式的一种手机操作系统。它是一种开放的操作系统,任何设备制造商都能够获得使用许可。Symbian是由Symbian有限公司开发,该公司是由包括Motorola、Nokia、Panasonic/Ericsson在内的手机制造商组成的联合公司。Symbian当前得到众多手机的广泛支持,主要是因为

20、它相对容易获得许可02 。为Symbian设备开发手机游戏会有很多选择,因为Symbian支持C+、Java和Visual Basic等编程语言。当前的大多数商业Symbian游戏都是用C+开发并作为本地Symbian应用程序的,这使得它们和Java开发的游戏相比更快一些。事实上,Java已经使得Java程序和本地程序之间的性能差距渐渐缩小,但是一个纯粹的本地应用程序往往总是比一个Java程序的效率更高。这一点对于游戏程序来说特别重要,它们对额外的处理能力的要求是很刻的。1.2.4 Window Mobile SmartphoneMicrosoft公司的Windows Mobile操作系统多部

21、署在Pocket PC这样的手持计算机和Smartphone这样的高级设备上,微软公司已经从中看到了一些成功的迹象。尽管一些Pocket PC 有相当大的屏幕(240320),大都通过手写笔供用户输入。Microsoft公司是在等待时机直到手机技术能够跟上它们,因为它们最近发布的Smartphone,这是Windows Mobile操作系统的手机版本。这个操作系统的有趣之处在于,它并非是Pocket PC的缩微版本,它和前者的显著不同是用户界面根据手机的小屏幕和没有手写笔的特点而做出的变化。从手机游戏的开发者的角度来看,这就意味着可以使用在编写Pocket PC游戏时用到的工具和API。这通常

22、意味着要使用C、C+或C#编程语言并结合使用Windows Mobile API。Pocket PC游戏开发到现在已经发展了好几年,因此,从某些方面讲,Smartphone是一个显著的飞跃,尽管对于市场来说它是比较新的力量。在美国,Motorola和Samsung都是Smartphone手机的制造商,并且它们目前都得到AT&T Wireless和Verizon Wireless的支持。1.3 关于本课题本课题将在手机上实现一个单机版的赛车游戏,该游戏模拟PC机上的赛车游戏速度与激情,实现玩家与电脑的对战。本游戏使用J2ME技术构建了一个基本的游戏引擎,并利用人工智能技术实现了电脑的智能策略。第

23、二章 开发环境与主要技术本章主要对以Eclipse为核心的J2ME开发环境进行介绍,并对该课题开发过程中需要的J2ME技术、游戏人工智能技术和游戏基础进行详细介绍。2.1 开发平台本游戏的开发平台为:操作系统:Microsoft Windows XP程序语言:Java开 发 包:Java(TM) 2 Standard Edition (5.1) 模 拟 器:Sun Micro. J2ME Wireless Tool Kit2.5.1Nokia Series 40 5th Edition SDKIDE工具:EclipseSDK3.3.1IDE插件:EclipseME1.7.5关于本游戏的开发环境

24、安装配置过程比较简单,在此不再赘述。总体来说,JDK提供了虚拟机来运行应用程序,而WTK提供了模拟器,Eclipse及其它插件提供了个开发测试程序代码的IDE集成开发环境2.1.1 EclipseEclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。Eclipse相关的许可证是大多数基于Common Public License (CPL),CPL是一个为Open Source Initiative (OSI)所认可的许可证。由于Eclipse Foundation的建立,Eclipse的许可证将逐渐趋向于使用Eclipse Public License (EPL),EPL是一

25、个与CPL相类似的许可证,正在进行OSI的认证工作03。尽管 Eclipse 是使用 Java 语言开发的,但它的用途并不限于 Java 语言;例如,支持诸如 C/C+、COBOL 和 Eiffel 等编程语言的插件已经可用,或预计会推出。Eclipse 框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。2.1.2 EclipseMEEclipseME作为Eclipse一个插件,致力于帮助开发者开发J2ME应用程序。EclipseM

26、E并不为开发者提供无线设备模拟器,而将各手机厂商的实用模拟器紧密连接到Eclipse开发环境中,为开发者提供一种无缝统一的集成开发环境。通过安装它以使得我们可以在 Eclipse 下开发 J2ME 应用。我们可以像建立普通 Java Project 一样建立一个 J2ME MidletSuite,并调用 WTK 下的模拟器来运行或者调试它。2.1.3 Wireless ToolkitWTK(Wireless Tool Kit)是Sun公司针对J2ME推出的用于手机和Palm等移动设备的开发包,是除手机厂商的专用开发包外唯一的手机模拟器开发包。它通用性高,开发出的应用程序可保证能运行在大部分设备

27、上,而不像专用厂商具有一定的不兼容性。虽然它没有强大的功能和完善的调试手段,但它提供运行模拟器的最基本组件,是其他IDE需集成采用的必备元素。2.1.4 Java Application Manager手机中负责调配程序运行资源的管理后台是Java Application Manager。它所使用的传输媒体可以是红外线、网络、以及其他可用来传输的媒体。Java Application Manager 会从网络上下载代表该Application Suite 的JAR 档,接着在手机上安裝此MIDlet Suite,然后在手机开始执行该应用程序。2.2 主要技术2.2.1 J2ME技术概述1999

28、年6月,Sun正式向Java团体推出了J2me,并重新划分了Java 2的体系结构,目前主要包括面向桌面应用开发的Java 2平台标准版(Java 2 Platform Standard Edition,J2SE)、面向企业应用开发的Java 2平台企业版(Java 2 Platform Enterprise Edition,J2EE)、面向消费产品和嵌入式设备应用开发的Java 2 平台微型版(Java 2 Platform Micro Edition,J2ME)和Java卡平台。Java技术的体系结构如图2-1所示。图2-1 Java技术的体系结构J2EE、J2SE和J2ME构成了Java

29、的完整构架。至此,Java已经由单纯的编程语言发展到一种平台的高度。这三者的结合,可以将从服务器到台式机到移动设备的应用开发集中到一种技术之下。J2ME平台由多种配置(Configuration)、简表(Profile)和可选包(OptionalPackage)组成。平台的实现者和应用程序的开发者可以从中选择并组合出一个完整的Java运行环境来满足特定范围内的设备需求。每种组合都应该使用这一系列设备的内存、处理器和I/O能力达到最优化。J2ME专家组之所以采取这种灵活的设计结构主要是为了满足市场上不同种类的嵌入式设备的需求,这些设备在软件和硬件特性上都存在巨大的差异,一种规范很难将它们统一起来

30、。目前,J2ME平台主要包括两个配置:CLDC和CDC。 CLDC是两个配置中较小的一个,为具有间断性联网能力、较慢的处理器和有限内存的设备设计的。这些设备包括移动电话、双工呼叫器和入门级的PDA,它们通常具有16位或32位的CPU、128KB512KB可用于Java平台实现和相关应用程序的内存。 CDC是为处理器能力较强、内存空间更大、联网能力更出色的设备设计的。这些设备包括电视机顶盒、车载娱乐系统和高端PDA等。CDC包括一个具有完备特性的Java虚拟机,比CLDC更大的J2SE平台的子集。CDC的目标设备通常具有32位或者64位的处理器,2MB以上的可用于Java平台实现和相关应用程序的

31、内存。移动信息设备简表(MIDP)是为移动电话和入门级PDA设计的。它为移动应用程序提供了所需的全部核心功能,包括应用程序模型、用户界面、持久性数据储存、联网能力(在CLDC中定义,在MIDP中实现)及应用程序管理。目前应用非常广泛的MIDlet就是在MIDP中定义的。CLDC与MIDP组成的完备Java运行环境提升了手持设备的能力,并且尽可能最小化了设备内存和电源的消耗。2.2.2 J2ME APIMIDP规范是一套规则,它描述了在移动设备中进行Java编程的特性和局限性,其中主要是一套用于MIDlet编程的标准类和接口。MIDP规范详细描述了可用于MIDlet开发的API,CLDC也提供了

32、其他的API。MIDP API建立在CLDC API的基础之上,以提供更加针对移动信息设备的类和接口。可以认为CLDC为联网设备提供通用的Java API,而MIDP则进一步提供了更加详细的API,以填补CLDC API针对小型无线设备诸如手机和寻呼机所遗留的技术细节。2.2.2.1 CLDC APICLDC API中的大多数类直接引自标准的J2SE API。这些类和接口实际上等同于在传统的Java编程中所熟悉的那些类和接口。这部分CLDC API位于与J2SE中名称相似的包中,诸如Java.lang和Java.util。除了直接借用于J2SE API的类和接口外,CLDC API还有几个特殊

33、接口。这几个主要针对网络,尽管网络是J2SE API的一部分,但对于手机这类特殊的网络设备来说,这些接口更是不可缺少的。CLDC定义了一套接口,它们便于实现通用的网络,而把实施这些接口的细节留给了MIDP API。因此CLDC API逻辑上分成两部分: 一系列作为J2SE API的子集的包; 一套通用的网络接口。 CLDC与J2SE的不同之处在于它支持网络的部分,网络接口的描述罗列在一个叫做GCF01(General Connection Framwork,通用连接框架)的通用网络框架中。GCF的目的是定义一个通用的网络体系结构,以支持联网的I/O,它极其灵活因此具有可扩展性。GCF被设计成J

34、2SE网络类的功能子集,这意味着在GCF中描述的功能也能在J2SE中找到。GCF主要由一套连接接口组成,还有一个用于建立各种连接的Connetor。Connector类和连接接口均位于包Javax.microeditin.io中。2.2.2.2 MIDP API在设备配置的基础上设备框架会提供更具体的功能,以便给定的设备完成重要的任务。对MIDP而言,这种设备就是无线移动设备,如手机或寻呼机。因此MIDP API的任务是利用CLDC API并在它的基础上建立必要的类和接口,从而使构建一流的MIDlet变为可能。与CLDC API相似,MIDP API也分为两部分: 直接从J2SE API继承来

35、的两个类; 一系列包,包括只用于MIDP开发的类和接口。与CLDC API相似,MIDP API也借用于标准J2SE API。而大部分MIDP API是专为MIDlet编程使用而设计的新类和接口。虽然这些类和接口的作用与J2SE API中的一些类和接口相似,但他们是MIDP API独有的,是专为解决MIDlet具体的问题而设计的。这部分MIDP API包含在名字以Javax.microedition为前缀的几个包中。由于手机自今还没有硬盘驱动器或实质性的文件系统,不能依靠文件来存储持久的MIDlet数据。MIDP API描述了一个全新的方法去存储和检索持久的MIDlet数据,即RMS(Reco

36、rd Management System,记录管理系统)。MIDP RMS提供了一个简单的基于记录的数据库API,以持久存储数据,如最高分清单和需保存的游戏数据等。组成RMS的类和接口位于包javax.microedition.rm中。2.2.3 MIDlet内部结构MIDlet是用J2ME APIs开发的程序,用于移动计算环境中。MIDlet需要一个特殊的运行环境。这个环境主要包含一个应用程序管理器,它为在移动设备上选择和运行MIDlet提供方便。每个MIDlet都是从同一个标准类中派生出来的。这个标准类是MIDP API的组成部分,位于包javax.microedition.midlet中

37、,叫做MIDlet类。MIDlet类定义了几个方法,其中3个方法对开发MIDlet特别重要: startApp()启动MIDlet; pauseApp()暂停MIDlet; destroyApp()销毁MIDlet;MIDlet对应三个状态:Active(激活)、Paused(挂起) 和Destroyed(销毁),它们决定了MIDlet如何发挥作用。这些状态直接对应上述三个方法。消减状态(Destroyed)停止状态(Paused)运行状态(Active)StartApp()DestroyApp()呼叫MIDlet的构造函数DestroyApp()PauseApp()图2-2 MIDlet的流

38、程MIDlet suite是MIDP应用程序的最小单位,JAM负责将手机内的MIDlet suite以图形化的方式呈现,让用户能够选取欲执行的MIDlet suite,一旦选取了某个MIDlet suite,操作系统就会激活KVM执行里面的MIDlet。MIDlet及相关的支持类组成了MIDP应用程序的实际内容。而每个MIDlet都必须继承javax.microedition.midlet.MIDlet这个抽象类。在MIDP规范中定义了MIDlet的生命周期,以及可以存在的三种状态,包括Paused、Active以及Destroyed,每一个MIDlet在任何时刻只可能处于其中的一个状态。这三

39、种状态的转换关系如图2-2所示:MIDlet有三个状态,分别是pause、active和destroyed。在启动一个MIDlet的时候,应用管理软件会首先创建一个MIDlet实例并使得他处于pause状态,当startApp()方法被调用的时候MIDlet进入active状态,也就是所说的运行状态。在active状态调用destroyApp(boolean unconditional)或者pauseApp()方法可以使得MIDlet进入destroyed或者pause状态。值得一提的是destroyApp(boolean unconditional)方法,事实上,当destroyApp()方

40、法被调用的时候,AMS通知MIDlet进入destroyed状态。在destroyed状态的MIDlet必须释放了所有的资源,并且保存了数据。如果unconditional为false的时候,MIDlet可以在接到通知后抛出MIDletStateChangeException而保持在当前状态,如果设置为true的话,则必须立即进入destroyed状态。为了能有程序开发人员控制接口的外观和行为,需要使用大量的初级用户接口类,尤其在游戏程序中,几乎完全依赖的就是Canvas抽象类进行绘图。从程序开发的观点看,Canvas类可与高级Screen类交互,程序可在需要时在Canvas中掺入高级类的组件

41、。Canvas提供了键盘事件、指点杆事件(如果设备支持),并定义了允许将键盘按键映射为游戏控制键的方法。键盘事件由键代码指定,但这样控制游戏会导致缺乏通用性,并不是每个设备的键盘布局都适合游戏的操作。应当将键代码转换为游戏键的代码,以便硬件开发商能定义他们自己的游戏键布局。2.2.4 基于MIDP的图像绘制技术在没有MIDP2.0前,游戏绘图一般需要手动编程使用双缓冲。需要在paint()方法内将所想要画的图形画在一张预先准备好的背景上,等所有绘图操作都完成后再将背景的数据拷贝到实际的屏幕上。Image类提供了一个建立背景的静态方法createImage(int width, int heig

42、ht),再利用getGraphics()方法取得属于这个背景的Graphics对象,所进行的绘图操作都会作用在背景上,等到全部的绘图操作完成后,再调用drawImage()方法将背景的数据复制到实际显示的屏幕上。这样的技术在绘制动画时特别有用。绘制动画时经常需要不断地更新画面,而更新画面的操作就是先将屏幕以fillRect()的方式清除,再将下一张图片画在屏幕上,然而反复的清除及重绘会造成屏幕的闪烁现象(flicker)。因此使用双重缓冲的好处就是在后台进行这个清除及重绘的操作,再将完成的绘图拷贝到屏幕上。由于用户看不到清除的操作,因此就不会出现闪烁的现象了。不过在某些MIDP的实现上已经加上

43、了双重缓冲的支持,因此在处理前应先利用Canvas类的isDoubleBuffer()方法来判断。在MIDP2.0版本发布后,游戏移植性问题初步得到了解决。MIDP2.0新加入了GameCanvas、Sprite、Layer、LayerManager、TiledLayer五个与游戏开发相关的类,其中 Layer类一般不会直接用到。GameCanvas类继承自Canvas,所以具有Canvas所具有的功能,还额外增加了一些便于游戏设计的功能。比如: GameCanvas类直接提供了getKeyStates(),使程序员可以在同一个线程自己侦测按键的状态。GameCanvas类提供了flushGr

44、aphics()的功能,实现了双缓冲技术。Sprite类是继承自Layer的用于存储多帧的基本可视元素。不同的frame可交相显示,构成动态的效果。图片可翻转和颠倒,由一个游戏图片就可以方便的得到所有方向的显示状态,相比原先只能使用Canvas绘图,需要将所有方向的游戏图像都绘制在png图像中简化了许多。Sprite也可以从整合的图像中读图,读图时将把大图分解为若干等宽等高的小图。每个小图按照其排列顺序有相应的序号,在程序中调用其序号,就可以绘制出相应的图片。2.2.5 游戏开发基础当前的主流游戏分类方式,主要是从玩家角度来分类的02,手机游戏也不例外,主要包括: RPG(角色扮演)类,如Nokia的同名RPG(角色扮演)游戏Nokia

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号