基于J2ME的RPG小游戏的设计与实现.docx

上传人:b****6 文档编号:6206705 上传时间:2023-01-04 格式:DOCX 页数:18 大小:239.01KB
下载 相关 举报
基于J2ME的RPG小游戏的设计与实现.docx_第1页
第1页 / 共18页
基于J2ME的RPG小游戏的设计与实现.docx_第2页
第2页 / 共18页
基于J2ME的RPG小游戏的设计与实现.docx_第3页
第3页 / 共18页
基于J2ME的RPG小游戏的设计与实现.docx_第4页
第4页 / 共18页
基于J2ME的RPG小游戏的设计与实现.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

基于J2ME的RPG小游戏的设计与实现.docx

《基于J2ME的RPG小游戏的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于J2ME的RPG小游戏的设计与实现.docx(18页珍藏版)》请在冰豆网上搜索。

基于J2ME的RPG小游戏的设计与实现.docx

基于J2ME的RPG小游戏的设计与实现

 

毕业设计(论文)

 

题目

基于J2ME的RPG小游戏的设计与实现

系(院)

计算机科学技术系

专业

计算机科学与技术

班级

学生姓名

学号

指导教师

职称

 

基于J2ME的RPG小游戏的设计与实现

摘要

手机通讯时代已经到来,手机游戏产业得到迅猛的发展,手机游戏正在变成互动、交流、娱乐的重要媒介之一,并且越来越受到青少年的青睐。

该课题旨在设计并开发一款有利于青少年身心健康的手机游戏。

该课题所研究闯关类手机游戏是RPG类手机游戏中的经典类型,该课题通过制作一款简单有趣的RPG类手机游戏,给出了开发RPG类手机游戏的完整的软件架构。

课题对RPG游戏的实现算法和技巧进行了详细的阐述,对于代码的重用和游戏的扩展具有很好的借鉴意义。

本课题对游戏的优化进行了研究,详细说明了手机游戏优化的必要性,对一些实用优化方法进行了分析。

关键词:

J2ME;RPG游戏;局部刷新;软件架构

TheDesignandDevelopmentofMobilePhonePuzzleGameBasedonJavaME

Abstract

Withtheadventofmobileage,mobilegamesindustryhasarapiddevelopment.Andthemobilephonegamesarebecomingoneoftheimportantwaysofinteractive,communicationandentertainment.Ithastakenthefancyoftheyoungpeople.

Thesubjectaimedatthedesignanddevelopmentofphysicalandmentalofyoungpeopleofamobilegame.ThesubjectcategoryofmobileRPGgamesisaclassicmobilephonegame,itgivenacompleteproductionprocessofthetypeofRPGmobilegame.

Thesubjectisalsodescribedindetailoftherealizationofalgorithm.Thisisagreatsignificanceofcodereuseandextensionofothergames.Andthesubjecthasbeenstudiedindetailoftheoptimizationmethodsandmadeanumberofpracticaloptimizationmethodsofthegame.

Keywords:

J2ME;RPG;Partialrefresh;Softwarearchitecture

目录

摘要I

AbstractII

目录1

第一章引言1

1.1研究的背景和范围1

1.2研究的目的1

1.3课题研究的预期结果1

1.4课题研究的地位、作用和意义2

第二章理论依据、试验基础和研究方法的阐述3

2.1J2ME的体系结构3

2.2MIDlet及其运行机制4

2.3本课题的开发环境5

第三章游戏的软件总体设计与设计思想7

3.1游戏的总体要求7

3.2游戏的主要模块的功能7

3.3游戏程序的设计思想8

第四章游戏的详细设计10

4.1游戏流程设计10

4.2游戏类的设计及功能10

第五章游戏的具体实现12

5.1闪屏的实现12

5.2主菜单的实现13

5.3RMS系统的实现14

5.4游戏类算法与实现15

5.4.1游戏界面的具体设计15

5.4.2游戏过关的算法15

5.5游戏说明类的实现16

5.6游戏声音控制类的实现16

第六章游戏优化技巧的研究18

6.1手机游戏优化的必要性18

6.2代码的优化技巧18

6.2.1合理利用“垃圾回收器”18

6.2.2优化资源文件19

6.2.3使用代码混淆器优化内存19

6.2.4对paint()方法的优化19

6.2.5静态变量的使用19

6.2.6局部刷新20

结论21

参考文献22

谢辞23

第一章引言

1.1研究的背景和范围

