游戏软件的设计毕业论文_第1页
游戏软件的设计毕业论文_第2页
游戏软件的设计毕业论文_第3页
游戏软件的设计毕业论文_第4页
游戏软件的设计毕业论文_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、摘 要随着手机的日益普及和Java功能在移动通信设备上的实现,用户对手机游戏的需求越来越多了,J2ME(Java 2 Micro Edition)作为一种手机游戏开发技术应运而生。它定位在消费性电子产品的应用上,针对移动设备的智能化、多样化,提供了革命性的解决方案,并因其“Write once,run anywhere”的Java特性而大大提高了开发的效率。本论文着眼于J2ME开发技术的应用,为纪念1950年抗美援朝中牺牲的志愿者英雄们,特此开发了一款老少皆宜的经典作品飞机大战,此游戏运用标准的MIDP应用模型,具有开始、暂停、销毁三种状态,把构建好的游戏界面嵌入到整个游戏框架中来进行游戏。进

2、行游戏时,需要对按键做出响应来控制程序。最后,根据玩家成绩决定是否要显示在排行榜中。此游戏形象地描述了整个战争的过程,在使游戏给我们带来欢乐的同时,也没有忘记曾在战场上牺牲那些英雄们。关键字:J2ME;手机游戏;飞机大战AbstractWith the increasing popularity of mobile phones and the implementation of Java technology on mobile equipment,the need of mobile games for users is more and more. Then J2ME(Java 2 Mi

3、cro Edition) as a mobile game development technology comes into being. It focuses on application for consumptive electronic products, providing revolutionary solution to the intellectualization and diversification of the equipment. And because of its "Write once, run anywhere" features of

4、Java greatly enhanced the efficiency of development.This article introduce the application of J2ME. In order to commemorate the sacrifice of the volunteers heroes for war to resist US Aggression and Aid Korea occurred in 1950 and has developed a commercial game suite all people-planes war. This game

5、 is to use standard MIDP application model and has start、pause、destroy three states. Embed a good game interface builded in the framework of the entire game. When playing games, there is a need to respond to the buttons to control the process. Finally, according to the scores of players to decide wh

6、ether to show results in the list. This game describes vividly the whole procedure of the war, making players pleasure and not forgetting those dead heroes on the battlefield.Key words:J2ME; mobile game; planes war目 录摘要IAbstractII第1章 绪论1第1节 手机游戏发展现状1第2节 手机游戏特征1第3节 开题背景及研究内容与意义2第4节 本章小结2第2章 开发环境及相关知识

7、介绍3第1节 J2ME介绍3第2节 运行环境3第3节 开发环境的配置4第4节 本章小节6第3章 系统总体设计7第1节 本程序需要解决的主要技术问题7第2节 程序流程8第3节 游戏程序框架9第4节 本章小节10第4章 系统功能设计11第1节 游戏界面的实现11第2节 排行榜的实现15第3节 帮助、关于界面和退出的实现16第4节 程序打包17第5节 本章小节19结论20参考文献21附录22致谢2526 / 30文档可自由编辑打印第1章 绪论第1节 手机游戏发展现状在这个网络游戏发展的时代,手机游戏看似冷门其实却隐藏着巨大的潜力。2002年网络游戏红遍全世界,此后网络游戏开始飞速发展,而手机游戏也随

8、之慢慢萌芽。有专家预测,这个新兴事物也许以后将成为取代网络游戏的又一热门技术,不过现在我们还需作足观望。然而,虽然手机游戏的发展趋势前景广阔,但目前手机游戏市场还远未成熟,隐藏在其背后的是网络综合服务、网络兼容、游戏质量等不容忽视的问题,需要更多的技术人员通过学习研究完善。第2节 手机游戏特征一个手机游戏应该具有以下特征:1.易于学习:手机游戏面向的是大众消费者而非计算机专家,所以保持游戏的简单是最基本的要求。2.可中断性:多任务处理是手机生活方式的基本特征。手机用户常常在任务(如等一个电子邮件或者等车)之间有一小段时间。而游戏、日历管理、通讯和工作数据访问使用的是同一个设备。所以一个好的手机

