温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
2023
毕业设计
正文
第一章 引言
[1]
x 出厂时所有应用程序并操作系统都已固化在硬件中,不能增、删、改,要想获得新的效劳,必须再购新机。如果不小心将固化程序删改,还可能导致机子报废;
l 访问互联网是通过WAP(Wireless Application Protocal),所有网络资源必须接通网络才能在线访问,非常耗时,费用也高。
而Java技术在这方面的优势非常明显:
l 应用程序可按需下载,可升级空间大;
l Java技术提供了一个类库,它使的应用开发商可以创立更为直觉、丰富的用户界面(GUI);
l Java技术使网络带宽的应用更为有效,因为应用程序可以下载到器件上,并在本地运行,仅仅是在连接到效劳器时才会占用网络带宽。
1.1.3[7]
1.2 J2ME概述
1.2.1 J2ME的形成[1]
1998年1月,在Sun的实验室里启动了Spotless工程,以研究Java编程语言应用于资源受限的设备。Spotless工程的产品化版本就是现在众所周知的K虚拟机(K Virtual Machine ,KVM)。后来摩托罗拉、诺基亚、西门子、NTT DoCoMo和RIM等其他移动设备制造商和运营商参加到KVM开发阵营。JCP(Java Community Process)在1999年9月10月先后公布了移动信息设备简单MIDP和互联受限设备配置CLDC两个标准,后来又陆续发布了其他一些标准,这些标准成果形成了Java平台微型版本(Java 2 Platform ,Micro Edition,J2ME)。
因为J2ME应用在不同设备上都是便携式的,而且 Java被设计成一种平安的语言,所有字节码应用在执行之前都要校验。它的这些非常重要的特征对所有组织都有益。
1.2.2 J2ME体系结构概述[1]
J2ME所面对的是大量不同的设备,它们在外观和功能上均各不相同。J2ME在对这些设备进行分类时,将一些共性提取出来形成适合于某个范畴中设备可用的标准称为配置(Configuration),包含虚拟机和核心的类库;J2ME将某一行业或领域内设备的特性提取出来,形成简表(Profile),指的是某个行业或某个领域内特定的特性总结。
J2ME分为两个配置:一个是CDC(Connected Device Configuration),另一个是CLDC(Connected Limited Device Configuration)。它们所针对的设备的CPU和内存是不一样的,所以它们所使用的虚拟机和核心类库也不相同。
简外表向配置之上的纵向设备,定义了配置之上受支持设备的类型。
在CDC上目前定义了Foundation Profile、Personal Basis Profile等简表;在CLDC上定义了Mobile Information Device Profile(MIDP)等简表。本文要介绍的程序就是在MIDP2.0的根底上编写的。
1.3 本章小结
第二章 开发环境搭建
2.1 开发工具概览
操作系统: Microsoft Windows XP SP2
程序语言: Java 2
开发工具: Java(TM) 2 Platform Standard Edition (J2sdk 1.5.0)
JBuilder 2023
Photoshop cs
Motorola SDK
上述工具的安装与环境的配置很简单,且不是本文重点,故不再赘述。
2.2 关于JDK
JDK 是整个Java的核心,提供了虚拟机来运行程序。它包括了Java运行环境(Java Runtime Envirnment), Java根底的类库(rt.jar),以及编译器、打包工具、文档生成器和查错工具等根本组件。不管什么Java应用效劳器实质都是内置了某个版本的JDK。最主流的JDK是Sun公司发布的JDK。
2.3 关于WTK[2]
2.4 关于JBuider 2023[3]
JBuilder是Borland公司开发的针对Java的开发工具,拥有众多的开发者。使用JBuilder将可以快速,有效的开发各类java应用,它使用的JDK与SUN公司标准的JDK不同,它经过了较多的修改,以便开发人员能够像开发Delphi应用那样开发java应用。JB7和JB8通过参加mobile set包并且和Nokia开发平台相集成的方法开发MIIDP程序,JB9已将JDK与WTK集成在软件中。JBuilder2023是JBuilder系列的最新版本。
2. 4 关于Photoshop cs 和Motorola SDK
2. 5 本章小结
本章针对要开发的程序介绍了相关的软硬件环境及开发工具。
第三章 作品概况、结构及相关技术
3.1游戏特点详述
1、本游戏名叫荣耀飞车,基于MIDP2.0设计开发。其中用到了Game包等MIDP2.0新增的特性。游戏实现了全新游戏、游戏帮助、游戏存储和读取、退出游戏等根本功能,还参加了金钱、经验、不同的车辆等RPG元素,更有充满趣味的称号、道具等系统。这些比较复杂的系统的参加,不但使程序用到了更多的根本技术,也使得开发者更要注重各个类之间的逻辑关系,才能准确地做出相应的效果,而不只是实现一些通用的根本功能模块就能完成任务。
2、本游戏是俯视角赛车游戏,游戏中会遇见山石、河流等障碍阻止选手顺利到达终点,但用户可以依靠熟练的操作、获得的称号,以及从赛道上得到的道具来克服困难。
3、菜单的实现方法放弃了相对简单的高级用户界面,采用复杂却灵活多变的低级用户界面技术。游戏中共有五个菜单,虽根本原理大同小异,但由于使用低级用户界面,使它们的外在表现丰富多彩,毫无重复之感。
4、作为设计核心的赛道地图采用新增GAME包中的“背景图层(TiledLayer)〞和“精灵(Sprite)〞技术,赛车始终在屏幕的下方,而地图自动以当前赛车速度向下滚动。在左上角可以看到车辆当前获得的道具数、生命值和速度;右上角显示剩余时间。时间耗尽或车辆生命值小于零,游戏失败。顺利冲过终点那么获胜,并根据剩余的时间和生命值获得相应的金钱经验。假设到达了某种条件,还能获得称号,对以后游戏有帮助。
5、主菜单上的读取游戏选项可将上次存储的游戏参数读出,并继续上次的游戏。
7、J2ME参考文献很多来自各大网站。
3.2 程序详细流程
程序采用面向对象的设计模式。各类是用与类名称相同的文件名存储的,且尽量用其实现的功能命名,以不致混乱。如主菜单类就用MainList命名。
进入游戏后,先出现LOGO画面,显示欢迎字样和作者信息,持续三秒,然后进入主菜单。选择“全新游戏〞后,填入ID,选择车辆,就进入“大厅〞这个主菜单后又一重要的导航界面。可以选择“进入比赛〞,选好跑道,就正式开始赛车游戏了。程序中的一个开关语句会根据用户选择的不同跑道调用不同的绘图函数,对背景的所有物体进行绘图。在主程序运行的线程中,画面刷新将以一定的频率采用双缓冲技术对屏幕重绘,实时反映整个游戏的进行状态。玩家控制的赛车就运行在主线程中,随屏幕刷新的频率而活动。在屏幕重绘的主程序中,将在每次的循环中判断假设干事件。如:玩家控制的赛车生命值点数,玩家是否与其它图层碰撞,玩家的道具是否已使用等,由此执行相应的代码产生正确的效果。比赛一开始出现三秒倒计时,然后用户就能控制赛车移动了。胜负判定后,出现“公告板〞显示本场游戏所获的金钱、经验,及得到或失去称号的提醒信息。“公告板〞界面的两个软键的功能分别是保存游戏和回到“大厅〞继续下一盘游戏。游戏详细流程图如下所示:
(图3.1 游戏详细流程图)
3.3 游戏相关技术
3.3.1 MIDlet [2]
在MIDP中,应用程序称为MIDlet,因为每个MIDP应用程序都需要继承自MIDlet类。MIDlet的生命周期定义了MIDlet的各种状态以及各种状态之间如何转换。它可以利用如图3.2的状态机清楚地对此进行说明。
(图3.2 MIDlet状态机)
MIDlet运行时,先由应用管理系统创立一个MIDlet的实例,再调用MIDlet.startApp()方法,MIDlet进入活动状态;通过调用MIDlet.pauseApp()使资源暂时可用于其他功能;应用管理系统认为不再需要MIDlet了,那么通过调用MIDlet.destroyApp()销毁程序。
3.3.2 Display类[1]
图形控件都是由Display对象管理的,每一个应用程序都会访问这一对象的惟一实例。该实例可以通过静态的Display.getDisplay()方法获得,该方法通常会把指向该实例的引用保存在一个成员变量里。setCurrent()方法用来为特定屏幕元素设置焦点,getCurrent()方法那么用来获取元素焦点。
MIDP2.0中增加了用于屏幕设置操作方法,如设置背景灯的方法flashBacklight()、设置振动的方法vibrate()等。本游戏中最常用到的是setCurrent()方法,用来将相应的类的绘图效果调出显示在屏幕上,是 切换游戏界面的重要方法。
3.3.3 J2ME高级用户界面和低级用户界面
用户界面(User Interface,UI)是用户与应用程序进行沟通的渠道,应用程序通过UI将自己所具有的功能,通过一定的方式呈现给使用者。
UI又分为高级UI和低级UI。高级UI从类库的角度讲又叫高级API,使用极其简单,只要调用类库中现成的方法,即可方便地做出列表、文本框等界面。但它有非常明显的缺陷,即表现形式不灵活,程序开发者不能精确地按自己的需要和创意来控制屏幕元素,十分死板。而游戏正是要求精确和创意,所以本程序的绝大局部界面都用低级UI来做。
低级UI又叫底层API,它对图形元素定位和控制的灵活精确,以及可以获得低级输入事件的功能,得益于从Displayable类继承下来的Canvas类。Canvas提供了键盘事件,并定义了允许将键盘按键映射为游戏控制键的函数。同时Canvas类可与高级API类交互,程序可在需要时在Canvas中掺入高级类的组件。本程序就在ID输入和帮助文档的显示两方面用到了高级类组件。
类Graphics提供了相应的在Canvas上2D绘图的能力。它具有24位深度色彩的绘制能力,以三原色分别各占一个字节表示其颜色。图像绘制的最终位置由Graphics对象`的来源决定。有一个比方,Canvas类相当于画布,Graphics类相当于画笔。Graphics对象的绘制目标包括用户设备显示屏和屏幕外图形缓冲区,在Canvas类中定义的paint()方法,是Graphics对象能够获取绘制画布屏幕目标的唯一方式,并且应用程序只能有paint()方法的运行期间使用这个Graphics对象并绘制图形;Image对象也可以用作Graphics对象的绘制目标,通过调用这个用作缓冲图象的getGraphics方法来获得绘制的Graphics对象。Graphics类中有很多绘制图形或文本的方法,具体用法在API中有标准,文献[1]、[2]、[4]、[5]、[6]和[9]中有侧重点不同的介绍。
3.3.4 MIDP 2.0 新增Game包[1] [5]
在MIDP 1.0中,游戏开发者只能使用Canvas进行游戏编程。尽管Canvas为游戏开发者提供了各种灵活的界面控制API,开发者的游戏程序设计仍是一个很复杂的工作,对开发者的时间和精力都是极大的浪费。MIDP2.0新增的Game API包括5个类:GameCanvas类,Sprite类,Layer类,TiledLayer类和LayerManager类。用它们可以省去了开发者们许多不必要的麻烦。上述几个新类本程序中均有用到。
GameCanvas类提供游戏根底用户界面,它与Canvas类相比有两点不同:拥有屏幕缓冲和可以直接得到设