通信无限畅通时代已经到来,手机以其快捷便利的特点极大的满足了人们交流的需求。

手机已与现代生活紧密地结合在一起。

与之同时,手机用户越来越注重手机提供的娱乐质量,调查表明,人们尤其是年轻人使用手机的部分需求是玩手机游戏[1]。

消费者希望手机尽可能的整合一些娱乐功能,特别是游戏功能。

手机游戏正在快速的走进每个手机用户的生活。

如果需要源代码联系我

近年来,各种手机游戏平台的成熟和完善使得高质量的手机游戏的生产成为现实。

集成在手机等移动信息设备中的J2ME平台能够出色的完成手机游戏各种苛刻的条件,所以开发基于J2ME的手机游戏已成为开发人员和手机制造商的首选[2]。

手机游戏市场的发展导致了手机游戏需求量的迅猛增长,手机游戏制作业的偏快发展,很大程度上缺少开发经营规范和游戏内容是否健康有益的监督。

有一部分手机游戏不利于青少年的健康成长,很多家长和老师十分担心手机游戏也会像电脑网络游戏一样给青少年带来负面影响[2]。

所以开发出既能娱乐身心,又能开发智力的手机游戏势在必行。

并且手机游戏市场需求中,对RPG类手机游戏的需求占很大一部分。

1.2研究的目的

RPG类手机游戏具有很强的娱乐性和趣味性。

在上述基础上,本课题准备开发一款简单有趣的RPG类手机游戏。

着眼于J2ME技术在手机娱乐上的应用,开发一个基于MIDP2.0的手机RPG游戏程序,并介绍了游戏的结构分析和具体功能的实现。

游戏的界面和运作方式,尽力模拟手机的普遍性形式,成为一个完整的手机游戏。

本课题针对市场上开发小型手机游戏缺少有效的优化方法,提出一些实用的优化技巧。

1.3课题研究的预期结果

本课题旨在开发一款RPG类手机闯关游戏。

其主要目的就是为了娱乐身心。

它采用目前最流行的J2ME平台。

使用的开发工具有NetBeans6.1,WTK2.5.2。

支持类型为MIDP2.0,CLDC1.1。

开发出的闯关游戏是RPG类游戏中的典型类型,具有很强的娱乐性和趣味性。

玩家通过按键操作游戏的进行,过关之后可直接进入下一关。

游戏可以暂停和继续游戏。

游戏中有声音并有声音控制。

本课题将设计出一个完整的、科学的RPG类手机游戏,并就每个功能模块的实现方法给出详细的阐述,对某些技巧和算法做出细致的解释说明。

此外,本课题还将详细说明手机游戏优化的必要性,并提出几种实用的优化方法。

如果需要源代码联系我

1.4课题研究的地位、作用和意义

本课题将制作一款集娱乐性和趣味性于一体的手机RPG类游戏。

并且要规范化编程,使用户界面和操作更加的合理和人性化。

本课题设计的特点如下:

(1)游戏老幼皆宜,娱乐身心。

(2)游戏可以随时存档退出或继续游戏,不会因中断而必须重新开始游戏。

(3)游戏引擎的合理设计和用户高级界面的充分利用,使得玩家时刻感受到游戏快速响应。

(4)本设计将通过精致的美工设计吸引玩家的注意力。

(5)将运用Java多线程的编程机制。

(6)将通过人性化的操作设计,随时开启或关闭游戏的音效。

(7)将通过独立的闪屏来显示玩家成功通关所用的时间,并显示其他历史最好的记录。

做成之后,本课题将一般手机开发具有通用性和指导性。

本课题对RPG游戏每个功能模块做出详细的阐述,这对今后RPG类手机游戏的开发起很大的作用。

本课题还将分析几种实用的优化方法,这对今后类似软件的制作提供参考价值。

第二章理论依据、试验基础和研究方法的阐述

2.1J2ME的体系结构

Sun公司的Java目前有三个平台,即J2EE(Java2EnterpriseEdition)、J2SE(Java2StandardEdition)和J2ME。

作为平台,J2EE定位于服务器端,J2SE定位于客户端,J2ME则定位于嵌入式系统。

它们都要基于Java虚拟机(JVM)才能运行。

J2ME采用模块化的结构,底层是宿主机的操作系统,内部则分为三层,JavaVirtualMachine(虚拟机层);Configuration(配置层);Profile(简表层)。

J2ME有两类虛拟机:

CVM(C虚拟机)和KVM(K虚拟机),CVM功能比KVM功能更为强大;Configu-ration层:

Configuration是J2ME对于嵌入式设备的规范,在这些规范中,定义了设备至少要符合的运算能力、供电能力和内存大小等规范,按照规范一般把嵌入式设备分为CLDC和CDC两大类。

Profile层:

这一层对于用户和程序开发人员来说是最常见的。

Profile中定义了与特定嵌入式设备紧密相关的扩充类库,这些扩充类库是建立在Configuration所定义的核心类库基础上的,它是架构在Configuration之上的规范。

针对移动电话内存小、速度慢和I/O差的特点,J2ME对JVM、Configuration和Profile三层做了特殊的实现。

在JVM层,J2ME在手机上移植了KVM(KilobyteVirtualMachine),只需要几百KB的内存就可以运行;在Configuration层,J2ME规定了CLDC(ConnectedLimitedDeviceConfigutation),它对设备的运算能力和内存大小都有具体的限制。

CLDC不支持浮点运算;在Profile层,J2ME规定了MIDP(MobileInformationDeviceProfile)。

MIDP定义了在手机上运行的Java程序的规范,包括应用程序生命周期、各种UI界面组件、支持Record存储数据和HTTP连接等等,这些在CLDC的基础上的附加功能是通过扩充新的Java类库来实现的。

J2ME通用结构与手机中的J2ME结构之间的对应关系如表所示。

 

表2-1J2ME通用结构和用于手机的J2ME结构之间的对应关系

用户程序

应用程序

应用模型层

MIDP

配置层

CLDCJAVA核心PI

JAVA虚拟机层

KVM

本地操作系统

手机操作系统

J2ME的通用结构用于手机的J2ME结构

2.2MIDlet及其运行机制

在MIDP的上层的应用程序被称为MIDlet。

这些MIDlet在底层CLDC的支持下,通过MIDP中提供的包获得更多的功能。

MIDlet可以直接使用MIDP本身提供的类库以及MIDP从CLDC中继承的那部分API。

MIDlet程序的运行是由startApp(),pauseApp()和destroyApp()这3个方法控制的。

它们都在javax.microedition.midlet.MIDlet中定义。

所有的MIDlet都必须实现这3个方法。

startApp()方法用于标志一个MIDlet的开始执行,与HelloWorld程序的Constructor不同,startApp()不光是在初始化完一个MIDlet时执行,只要该MIDLet被从Paused态激活变为Active态,startApp()就会被调用。

pauseApp()方法标志着MIDlet进入Pause态,而destroyApp()方法标志着MIDlet进入destroyed态[10]。

MIDlet的执行是通过AMS(ApplicationManagementsoftware)来管理的[11]。

AMS是位于操作系统级别上来管理MIDlet运行的底层机制的总称,所谓MIDletstate(MIDlet)状态就是它控制管理的.MIDletstate确保了AMS随时可以销毁该MIDlet,同时MIDlet请求进入Pause态,当需要时再次激活。

MIDletState分为Paused,Active,destroyed三种状态。

当AMS创建一个新的MIDlet实体时,对应于MIDlet,表现为其constructor被调用,进入Paused状态。

当所有的准备工作都做好后,AMS判断现在MIDlet可以运行了,于是调MIDlet.startApp()方法,进入Active态。

当AMS决定要把MIDlet转入Paused态,就会调用MIDlet.pauseApp()方法,MIDlet就会暂停执行,通常Paused态会用于释放所占资源。

当AMS判断不再需要某个MIDlet实体时,就会调用MIDlet.destroyApp()把它销毁掉[12]。

2.3本课题的开发环境

开发J2ME手机游戏程序,有很多开发工具,本课题采用NetBeans6.1、JDK和WTK进行开发。

JDK是Java开发工具包(Javadevelopmentkit)的缩写,使用Java必须安装JDK。

J2ME是Java语言的一种,所以在安装其他J2ME开发工具之前,也必须安装JDK。

本课题采用的JDK是JDK1.6.0。

WTK的全称是SunJ2MEWirelessToolkit,它是Sun公司提供的无线开发工具包。

此工具包是为了帮助开发人员简化J2ME的开发过程而设计的。

该工具包包含了完整的生成工具、实用程序以及设备仿真器。

使用WTK工具开发的J2ME应用程序可在兼容“JavaTechnologyfortheWirelessIndustry(JTWI,JSR185)”规范的设备上运行[13]。

本课题采用的WTK的版本是WTK2.5.2版。