9、游戏应该提供短时间的娱乐功能,并且允许用户在游戏和工作模式之间顺利切换。3.基于订阅:手机游戏的盈利成功取决于他们巨大的使用量。一开始开发和设计每个游戏都是昂贵的。如果一个手机游戏开发者要赢利的话,重要的是同一个游戏引擎,多个标题,基本的故事情节类似。4.社会交互强:不管一个游戏设计得多好,只要玩家找到了它的根本模式或者玩完了所有的游戏路径很快就会厌烦这个游戏。对于一个基于订阅的游戏,重要的是与别的玩家合作以增强所玩游戏的智力和随机性。在今天纷繁复杂的多玩家游戏中具有丰富社会交互的游戏证明是成功的。5.利用手机技术的优点:巨额的手机技术研发费用都花在提高设备和网络的可用性和可靠性上面。因此,手

10、机设备硬件和网络协议与桌面/控制台世界(如全球定位系统(GPS)扩展、条形码扫描仪、和短消息服务(SMS)/多媒体信息服务(MMS)通讯)有着非常大的差别。好的手机游戏应该利用那些更新的设备特征和网络基础设备的优点。第3节 开题背景及研究内容与意义抗美援朝发生在1950年6月25日到1953年7月28日期间,是中华人民共和国为保卫中国安全而进行的战争。起初为粉碎以美国为首的“联合国军”对朝鲜的侵犯,以彭德怀为司令员兼政治委员的中国人民志愿军进行时鲜参战,连续进行两次战役,歼灭5万多余人,把敌人赶到三八线附近,接着又进行数次战役,美国的“细菌战”遭到失败。最后中国人民志愿军配合停战谈判,1953

11、年7月27日,时鲜停战协定在板门店签字。抗美援朝战争结束。这款名为飞机大战的手机游戏,以此来纪念为抗美援朝战争牺牲的志愿英雄们。以J2ME为核心技术开发的飞机大战手机游戏,游戏采用标准的MIDP应用模型,具有开始、暂停、销毁三种状态,游戏在手机模拟器上构建出游戏界面,并将这个界面嵌入整个游戏的大框架里进行游戏里,即出现了整个游戏的界面,游戏进行时,需要对按键做出相应的响应来控制程序。最后在游戏结束时来判断玩家的分数在记录里是不是前5名,如果是,则将玩家的分数存档,即显示在排行榜中姓名及成绩。整个游戏是按游戏控制流程图编写的,一方面增加了游戏的可玩性,另一方面可以加强我们对抗美援朝志愿者英雄们的

12、忆念。第4节 本章小结本章第一部分主要介绍了手机游戏发展现状和手机游戏包括易于学习、可中断性、基于订阅、社会交互强、利用手机技术特点五个特征。第二部分指出本游戏开发的背景,提出本文研究的内容即利用J2ME技术开发此游戏具体是如何实现及编写本游戏的意义。第2章 开发环境及相关知识介绍第1节 J2ME介绍虽然Java已经被用到许多企业级软体上,可是其实骨子里面还是非常适合用在嵌入式系统之中。Java平台演进到Java2后,Java平台分别针对不同领域的需求被分成四个版本,亦即J2EE、J2SE、J2ME以及Java Card。其中J2ME定位在消费性电子产品的应用上。这个版本针对资源有限的电子消费

13、产品的需求精简核心类库,并提供了模块化的架构让不同类型产品能够随时增加支持的能力。这个版本的应用层面相当广泛,会是未来Java平台发展的重点项目。J2ME在1999年的Java One开发人员大会上初次亮相,它的目标是面向智能无线设备和小型计算机设备的开发人员。J2ME的一个关键优点是,J2ME与所有支持Java的设备都是兼容的。支持Java的设备就是任何运行Java虚拟机器的计算机。Motorola、Nokia等生产厂商都生产支持Java的设备。J2ME平台是由配置(Configuration)和简表(Profile)构成的。配置是提供给最大范围设备使用的最小类库集合,在配置中同时包含Jav

14、a虚拟机。简表是针对一系列设备提供的开发包集合。在J2ME中还有一个重要的概念是可选包(Optional Package),它是针对特定设备提供的类库,比如某些设备是支持蓝牙的,针对此功能J2ME中制定了JSR82(Bluetooth API)提供了对蓝牙的支持。第2节 运行环境MIDP应用程序的运行环境分为硬件环境和软件环境。下面我们分别进行分析。1.硬件环境:根据MIDP规范的要求,硬件设备至少有128KB的RAM,一部分存储MIDP规范,一部分存储CLDC配置,其它用于Java堆的内存分配。在MIDP1.0中堆的大小为32KB,MIDP2.0中堆的大小为128KB。另外还要求硬件设备至少

15、具有8KB的ROM(只读存储器),它可以确保在设备关闭的情况下也能保存一些数据。显示方面,一般小型设备的显示屏幕都比较小,MIDP规范中规定大小至少有96像素宽和54像素高,并且至少支持两种颜色。输入设备比较复杂,可以有包含文字和数字的完备键盘,可以是提供一种手写输入的触摸屏,也可以是一些数字输入键组成的小键盘。以移动电话为例,它包含数字按键,字母的输入都集成在数字按键中,还包括一些方向按键。2.软件环境:操作系统:Microsoft Windows XP程序语言:J2ME安装:Jdk-6u10-rc2-bin-b32-windows-i586、SunJavaWirelessToolkit2.

16、5.201、EclipseSDK3.3.2用于手机游戏开发的环境不是只建立一个java sdk就可以了,它还需要一个库类,叫 java toolkit。首先安装java sdk再在原来的目录下安装java toolkit这个新的环境就可以满足我们的需要了。然后我们编写一个最简单的程序用来验证这个环境是否可以用来编写我们的手机程序。第3节 开发环境的配置3.1JDK安装JDK 是整个Java的核心,包括了Java运行环境(Java Runtime Environment),一堆Java工具和Java基础的类库(rt.jar)。基本组件包括:·javac 编译器,将源程序转成字节码;&#

17、183;jar 打包工具,将相关的类文件打包成一个文件;·javadoc 文档生成器,从源码注释中提取文档;·jdb debugger,查错工具1。JDK的安装按照JDK的提示来安装即可,安装完之后设置环境变量:右键点击我的电脑属性高级环境变量系统变量新建。如图21所示。图21设置环境变假设我们的jdk安装在d:jdk_1_5_0_04由系统变量java_home=d:jdk_1_5_0_04。classpath=.;%java_home%libdt.jar;%java_homelibtools.jar最后在path中添加 %JAVA_HOME%bin(说明:设置执行命令,

18、注意:原先的path后面没有分号的话,必须再将%JAVA_HOME%bin改为;%JAVA_HOME%bin)即可。3.2 WTK安装1)WTK(Wireless Tool Kit)是Sun公司针对J2ME推出的用于手机和Palm等移动设备的开发包,是除手机厂商的专用开发包外唯一的手机模拟器开发包,它通用性高,开发出的应用程序可保证能运行在大部分设备上,而不像专用厂商具有一定的不兼容性2。虽然它没有强大的功能和完善的调试手段,但它提供运行模拟器的最基本组件,是其他IDE需集成采用的必备元素。2)安装WTK在安装WTK过程中,需要选择安装路径即Java虚拟机的位置和目标位置,如图22所示。选择好

19、路径后,点击Next,安装完成后,点击Finish安装完毕。图22 选择目录3.3 Eclipse安装Eclipse是一个开放源代码的、基于Java的可扩展开发平台3。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(Java Development Tools,JDT)。安装Eclipse只需要按提示即可,安装完后,并不能直接以此平台来编写源代码,还需要安装插件和添加模拟器4。首先Help-Software updates-Find and Install选择Search for new feature

20、s to install项,点击Next,如图23所示。图23 添加插件点击“New Archived Site”选择需要添加的Eclpiseme插件即可。接着导入模拟器,Window-Preferences出现Preferences画面,在J2ME选项中,点击Device Management后点击Import把WTK选中刷新,点击Finish即可。第4节 本章小节本章主要介绍此游戏运行环境需求包括软件环境和硬件环境。第二部分主要讲解游戏环境配置的过程,包括安装软件的先后次序及其相应各软件的简单介绍。最后对安装的软件进行测试,检验是否安装成功。软件安装过程依次为JDK(环境变量的配置)、WT