在这个版本中,WTK全面的支持JTWI规范,同时也可以使用该版本开发面向CLDC1.0和MIDP1.0的应用程序。

系统要求上,WTK2.5.2至少需要50MB的可用硬盘,128MB的系统RAM和800MHZPentiumⅢCPU。

在实际应用中,仅仅使用Sun公司提供的WTK还不够。

想开发更适合某种手机的应用程序,还需要有手机厂商提供的SDK。

我们可以这样理解各手机厂商提供的SDK:

它在WTK的基础上增加了自己的模拟器和自己的扩展API(应用程序接口)。

厂商的SDK提供了额外的针对其手机性能的扩展类库和模拟器。

每个厂商提供的SDK是不同的。

本课题采用Nokia的SDK,Nokia厂商对J2ME的支持是一流的。

NetBeans是一个全功能的开放源码JavaIDE,可以帮助开发人员编写、编译、调试和部署Java应用,并将版本控制和XML编辑融入其众多功能之中。

NetBeans可支持Java2平台标准版(J2SE)应用的创建、采用JSP和Servlet的2层Web应用的创建,以及用于2层Web应用的API及软件的核心组的创建。

此外,NetBeans最新牒还预装了两个Web服务器,即Tomcat和GlassFish,从而免除了繁琐的配置和安装过程。

所有这些都为Java开发人员创造了一个可扩展的开放源多平台的JavaIDE,以支持他们在各自所选择的环境中从事开发工作,如Solaris、Linux、Windows或Macintosh。

第三章游戏的软件总体设计与设计思想

3.1游戏的总体要求

(1)运行平台

本课题软件目标运行平台为所有支持CLDC1.1、MIDP2.0,屏幕分辨率不小于176×208的手机设备。

(2)界面要求

游戏的每个界面要求精致、美观,所有界面采用高级界面和低级界面相结合绘制。

(3)速度要求

要求在满足平台需求的各手机上运行时画面流畅,声音播放正常,操作无延迟感。

(4)游戏规则

玩家通过移动人物,使用人物的技能打败怪物而完成游戏。

3.2游戏的主要模块的功能

(1)闪屏模块

实现打开游戏时的动画,用来显示软件的名称、版本和其他信息,用户可按键跳过闪屏进入菜单界面。

并且闪屏显示的版本信息是使用线程绘制上去的,字体具有阴影效果。

(2)主菜单模块

玩家通过主菜单界面可选择新游戏、继续游戏、游戏说明、高分纪录、声音控制和退出游戏选项。

(3)游戏界面模块

游戏进行的界面,玩家通过按键进行操作,并可以看到自己所用的时间。

(4)高分纪录模块

用来显示历史上的最少用时。

(5)游戏结束模块

只有玩家通关后才会出现,它显示玩家过关所用的时间和历史上的最少用时。

(6)游戏说明模块

介绍游戏的情况和游戏的操作方法等。

3.3游戏程序的设计思想

在游戏中我们要MIDP用户界面,所谓“用户界面”是指设备内的应用程序与用户之间的机制。

MIDlet的事件处理分为高级与低级事件处理。

MIDP所提供的javax.microedition.lcdui包用于手机用户界面与应用。

LCDUI包的体系如图3.1所示。

图3.1LCDUI包的体系

Screen类属于高级图形用户界面组件,Canvas是低级图形用户界面组件,在同一时刻,只能有唯一一个Screen或者Canvas类的子类显示在屏幕上,我们可以调用Display的setCurrent()的方法来将前一个画面替换掉,我们必须自行将前一个画面的状态保留起来,并自己控制整个程序画面的切换。

同时我们可以运用javax.microedition.lcdui.Command类来给我们的提供菜单项目的功能,分别是:

Command.BACKCommand、Command.CANCEL、Command.EXIT、Command.HELP、Command.ITEM、Command.OK、Command.SCREEN和Command.STOP,我们在Displayable对象中定义了addCommand()和removeCommand()两个方法,这就意味着我们可以在高级UI和低级UI中同时使用Command类,同时我们通过注册Command事件来达到事件处理的目的,即Command必须与CommandListener接口配合使用才能反映用户的动作。

Screen类的主要结构如图3.2所示。

图3.2Screen类的结构

第四章游戏的详细设计

4.1游戏流程设计

图4.1是这个游戏的流程设计,主要是对游戏的功能有一个很直观的显示。

图4.1游戏流程设计