21、K和eclipse的安装。第3章 系统总体设计第1节 本程序需要解决的主要技术问题1.1为使游戏更好更顺利的运行,需要解决的问题如下:由于本游戏是手机游戏,手机的内存是有限制的,因此要考虑图片存储,代码利用率的问题。游戏界面要求尽量的符合本游戏的背景,不仅美观,更需要适用性强,在游戏运行时,要考虑双方飞机前进时是否发生了碰撞,以免重叠运行,游戏运行过程中,要有开始、暂停、结束等必不可少的状态。此外,游戏结束时,往往会添加英雄排行榜,以增强玩家的兴趣。1.2针对以上考虑的各种问题,本游戏中的解决方案如下:1.游戏程序是一项精度要求很高的程序系统,因为其代码利用率很高。一个实时运行的最终作品,每秒

22、都会运行成千上万行程序,绘图事件、键盘事件都会以极高的频率在后台等待响应,若有丝毫的差别都将很容易导致程序在运行不久后可能出现严重错误,甚至死循环。因此,其逻辑设计应当相当严谨,需将所有可能发生的事件及意外情况考虑在设计中。2.游戏中为了美观,适用性强,可能需要采用外部文件引入的图片贴图,使得静态或动态、画面背景、屏幕刷新的双缓冲等都有较好的解决方案。3.双方的飞机在前进时也需要考虑到是否碰撞到对方飞机,以免重叠运行,造成许多物理上不可能的情况,缺乏真实感。每一次刷新页面、每前进一步都需要进行相关的碰撞检测。4.为了增加界面的美观,在程序中添加了白云。由于手机屏幕大小有限,所以白云的数量和出现

23、的位置要经过相关的设置,才能实现白云不规则出现的效果。5.游戏的地图不可能通过绘图来解决。需要使用地图编辑器,把地图中相同的图片组成一张PNG格式的图片,然后像拼图一样拼出地图来。6.游戏的结束、开始、动态信息画面作为构成一个程序都是必不可少的重要部分。良好的用户界面更是吸引用户的硬指标,相关的美术构图和人性化设置也需要有一定的考虑。7.游戏往往都有英雄排行榜,这就需要在游戏完成时有个最高分数的相关记录。这部分可以使用数组根据比较来得出最终的分数排行榜。第2节 程序流程MIDlet suite是MIDP应用程序的最小单位5,JAM负责将手机内的MIDlet suite以图形化的方式呈现,让用户

24、能够选取欲执行的MIDlet suite,一旦选取了某个MIDlet suite,操作系统就会激活KVM执行里面的MIDlet。MIDlet及相关的支持类组成了MIDP应用程序的实际内容。而每个MIDlet都必须继承javax.microedition.midlet.MIDlet这个抽象类。在MIDP规范中定义了MIDlet的生命周期,以及可以存在的三种状态,包括Paused、Active以及Destroyed,每一个MIDlet在任何时刻只可能处于其中的一个状态。这三种状态的转换关系如图31所示:MIDlet有三个状态,分别是pause、active和destroyed。在启动一个MIDle

25、t的时候,应用管理软件会首先创建一个MIDlet实例并使得它处于pause状态,当startApp()方法被调用的时候MIDlet进入active状态,也就是所说的运行状态。在active状态调用destroyApp(boolean unconditional)或者pauseApp()方法可以使得MIDlet进入destroyed或者pause状态。值得一提的是destroyApp(boolean unconditional)方法,事实上,当destroyApp()方法被调用的时候,AMS通知MIDlet进入destroyed状态。在destroyed状态的MIDlet必须释放了所有的资源,并

26、且保存了数据。如果unconditional为false的时候,MIDlet可以在接到通知后抛出MIDlet State Change Exception而保持在当前状态,如果设置为true的话,则必须立即进入destroyed状态。消减状态Destroyed停止状态Paused运行状态ActiveStartAppDestroyApp呼叫MIDlet的构造函数PauseApp()DestroyApp()图31 MIDlet的流程本程序采用面向对象的设计模式,对游戏中的所有物体赋予对象的概念和属性6。运行程序后允许用户选择执行选项菜单,在开始游戏后将先从外部文件载入地图文件,对背景的所有物体进行

27、绘图。在主程序运行的线程中,画面刷新将以一定的频率采用双缓冲技术对屏幕重绘,实时反映整个游戏的进行状态。游戏开始后先绘制地图,并将各个对象实例化。在主程序运行的线程中,游戏中所有的对象都应该运行在同一个线程下。当敌人或者用户的子弹达到射程范围后,并不删除子弹对象,而是使用setVisible(false)使其不能显示,当用户或敌人再次发射子弹时,只需使用setVisible(true)设置成可以显示即可。在屏幕重绘的主程序中,将在每次的循环中判断若干事件,以便程序进入相关的分支执行相关的反映代码。如:玩家剩余飞机数是为0、敌人、玩家飞机是否被击中、屏幕上相关信息的绘制等。程序为完成独立功能的模

28、块提供了单独的类。_Let类继承自Midlet,gameScrenn类、MenuScreen类继承自GameCanvas,mybullets继承自Sprite类,ScoreScreen继承自Canvas。程序生产首先启动的是游戏介绍的画面。点击ok后调用MenuScreen类画面显示菜单。如果选择进入游戏,则调用gameScreen类,并且中止MenuScreen类中的线程运行,以提高运行速度。Mybullets类为玩家子弹类。ScoreScreen类为排行榜的类。第3节 游戏程序框架游戏程序的基本结构应该包括:游戏主流程控制、游戏场景、游戏对象和用户操控7。在飞机大战游戏中,游戏场景比较简单

29、,只需要一块不断移动的地图块即可,游戏对象比较复杂,有飞机、子弹、白云、碰撞后的烟云,用户可以操作玩家飞机左右、上下移动并发出子弹与敌军作战。至少流程控制,初始时游戏场景没有任何敌机,随着游戏的进行,敌机出现,程序控制出现的敌机使用户操作玩家飞机与之对战,直至敌机消失;当玩家飞机四次被炸后,游戏结束。从数据上分析,需要几个表示游戏对象的类和一个表示游戏场景的类。从程序上分析,需要一个游戏流程控制类实现控制游戏的进度,以及响应用户的输入操作,及时检查玩家飞机是否还有机会,检查游戏是否结束。从技术上分析,游戏场景的设计需要低层用户界面设计的游戏画布类,用户操纵需要低层用户界面中对按键的响应处理。第

30、4节 本章小节本章主要介绍了一下本游戏所有要解决的主要问题及其相应的解决方案、介绍程序的流程停止状态、运行状态和消减状态及整个游戏程序的框架分别从数据、程序和技术方面分析了游戏实现需要的类。第4章 系统功能设计第1节 游戏界面的实现1.1游戏画布为了能使程序开发人员控制接口的外观和行为,需要使用大量的初级用户接口类,尤其在游戏程序中,几乎完全依赖的就是Canvas抽象类进行绘图8。从程序开发的观点看,Canvas类可与高级Screen类交互,程序可在需要时在Canvas中掺入高级类的组件。Canvas提供了键盘事件、指点杆事件(如果设备支持),并定义了允许将键盘按键映射为游戏控制键的函数。键盘

31、事件由键代码指定,但这样控制游戏会导致缺乏通用性,并不是每个设备的键盘布局都适合游戏的操作。根据本游戏的设计特点,利用本原理应当将键代码转换为游戏键的代码,以便硬件开发商能定义他们自己的游戏键布局。本游戏系统中的GameSrceen类和MenuSrceen类都直接或间接地继承自Canvas类,并实现了接口Runnable和CommandListener,并用commandAction()对按键进行相应的响应。MenuSrceen类表示进入游戏时的主菜单供用户选择,当用户按住上下键进行选择时,用户输入响应函数keyPressed(int code),整型变量menuIndex相应的减1或加1,相