4.2游戏类的设计及功能

下面分别对游戏中设计的类和功能做一个描述。

MainMidlet类——游戏的启动

MenuCanvas类——游戏菜单类

SplashScreenCanvas类——游戏加载画面

BulletSprite类——生成子弹并控制其行为

EnemySprite类、PlayerSprite类、MainSprites类三个类控制所有人物精灵的移动以及其他行为!

ToolSprite类——道具生成类

gamePass类——控制游戏上下关的类

gameStore类、gameGuan类——用来控制游戏进度和关数的存储!

SoundEffects类——游戏音乐的控制类

InfoBar类——用于生成滚动字幕

第五章游戏的具体实现

5.1闪屏的实现如果需要源代码联系我

闪屏类的设计考虑在闪屏运行时玩家可以通过按键跳过闪屏。

闪屏在启动游戏时出现,显示一张图片和游戏的名称版本,并且2秒钟后自动结束。

效果如图5.1所示:

图5.1闪屏效果图

闪屏类SplashScreen.java继承了Canvas类,初始化时加载图片并创建一个线程。

首先使用Canvas.getHeight()方法和Canvas.getWidth()方法获得屏幕的高度和宽度,并将这两个值传入drawImage()方法中绘制图片,实现了对分辨率的自适应。

闪屏的线程启动后,系统对是否已经运行闪屏进行判断,如果闪屏还没有加载图片等资源,系统将给它分配资源。

在绘制版本号和游戏名称的阴影效果时,我采用了增减坐标的方法进行绘制。

//将文字绘制在(centerX,CenterY-1)坐标处;

drawText(g,centerX,CenterY-1);

//将文字绘制在(centerX,CenterY+1)坐标处;

drawText(g,centerX,centerY+1);

//将文字绘制在(centerX-1,CenterY)坐标处;

drawText(g,centerX-1,centerY);

//将文字绘制在(centerX+1,CenterY)坐标处;

drawText(g,centerX+1,centerY);

经过上述四步的绘制,就会在屏幕上实现文字的阴影效果,并且,可以在某两步之间修改画笔的颜色,这样可以实现文字的彩色阴影。

为了实现用户通过按键跳过闪屏,通过Runable接口,我在keyPressed(intkeyCode)方法中采用如下策略:

//对keyPressed(intkeyCode)进行重写

publicsynchronizedvoidkeyPressed(intkeyCode){

if(!

dismissed){//如果闪屏正在运行

dismissed=true;//闪屏停止运行

midlet.splashScreenDone();//转入主菜单

}//if执行完毕

}//keyPressed执行完毕

玩家在闪屏运行时进行了按键,那么系统调用splashScreenDone()方法用来装载主菜单。

此时,Java语言的垃圾回收器会将闪屏所占用的资源进行回收[8]。

5.2主菜单的实现

闪屏结束之后进入主菜单界面,用户通过主菜单可以进入新游戏,继续游戏,游戏说明,声音控制和退出游戏。

效果如图5.2所示。

图5.2初次运行的主菜单效果图

游戏菜单的设计是整个游戏的开始,首先进行必要的变量初始化。

接下来就是游戏进行的代码编写。

每次开启新游戏的时候,首先便是游戏的菜单。

具体算法如下:

publicstaticFontmFont=Font.getFont(Font.FACE_SYSTEM,Font.STYLE_PLAIN,Font.SIZE_LARGE);

staticGraphicsEffectsge=GraphicsEffects.getInstance();

staticSoundEffectsse=SoundEffects.getInstance();

protectedStringhelpStr="游戏背景:

"+"\n\n"+"代表世界正义的奥运福娃们,在森林中玩耍,不小心有四个被不法之徒所逮捕,从而上演一个福娃挽救四个哥哥,同时为寻回奥运圣火的历险记。

"+"\n\n"+"操作方法:

"+"\n\n"+"游戏中用方向键和2、4、6、8键控制主角移动以及进行菜单选择,5键或OK键选定,1键英雄可以释放技能,右软键调出操作菜单,可保存游戏、暂停游戏、继续游戏或退出游戏。

"+"\n\n"+"关键提示:

"+"\n\n"+"玩家每次打死一个Boss后将得到一个道具,每个都有其特殊的作用。

注意玩家的技能的使用次数使用限制的,只有不断的通过道具来补充魔法值才能持久使用。

";(初始化完毕)

publicMenuCanvas(MainMidletmidlet)

publicstaticvoidloadResourc

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

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1