32、应的,在paint()函数中会根据menuIndex绘制选项是否被选中。并执行run(),按用户的选择点击ok时,对应的commandAction()方法来响应调出相应地界面。如“关于”“排行榜”等。GameSrceen类表示游戏界面,在此界面中gameScreen类要实现游戏相关设置,地图的移动、飞机的飞行、飞机的碰撞等,GameSrceen类中主程序的逻辑如图41所示。在游戏中,如果在游戏进行时需要用到相应的精灵,首先得将需要控制的精灵实例化。gameScreen类包括了LayerManager,这样所有静态和动态的图象都不需要手动刷新,只需要在LayerManager中加入所有的需要控制

33、的精灵,再统一由LayerManager刷新即可。进入游戏y1>-1550pzbzover=0显示敌人玩家被击落了吗 ?玩家是否还有机会?继续游戏是否过关返回主界面YYNYYN图41 gameScreen类主要关系流程图N1.2 游戏精灵游戏精灵即在游戏中需要控制的对象,继承自Sprite类9。在此游戏中需要实现对象的移动、翻转及碰撞等问题。精灵的移动在此游戏中,如玩家子弹是创建子弹状态数组private intbullets,其中,i0代表子弹的X坐标,i1代表子弹的Y坐标,i2代表子弹Y方向速度,i3代表子弹存活状态。类中定义的方法setfirstposition()起到定义玩家子弹

34、发射坐标的作用。方法newposition()实现的功能为更新玩家的子弹位置,并且检测玩家子弹与普通敌人的碰撞及记录玩家战果。再如地图对象,在此游戏中创建地图就需要使用TiledLayer。TiledLayer指的是由一块一块类似用瓷砖拼凑起来的画面。地图实际即为TiledLayer的一个对象。先利用TiledLayer的构造函数建立TiledLayer,根据构造函数的参数可以给定Cell数组 的大小,并且地图图片切割成等尺寸的画面,并调用setCell()设置具体的图象格内容。创建一个返回TtiledLayer的方法createBackGround(),以便在gameScreen()的构造函

35、数中调用。1.3 精灵的碰撞检测Sprite定义了精灵之间碰撞检测的方法,当两个精灵的边界相互重叠时返回true,否则返回false。两个精灵碰撞如图42所示。 图42 碰撞界面游戏进行中,需要进行玩家飞机、子弹与敌机及敌机子弹与玩家飞机的碰撞检测,即使用函数collidesWith(Sprite,boolean)。由于设计的问题,玩家发射的子弹与普通敌机的碰撞检测被写在了mybullets类中,并且只检测子弹是否与敌人相碰撞,如果碰撞为真时,则使用setVisible(false)函数将敌机隐藏,使用setImage()函数将子弹精灵的三张图片置换为爆炸图片。当敌人剩余飞机消失后,即所有的敌

36、人都飞出了屏幕后,使用函数setVisible(true)将敌机重新设置为可见。在按“开火”键时,使用setImage()函数将huokebullets重新设定为子弹图片。敌机与玩家的碰撞检测原理同上,都是使用的collidesWith()函数。1.4 游戏暂停、继续和返回程序与用户的交互是通过命令触发监听器来实现的10。当我们在游戏中需要控制游戏的运行时即需要暂停时,需要Screen子类的实例实现CommandListener接口,该接口声明的commandAction方法作为响应用户命令的处理过程。在本游戏中,我们在每一命令定义一个对应的操作。建立命令监听器,监听用户的命令,当用户按下如图

37、42所示的“暂停”按钮时,监听器自动运行commandAction方法,方法的参数是Command类型和Diaplay类型的变量,分别表示用户激活的Command类实例和Diaplay类型的变量。即getlabel()=“暂停”时,游戏暂停。使用removeCommand(c)语句将“暂停”移除,使用addCommand(new Command)“继续”,Command.OK,2);将“继续”按纽添加进来。如图43所示。图43 继续当游戏进行到一定程度,即当“暂停”变为“返回”的时候,使用同样的方法点击“返回”键,返回主菜单选项。调用类_Let里的方法menuscreensecond(),在此

38、方法中,实例化一个MenuScreen类对象,并且使选项“新游戏”改变为“重新开始”。完成此项功能的语句子为MenuScreen.mainmenu0=“重新开始”。1.5 白云的实现原理为了游戏界面更加真实,程序中设定了精灵数组cloudi来表示白云,由于白云应该在所有飞机的上方,即cloudi应该最早被append()到LayerManager中。程序中设定白云数为5。首先设置白云的初始位置,其语句如下:cloud0.setPosition(25,planepoup-(65);cloud1.setPosition(80,planepoup-(140);cloud2.setPosition(1

39、12,planepoup-(90);cloud3.setPosition(175,planepoup-(200);cloud4.setPosition(223,planepoup-(70);白云位置设定后,使用move(0,1)使白云移动,如图44所示。图44白云移动界面使用if(cloud.getY()>planepo)判断白云是否飞出屏幕。如果为真则使用cloud.setPosition(cloudposition*40,planepoup)设置白云的位置,其中,cloudposition =aicloud.nextInt()%5,aicloud为Random()类对象。乘以40表示

40、其在X轴出现的范围是多少,cloud0、cloud1、cloud2、cloud3、cloud4乘以的值分别为40,30、55、15、22,以达成白云的随机出现效果。第2节 排行榜的实现在传统的服务器或普通PC上,持续性存储是由外存储器完成的,典型的设备就是常用的硬盘,随着个人计算机的发展,硬盘也得到了很大的发展,我们可以很方便、很经济地获得大容量的硬盘。但在以手机为典型设备的手持电子设备中,提供持续性存储的资源比较匮乏。为此,需要一种统一管理的机制来管理这种持续性存储资源。在J2ME中,这种机制就是记录管理系统(Record Management System RMS)11。玩家游戏结果记录就

41、是用RMS来管理的。RMS具有DBMS的特征,即RMS组织数据是按照行列的方式进行组织的,每一条信息在RMS中表现为一条记录,类似于数据库一行,每一条记录可以包含多个数据,类似于数据库某一行中的多列。我们可以通过添加记录的方式将数据持久地保存在记录管理系统中。排行榜RankingList、newRocoredForm类都继承自Form类,是对玩家游戏结果的记录最高数的一种表示方式。如图45所示。图45 排行榜界面根据玩家们的游戏结果recordStore.getNumRecords()来判断其所要得到的分数,再根据以往里的记录来进行比较,从而每一游戏者结束游戏时,在屏幕上显示出姓名及分数同时,

42、还记录在RMS中。即从历史最高分依次类推得出英雄排行榜姓名和相应得分。第3节 帮助、关于界面和退出的实现帮助界面:为了使更多玩家在进行游戏之前,熟悉游戏的操作方式,所以特意在此增加了帮助模块,简单介绍了游戏的操作方式,目的就是让玩家能掌控整个游戏的进程,此模块的实现原理很简单,即用事先声明好的Form类,实例化Form类,再向其中添加需要说明的文字即可,诸如a.append(new StringItem(null,“操作方式:上 2 下 8 左4 右 6 开火 5”),设置命令监听器CommandListener以此来响应“OK”按钮。如图46所示。图46 帮助界面关于界面:此模块是对游戏本身

43、的相关介绍,包括游戏的名称、版本号、制作者。实现原理同帮助界面是一样的,如图47所示。图47 关于界面退出:此模块是在打开游戏主界面后直接退出游戏的直接办法,点击“退出”即可。实现原理即在退出命令按钮设置命令监听器CommandListener来响应退出程序。第4节 程序打包使用Eclipse完成代码的调试之后,使用WTK生成包(即jar和jad文件)12。其过程如下:首先,使用WTK的新建项目功能建立一个新项目,要求与Eclipse工作区下的项目名称、MIDlet类名相同,如图48所示。图48 创建项目新建项目后,将Eclipse工作区下的.java文件拷入src文件夹,将.class文件拷

44、入class文件夹(需要新建),将pic文件夹拷入res文件夹,点击生成,如一切正常,将如图49所示。图49 项目生成之后,选择项目-包-生成包,如图410所示。图410 打包生成的jar和jad文件存储在fjdz1/bin目录下。打包的过程,实际上就是让游戏本身脱离具体的开发环境而能在手机模拟器运行的过程,使之真正能达到移植到小型移动设备上运行的功能。运行手机顽童模拟器for J2ME,使用手机模拟器进行测试。如图411所示,选择你要进行测试的游戏,进入如图412的界面,即可以进行游戏测试了。 图411 手机模拟器 图412 游戏开始界面第5节 本章小节本章主要介绍了游戏界面、游戏精灵及各精

45、灵间碰撞的检测、图层管理和游戏的排行榜、帮助、关于界面等功能实现原理。第二部分主要讲述了程序编译运行之后的打包在手机模拟器运行的过程。结 论这款作为我的毕业设计的名为飞机大战的手机游戏,是本人目前设计过的最有意义的开发程序,这期间对J2ME的学习,出于一项任务,从完全不懂到简单了解再到熟悉掌握的过程,使我尝尽了其中的酸、甜、苦、辣的同时,更多的则是对掌握新知识的惊喜。学习J2ME的困难远远超出了想象,在设计初期,为了配置一个简单的J2ME的环境,就让我足足花费了好长一段时间,包括上网查资料和向同学寻问以及去书馆查找资料,都没让我整明白,最后还是跟一个只见过一次面的朋友通过远程协助帮我完成了测试

46、。在设计阶段,为了解决游戏界面和主菜单的相互转换、代码的重复利用还有最后排行榜的输出,就让我竟然熬了几个夜。还有就是由于对知识掌握的不是很牢固,所以在写代码时,总得翻书查书找相应知识点的语句及关键词诸如使用到的线程、Game包的新功能、RMS、高级、低级图形页面的使用等,这才使自己有了印象。值得安慰的是,尽管自己对J2ME掌握不够熟悉,但是Internet给我提供了很广阔的搜索空间,使我有什么问题及时得到解决,同时也学到了好多的相关知识。还有好多从事手机游戏开发的朋友们都给予我的很大帮助。使我攻破了各种困难,最后如期地看到了令人满意的作品。参考文献1 杨建 杨军,精通J2ME嵌入式软件开发 M

47、,北京:电子工业出版社,(2007)2 龚剑,J2ME手机游戏开发详解 M,北京:电子工业出版社,(2008):25333 威尔斯,J2ME游戏编程游戏开发经典丛书 M,北京:清华大学出版社,(2005):36404 王森,Java手机/PDA程序设计入门 M,北京:电子工业出版社,(2005)5 蔺勇,陈炜,J2ME移动电话编程模式的研究 M,北京:计算机工程与设计,(2004):6 Bruce Eckel,侯捷,Java编程思想 M,北京:机械工业出版社出版社,(2005) 7 Jason Lam,J2ME&Gaming M,北京:电子工业出版社,(2004):56788 Jame

48、s Keogh,J2ME开发大全 M,北京:清华大学出版社,(2004):45679 何敏,基于J2ME的手机游戏开发模式研究 D,上海,复旦大学,200810 莫尼逊,J2ME手机游戏编程入门 M,北京:人民邮电版社,(2005):24725011 陆昌辉,曾健,熊帅,周魏,J2ME应用开发详解 M,北京:电子工业出版社,(2009):36037012 杨秋霞,基于J2ME手机游戏开发 J,计算机时代,2005,(05):34附录import javax.microedition.lcdui.*;public class MenuScreen1 extends Canvas implemen

49、ts Runnable,CommandListener Font lowfont=Font.getFont(Font.FACE_MONOSPACE,Font.STYLE_PLAIN,Font.SIZE_LARGE); Font highfont=Font.getFont(Font.FACE_MONOSPACE,Font.STYLE_BOLD,Font.SIZE_LARGE); int lowColor=0x000000FF; int highColor=0x00FF0000; int highBGColor=0x00CCCCCC; int width; boolean co; int heig

50、ht; int startHeight; int spacing=highfont.getHeight()/2;public static String mainmenu="新游戏","排行榜","帮助","关于" int menuIndex;Thread menuThread;private Command ok=new Command("ok",Command.OK,1);private _Let midlet;public MenuScreen1(_Let midlet)this.midlet=midlet;width=getWidth();height=getHeight();st

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论