基于j2mejavaplatmicroeditionrpg小游戏的设计与实现_第1页
基于j2mejavaplatmicroeditionrpg小游戏的设计与实现_第2页
基于j2mejavaplatmicroeditionrpg小游戏的设计与实现_第3页
基于j2mejavaplatmicroeditionrpg小游戏的设计与实现_第4页
基于j2mejavaplatmicroeditionrpg小游戏的设计与实现_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

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

文档简介

1、毕业设计(论文)题 目基于J2ME的RPG小游戏的设计与实现系 (院)计算机科学技术系专 业计算机科学与技术班 级学生姓名学 号指导教师职 称53 / 58文档可自由编辑打印基于J2ME的RPG小游戏的设计与实现摘 要手机通讯时代已经到来,手机游戏产业得到迅猛的发展,手机游戏正在变成互动、交流、娱乐的重要媒介之一,并且越来越受到青少年的青睐。该课题旨在设计并开发一款有利于青少年身心健康的手机游戏。该课题所研究闯关类手机游戏是RPG类手机游戏中的经典类型,该课题通过制作一款简单有趣的RPG类手机游戏,给出了开发RPG类手机游戏的完整的软件架构。课题对RPG游戏的实现算法和技巧进行了详细的阐述,对

2、于代码的重用和游戏的扩展具有很好的借鉴意义。本课题对游戏的优化进行了研究,详细说明了手机游戏优化的必要性,对一些实用优化方法进行了分析。关键词:J2ME;RPG游戏;局部刷新;软件架构The Design and Development of Mobile Phone Puzzle Game Based on Java MEAbstractWith the advent of mobile age, mobile games industry has a rapid development. And the mobile phone games are becoming one of the

3、important ways of interactive, communication and entertainment. It has taken the fancy of the young people.The subject aimed at the design and development of physical and mental of young people of a mobile game. The subject category of mobile RPG games is a classic mobile phone game, it given a comp

4、lete production process of the type of RPG mobile game. The subject is also described in detail of the realization of algorithm. This is a great significance of code reuse and extension of other games. And the subject has been studied in detail of the optimization methods and made a number of practi

5、cal optimization methods of the game. Key words: J2ME;RPG;Partial refresh;Software architecture目 录摘 要IAbstractII目 录1第一章 引言11.1 研究的背景和范围11.2 研究的目的11.3 课题研究的预期结果11.4 课题研究的地位、作用和意义2第二章 理论依据、试验基础和研究方法的阐述32.1 J2ME的体系结构32.2 MIDlet及其运行机制42.3 本课题的开发环境5第三章 游戏的软件总体设计与设计思想73.1 游戏的总体要求73.2 游戏的主要模块的功能73.3 游戏程序的设

6、计思想8第四章 游戏的详细设计104.1 游戏流程设计104.2 游戏类的设计及功能10第五章 游戏的具体实现125.1闪屏的实现125.2主菜单的实现135.3 RMS系统的实现145.4 游戏类算法与实现155.4.1 游戏界面的具体设计155.4.2 游戏过关的算法155.5 游戏说明类的实现165.6 游戏声音控制类的实现16第六章 游戏优化技巧的研究186.1手机游戏优化的必要性186.2代码的优化技巧186.2.1合理利用“垃圾回收器”186.2.2优化资源文件196.2.3使用代码混淆器优化内存196.2.4对paint()方法的优化196.2.5静态变量的使用196.2.6局部

7、刷新20结论21参考文献22谢 辞23第一章 引言1.1 研究的背景和范围通信无限畅通时代已经到来,手机以其快捷便利的特点极大的满足了人们交流的需求。手机已与现代生活紧密地结合在一起。与之同时,手机用户越来越注重手机提供的娱乐质量,调查表明,人们尤其是年轻人使用手机的部分需求是玩手机游戏1。消费者希望手机尽可能的整合一些娱乐功能,特别是游戏功能。手机游戏正在快速的走进每个手机用户的生活。如果需要源代码联系我近年来,各种手机游戏平台的成熟和完善使得高质量的手机游戏的生产成为现实。集成在手机等移动信息设备中的J2ME平台能够出色的完成手机游戏各种苛刻的条件,所以开发基于J2ME的手机游戏已成为开发

8、人员和手机制造商的首选2。手机游戏市场的发展导致了手机游戏需求量的迅猛增长,手机游戏制作业的偏快发展,很大程度上缺少开发经营规范和游戏内容是否健康有益的监督。有一部分手机游戏不利于青少年的健康成长,很多家长和老师十分担心手机游戏也会像电脑网络游戏一样给青少年带来负面影响2。所以开发出既能娱乐身心,又能开发智力的手机游戏势在必行。并且手机游戏市场需求中,对RPG类手机游戏的需求占很大一部分。1.2 研究的目的RPG类手机游戏具有很强的娱乐性和趣味性。在上述基础上,本课题准备开发一款简单有趣的RPG类手机游戏。着眼于J2ME技术在手机娱乐上的应用,开发一个基于MIDP2.0的手机RPG游戏程序,并

9、介绍了游戏的结构分析和具体功能的实现。游戏的界面和运作方式,尽力模拟手机的普遍性形式,成为一个完整的手机游戏。本课题针对市场上开发小型手机游戏缺少有效的优化方法,提出一些实用的优化技巧。1.3 课题研究的预期结果本课题旨在开发一款RPG类手机闯关游戏。其主要目的就是为了娱乐身心。它采用目前最流行的J2ME平台。使用的开发工具有NetBeans6.1,WTK 2.5.2。支持类型为MIDP2.0,CLDC1.1。开发出的闯关游戏是RPG类游戏中的典型类型,具有很强的娱乐性和趣味性。玩家通过按键操作游戏的进行,过关之后可直接进入下一关。游戏可以暂停和继续游戏。游戏中有声音并有声音控制。本课题将设计

10、出一个完整的、科学的RPG类手机游戏,并就每个功能模块的实现方法给出详细的阐述,对某些技巧和算法做出细致的解释说明。此外,本课题还将详细说明手机游戏优化的必要性,并提出几种实用的优化方法。如果需要源代码联系我1.4 课题研究的地位、作用和意义本课题将制作一款集娱乐性和趣味性于一体的手机RPG类游戏。并且要规范化编程,使用户界面和操作更加的合理和人性化。本课题设计的特点如下:(1) 游戏老幼皆宜,娱乐身心。(2) 游戏可以随时存档退出或继续游戏,不会因中断而必须重新开始游戏。(3) 游戏引擎的合理设计和用户高级界面的充分利用,使得玩家时刻感受到游戏快速响应。(4) 本设计将通过精致的美工设计吸引

11、玩家的注意力。(5) 将运用Java多线程的编程机制。(6) 将通过人性化的操作设计,随时开启或关闭游戏的音效。(7) 将通过独立的闪屏来显示玩家成功通关所用的时间,并显示其他历史最好的记录。做成之后,本课题将一般手机开发具有通用性和指导性。本课题对RPG游戏每个功能模块做出详细的阐述,这对今后RPG类手机游戏的开发起很大的作用。本课题还将分析几种实用的优化方法,这对今后类似软件的制作提供参考价值。第二章 理论依据、试验基础和研究方法的阐述2.1 J2ME的体系结构Sun公司的Java目前有三个平台,即J2EE( Java2 EnterpriseEdition )、J2SE( Java2 St

12、andard Edition )和J2ME。作为平台,J2EE定位于服务器端,J2SE定位于客户端,J2ME则定位于嵌入式系统。它们都要基于Java虚拟机(JVM)才能运行。J2ME采用模块化的结构,底层是宿主机的操作系统,内部则分为三层,Java VirtualMachine(虚拟机层);Configuration(配置层);Profile(简表层)。J2ME有两类虛拟机:CVM(C虚拟机)和KVM(K虚拟机),CVM功能比KVM功能更为强大;Configu-ration层:Configuration是J2ME对于嵌入式设备的规范,在这些规范中,定义了设备至少要符合的运算能力、供电能力和内存

13、大小等规范,按照规范一般把嵌入式设备分为CLDC和CDC两大类。Profile层:这一层对于用户和程序开发人员来说是最常见的。Profile中定义了与特定嵌入式设备紧密相关的扩充类库,这些扩充类库是建立在Configuration所定义的核心类库基础上的,它是架构在Configuration之上的规范。针对移动电话内存小、速度慢和I/O差的特点,J2ME对JVM、Configuration和Profile三层做了特殊的实现。在JVM层,J2ME在手机上移植了KVM(Kilobyte VirtualMachine),只需要几百KB的内存就可以运行;在Configuration层,J2ME规定了C

14、LDC(Connected Limited Device Configutation),它对设备的运算能力和内存大小都有具体的限制。CLDC不支持浮点运算;在Profile层,J2ME规定了MIDP(Mobile Information Device Profile)。MIDP定义了在手机上运行的Java程序的规范,包括应用程序生命周期、各种UI界面组件、支持Record存储数据和HTTP连接等等,这些在CLDC的基础上的附加功能是通过扩充新的Java类库来实现的。J2ME通用结构与手机中的J2ME结构之间的对应关系如表所示。表2-1 J2ME通用结构和用于手机的J2ME结构之间的对应关系用户

15、程序应用程序应用模型层MIDP配置层CLDCJAVA核心PIJAVA虚拟机层KVM本地操作系统手机操作系统J2ME的通用结构 用于手机的J2ME结构2.2 MIDlet及其运行机制在MIDP的上层的应用程序被称为MIDlet。这些MIDlet在底层CLDC的支持下,通过MIDP中提供的包获得更多的功能。MIDlet可以直接使用MIDP本身提供的类库以及MIDP从CLDC中继承的那部分API。MIDlet程序的运行是由startApp(),pauseApp()和destroyApp()这3个方法控制的。它们都在javax.microedition.midlet.MIDlet中定义。所有的MIDl

16、et都必须实现这3个方法。startApp()方法用于标志一个MIDlet的开始执行,与HelloWorld程序的Constructor不同,startApp()不光是在初始化完一个MIDlet时执行,只要该MIDLet被从Paused态激活变为Active态,startApp()就会被调用。pauseApp()方法标志着MIDlet进入Pause态,而destroyApp()方法标志着MIDlet进入destroyed态10。MIDlet的执行是通过AMS(Application Management software)来管理的11。AMS是位于操作系统级别上来管理MIDlet运行的底层机制

17、的总称,所谓MIDlet state(MIDlet)状态就是它控制管理的.MIDlet state确保了AMS随时可以销毁该MIDlet,同时MIDlet请求进入Pause态,当需要时再次激活。MIDlet State 分为Paused,Active,destroyed三种状态。当AMS创建一个新的MIDlet实体时,对应于MIDlet,表现为其constructor被调用,进入Paused状态。当所有的准备工作都做好后,AMS判断现在MIDlet可以运行了,于是调MIDlet.startApp()方法,进入Active态。当AMS决定要把MIDlet转入Paused态,就会调用MIDlet.

18、pauseApp()方法,MIDlet就会暂停执行,通常Paused态会用于释放所占资源。当AMS判断不再需要某个MIDlet实体时,就会调用MIDlet.destroyApp()把它销毁掉12。2.3 本课题的开发环境开发J2ME手机游戏程序,有很多开发工具,本课题采用NetBeans6.1、JDK和WTK进行开发。JDK是Java开发工具包(Java development kit)的缩写,使用Java必须安装JDK。J2ME是Java语言的一种,所以在安装其他J2ME开发工具之前,也必须安装JDK。本课题采用的JDK是JDK1.6.0。WTK的全称是Sun J2ME Wireless T

19、oolkit,它是Sun公司提供的无线开发工具包。此工具包是为了帮助开发人员简化J2ME的开发过程而设计的。该工具包包含了完整的生成工具、实用程序以及设备仿真器。使用WTK工具开发的J2ME应用程序可在兼容“Java Technology for the Wireless Industry(JTWI,JSR 185)”规范的设备上运行13。本课题采用的WTK的版本是WTK2.5.2版。在这个版本中,WTK全面的支持JTWI 规范,同时也可以使用该版本开发面向CLDC1.0 和MIDP1.0 的应用程序。系统要求上,WTK2.5.2至少需要50MB的可用硬盘,128MB的系统RAM和800MHZ

20、 Pentium CPU。在实际应用中,仅仅使用Sun公司提供的WTK还不够。想开发更适合某种手机的应用程序,还需要有手机厂商提供的SDK。我们可以这样理解各手机厂商提供的SDK:它在WTK的基础上增加了自己的模拟器和自己的扩展API(应用程序接口)。厂商的SDK提供了额外的针对其手机性能的扩展类库和模拟器。每个厂商提供的SDK是不同的。本课题采用Nokia的SDK,Nokia厂商对J2ME的支持是一流的。NetBeans是一个全功能的开放源码Java IDE,可以帮助开发人员编写、编译、调试和部署Java应用,并将版本控制和XML编辑融入其众多功能之中。NetBeans可支持Java 2平台

21、标准版(J2SE)应用的创建、采用JSP和Servlet的2层Web应用的创建,以及用于2层Web应用的API及软件的核心组的创建。此外,NetBeans 最新牒还预装了两个Web服务器,即Tomcat和GlassFish,从而免除了繁琐的配置和安装过程。所有这些都为Java开发人员创造了一个可扩展的开放源多平台的Java IDE,以支持他们在各自所选择的环境中从事开发工作,如Solaris、Linux、Windows或Macintosh。第三章 游戏的软件总体设计与设计思想3.1 游戏的总体要求(1) 运行平台本课题软件目标运行平台为所有支持CLDC1.1、MIDP2.0,屏幕分辨率不小于1

22、76208的手机设备。(2) 界面要求游戏的每个界面要求精致、美观,所有界面采用高级界面和低级界面相结合绘制。(3) 速度要求要求在满足平台需求的各手机上运行时画面流畅,声音播放正常,操作无延迟感。(4) 游戏规则玩家通过移动人物,使用人物的技能打败怪物而完成游戏。3.2 游戏的主要模块的功能(1) 闪屏模块实现打开游戏时的动画,用来显示软件的名称、版本和其他信息,用户可按键跳过闪屏进入菜单界面。并且闪屏显示的版本信息是使用线程绘制上去的,字体具有阴影效果。(2) 主菜单模块玩家通过主菜单界面可选择新游戏、继续游戏、游戏说明、高分纪录、声音控制和退出游戏选项。(3) 游戏界面模块游戏进行的界面

23、,玩家通过按键进行操作,并可以看到自己所用的时间。(4) 高分纪录模块用来显示历史上的最少用时。(5) 游戏结束模块只有玩家通关后才会出现,它显示玩家过关所用的时间和历史上的最少用时。(6) 游戏说明模块介绍游戏的情况和游戏的操作方法等。3.3 游戏程序的设计思想在游戏中我们要MIDP用户界面,所谓“用户界面”是指设备内的应用程序与用户之间的机制。MIDlet的事件处理分为高级与低级事件处理。MIDP所提供的javax.microedition.lcdui包用于手机用户界面与应用。LCDUI包的体系如图3.1所示。图3.1 LCDUI包的体系Screen类属于高级图形用户界面组件,Canvas

24、是低级图形用户界面组件,在同一时刻,只能有唯一一个Screen或者Canvas类的子类显示在屏幕上,我们可以调用Display的setCurrent()的方法来将前一个画面替换掉,我们必须自行将前一个画面的状态保留起来,并自己控制整个程序画面的切换。同时我们可以运用javax.microedition.lcdui.Command类来给我们的提供菜单项目的功能,分别是:Command.BACKCommand、Command.CANCEL、Command.EXIT、Command.HELP、Command.ITEM、Command.OK、Command.SCREEN和Command.STOP,我们

25、在Displayable对象中定义了addCommand()和removeCommand()两个方法,这就意味着我们可以在高级UI和低级UI中同时使用Command类,同时我们通过注册Command事件来达到事件处理的目的,即Command必须与CommandListener接口配合使用才能反映用户的动作。Screen类的主要结构如图3.2所示。图3.2 Screen类的结构第四章 游戏的详细设计4.1 游戏流程设计图4.1是这个游戏的流程设计,主要是对游戏的功能有一个很直观的显示。图4.1 游戏流程设计4.2 游戏类的设计及功能下面分别对游戏中设计的类和功能做一个描述。MainMidlet类

26、游戏的启动MenuCanvas类游戏菜单类SplashScreenCanvas类游戏加载画面BulletSprite类生成子弹并控制其行为EnemySprite类、PlayerSprite 类 、MainSprites类三个类控制所有人物精灵的移动以及其他行为!ToolSprite类道具生成类gamePass类控制游戏上下关的类gameStore类、gameGuan类用来控制游戏进度和关数的存储!SoundEffects类游戏音乐的控制类InfoBar类用于生成滚动字幕第五章 游戏的具体实现5.1闪屏的实现如果需要源代码联系我闪屏类的设计考虑在闪屏运行时玩家可以通过按键跳过闪屏。闪屏在启动游戏

27、时出现,显示一张图片和游戏的名称版本,并且2秒钟后自动结束。效果如图5.1所示:图5.1 闪屏效果图闪屏类SplashScreen.java继承了Canvas类,初始化时加载图片并创建一个线程。首先使用Canvas.getHeight()方法和Canvas.getWidth()方法获得屏幕的高度和宽度,并将这两个值传入drawImage()方法中绘制图片,实现了对分辨率的自适应。闪屏的线程启动后,系统对是否已经运行闪屏进行判断,如果闪屏还没有加载图片等资源,系统将给它分配资源。在绘制版本号和游戏名称的阴影效果时,我采用了增减坐标的方法进行绘制。/将文字绘制在(centerX,CenterY-1

28、)坐标处;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); 经过上述四步的绘制,就会在屏幕上实现文字的阴影效果,并且,可以在某两步之间修改画笔的颜色,这样可以实现文字的彩色阴影。为了实现用户通过按键跳

29、过闪屏,通过Runable接口,我在keyPressed(int keyCode)方法中采用如下策略:/对keyPressed(int keyCode)进行重写public synchronized void keyPressed(int keyCode) if (!dismissed)/如果闪屏正在运行 dismissed = true;/闪屏停止运行 midlet.splashScreenDone();/转入主菜单 /if执行完毕 /keyPressed执行完毕玩家在闪屏运行时进行了按键,那么系统调用splashScreenDone()方法用来装载主菜单。此时,Java语言的垃圾回收器会将

30、闪屏所占用的资源进行回收8。5.2主菜单的实现闪屏结束之后进入主菜单界面,用户通过主菜单可以进入新游戏,继续游戏,游戏说明,声音控制和退出游戏。效果如图5.2所示。图5.2 初次运行的主菜单效果图游戏菜单的设计是整个游戏的开始,首先进行必要的变量初始化。接下来就是游戏进行的代码编写。每次开启新游戏的时候,首先便是游戏的菜单。具体算法如下: public static Font mFont = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_LARGE); static GraphicsEffects ge = Graphic

31、sEffects.getInstance(); static SoundEffects se = SoundEffects.getInstance(); protected String helpStr =游戏背景:+nn+代表世界正义的奥运福娃们,在森林中玩耍,不小心有四个被不法之徒所逮捕,从而上演一个福娃挽救四个哥哥,同时为寻回奥运圣火的历险记。+nn+操作方法:+nn+游戏中用方向键和2、4、6、8键控制主角移动以及进行菜单选择,5键或OK键选定,1键英雄可以释放技能,右软键调出操作菜单,可保存游戏、暂停游戏、继续游戏或退出游戏。+nn+关键提示:+nn+玩家每次打死一个Boss后将得到

32、一个道具,每个都有其特殊的作用。注意玩家的技能的使用次数使用限制的,只有不断的通过道具来补充魔法值才能持久使用。;(初始化完毕)public MenuCanvas(MainMidlet midlet) public static void loadResource()public void start()public void run()public void keyPressed(int keyCode)public void selectedChoice(byte choice, boolean timeOut)public void showPopup(char imgMenu, cha

33、r altTexts,int timeOutInSeconds, int defaultChoice, int timeOutChoice)public void paint(Graphics g)5.3 RMS系统的实现游戏在主菜单界面,如果游戏选择了读取存档,那么游戏载入RMS记录的上次游戏暂停的各种数据,当游戏结束时,系统将所用的时间传给结束屏幕,并且将这个时间与已经记录的最少时间进行比较,如果是最小时间,则刷新记录。在玩家打开高分记录时,系统要将最小时间传给高分记录屏幕。RMS系统是游戏中不可缺少的部分。J2ME提供了一个记录管理系统,即RMS,能够持久的存储数据。RMS提供了Reco

34、rdStore类,用于MIDlet应用程序与RMS进行通信。RMS相当于一个小型的数据库,RecordStore相当于数据库的表。每个表中有若干条记录,每条记录由一个int型的记录号和一个byte型的数组构成。记录号可以看作是“表”的“主键”,byte型数组用来存储数据结构。本游戏中建立了两种方法来保存和读取数据:读取存档:读取存档就是从数据库的记录集中读取游戏数据,使用RecordStore类的静态方法openRecordStore(recordStoreName,createIfNecessary)来打开一个RecordStore,将createIfNecessary的值设置为true,表

35、示如果这个RecordStore不存在就会新建一个RecordStore。打开“数据表”后,可采用RecordStore类的getRecord(recordId)方法来得到一个记录,利用这个记录构造一个ByteArrayInputStream的实例bais,再使用DataInputStream包装它,得到一个实例dis,使用dis的readLong()方法读出存档并强制转换成int型的变量,这样,数据就被读取出来了。最后关闭RecordStore。存储数据:首先打开一个RecordStore,方法与读取存档中的打开一个RecordStore相同,建立一个ByteArrayOutputStrea

36、m的实例baos,然后将它作为参数传入DataOutputStream的构造函数来产生一个实例dos。然后使用dos的方法writeLong()将游戏产生的需要存储的数据写入byte型的数组中。将这个数组传给addRecord()方法就可以增加一条记录了。最后关闭RecordStore。5.4 游戏类算法与实现5.4.1 游戏界面的具体设计游戏界面的设计分场景设计和操作设计。(1)场景设计游戏每关有一个福娃为主角色,福娃有技能杀死怪物,每关有自己的地图,福娃有一定的血量,当福娃的血条里的血量没有时,游戏结束。(2)操作设计角色的走位用手机的四个方向键控制,确认键是角色的技能键。5.4.2 游戏

37、过关的关键程序在游戏进行中共分为五关,当一关结束后要进入下一关。实现算法如下:public class gamePass extends Canvas implements CommandListener public gamePass() / 全屏幕显示 public void run() public void kongzhi() public void draw() repaint();public void commandAction(Command command, Displayable displayable) 5.5 游戏说明类的实现游戏说明类的设计,告诉玩家一些关于游戏操作方

38、法和游戏设计者的信息。如图5.3所示。图5.3 游戏说明效果图5.6 游戏声音控制类的实现游戏声音控制类用来控制游戏进行中声音的开关。如图5.4所示。图5.4 游戏声音控制效果图关键程序如下:public class SoundEffects ()public Player createPlayer(String , int loop)public Player createPlayerMP3(String , int loop)public void playSound(Player p)public void pauseSound(Player p)public void stopSoun

39、d(Player p)public void closeSound(Player p)第六章 游戏优化技巧的研究6.1手机游戏优化的必要性J2ME是被修剪过后的Java版本,它适合于性能有限的小型设备,比如手机。手机设备在内存和CPU等方面与台式计算机相比具有很大的局限性,这种设备具有如下特征:(1) 输入能力受限制(按键数目少)。(2) 显示区域较小。(3) 存储空间有限。(4) CPU计算速度较慢。用J2ME平台来开发手机游戏,对于开发者来讲是一个挑战,因为所开发的游戏必须运行在性能相对较低的手机设备上。一般情况下,刚刚开发完成的游戏运行在真机设备上常常会出现一些问题,如:占用内存资源过多

40、,运行缓慢等。在这些情况下,必须对游戏产品进行各方面的优化,提高游戏的生存能力。6.2代码的优化技巧6.2.1合理利用“垃圾回收器”使用Java的人都知道垃圾回收机制是Java的一大优点,它使得Java开发者可以不用考虑内存的分配和释放工作。显然,Java语言的这个特性方便了我们的开发,但这个特性也带来了一些隐患。举个例子来说,游戏中经常需要进行场景的切换,例如在本游戏中玩家需要从游戏场景返回主菜单场景。进入菜单场景后,游戏场景已经没有实际显示的价值了,这时需要释放游戏场景所占用的资源。在处理这种切换操作时,很多开发者采用垃圾回收器来回收游戏场景所占用的资源。咋看之下,这种处理方法似乎并无不妥

41、,垃圾回收器的确可以自动回收不再使用的内存资源。但是垃圾回收器不会立即处理游戏场景所占用的资源,而是等待一段时间后才对这些资源进行回收。在游戏从游戏场景切换到主菜单场景的开始阶段,系统的内存中会同时存储两个场景的资源,此时,系统内存将很可能溢出。既然垃圾回收器存在上面所述的问题,那么该如何解决这个问题呢?我们通常采用的方法是手工释放多余的内存资源。也就是说,除了简单类型的变量外,必须将所有不再使用的对象设置为Null。6.2.2优化资源文件在手机游戏中,对资源文件的优化也可以有效的减少占用的内存资源。优化资源文件主要是对图片资源进行优化,游戏中使用图片会占用大量的内存资源,一张3K大小的图片可

42、以占用30K甚至更多的手机内存空间。所以很有必要对其进行优化。我们使用PhotoShop等工具软件制作出一张图片后,把图片的“模式”改为“索引”模式,可以大大减少图片所占用的空间。如果有多张规则相同的图片,建议使用Photoshop等工具软件将这些图片拼成一张长条的大图片,之所以这样做不仅可以节省存储空间,还可以减少I/O操作的次数。这是不难理解的,因为系统每次读一张图片都要进行一次I/O操作。本课题中游戏场景需要8张图片,如果独立存储,程序需要进行8次I/O操作;而将小图片拼成大图片后,程序只需要做一次I/O操作即可。6.2.3使用代码混淆器优化内存代码混淆器可以用来保护手机游戏的代码,加大

43、对代码反编译的难度。实际上使用代码混淆器来进行游戏占用内存的优化也是不错的选择。经过混淆器打包后,游戏的代码会变小,因而,内存中用来存储代码的空间也自然就会变小。如果有一款手机游戏,它的代码部分占用60K的空间,那么该游戏经过代码混淆器打包后,代码部分占用的部分可以是50K左右。这样就节省了10K左右的存储空间,这对于制作手机游戏来讲是非常值得的。本课题使用WTK进行混淆处理,打包后代码比混淆前少了20K。6.2.4对paint()方法的优化制作手机游戏经常会遇到这样的问题:在模拟器上跑得很好的程序在实际的手机上却很慢,甚至无法运行,这主要是因为“重画机制”的使用不当所致,J2ME中Canva

44、s类的paint()方法的程序会导致设备无法正常工作。所以,对于paint()方法的优化就显得特别重要。代码中耗费CPU计算时间的操作尽量不好在paint()中出现,尤其是创建图片或加载其他资源的操作。本课题中对所有创建图片和加载其他资源的操作进行了方法的抽取和分离,当某一资源使用前才对其进行加载,并且需要调用的时候才让其占据空间,运行完毕后自动调用方法释放相应的空间。6.2.5静态变量的使用在Java程序中,静态变量是指使用static关键字定义的变量。静态变量在内存中只保存一份拷贝,但它可以被公用,在程序运行期间静态变量可以被任何对象访问,从而避免了重复拷贝所造成的内存资源的浪费。不过使用

45、静态变量时要加以小心,因为静态变量的生命周期较长,而且不容易被垃圾回收器所“回收”,所以要合理的运用静态变量,不要适得其反。通常情况下例如变量所包含的对象体积较大或某类的变量需要与其他类共享时使用静态变量。通常使用静态变量对程序进行优化后,程序所占用的内存空间会减少5K到10K。结合本课题来讲,游戏中的MIDlet传入到其他类中的对象就是一个静态的变量。因为它在整个程序运行过程中生命周期最长,需要被所有的对象访问。6.2.6局部刷新手机游戏的程序中每次调用repaint()方法,系统就要调用paint()方法,对整个手机屏幕的图像进行刷新。但是,并不是每次调用repaint()方法都需要刷新屏

46、幕,例如有时只需要刷新屏幕左上角的一小部分图像。所以只需要实现局部刷新就可以了。局部刷新的方法有多种,例如,利用Canvas类的Clip方法来实现局部刷新。可以先通过setClip()方法设定一个矩形区域,这时再调用Clip方法就仅仅刷新屏幕在该区域的图像,因此可以节省CPU的开销。结合本课题,当玩家在游戏进行中每操作一次,程序调用一次repaint()方法将整个屏幕重绘。事实上,玩家有时进行了空操作,如非法按键导致的操作无效,这时就不应该进行重绘操作,但由于线程正在运行,运行标志依然为true,所以run()方法就会被调用进行一次重绘。针对这个问题,我设置了操作判断,只有有效的修改屏幕的操作

47、才调用repaint()方法。而且,游戏界面的右下方显示运行的时间要随时的更新,就采用Canvas类的Clip方法来局部刷新,其他的地方无需重绘,这样就节省了CPU大量的开销。结论目前,手机游戏以其“随时随地”玩的优势呈现快速增长的态势。而且,手机游戏已经向网络游戏开发全面的渗透。目前,手机游戏业已进入一个高利润的稳定增长期。中国拥有世界上最大的手机用户群,所以国内手机游戏产业将拥有一个巨大的市场空间。手机游戏产业不仅在国内如此火爆,而且在全世界也正爆发性地成长。虽然手机游戏市场呈现火爆的趋势,但目前国内手机游戏产业仍然存在着一些急需解决的问题,如人才匮乏制约手机游戏产业的发展。而且,游戏产品

48、质量存在一定的问题,内容的不健康和样式的粗制滥造等问题十分令人担忧。开发J2ME手机游戏程序,通常使用WTK、NetBeans和JBuilder三种工具。安装J2ME程序开发工具之前需要正确的安装和配置JDK。安装WTK后,若针对某一型号的手机进行开发,还需要下载并安装该手机厂商提供的SDK。本课题采用NetBeans环境进行J2ME开发。本课题开发了一款有利于青少年健康的RPG类游戏,这款RPG游戏有很强的趣味性和娱乐性。课题从软件需求入手,详细的阐述了本游戏的设计思想和设计流程,开发出一个适合拼图类手机游戏的软件架构。在设计这个框架的过程中,我尽力的从面向对象的知识和敏捷开发知识中汲取营养

49、,将不同的知识架构进行整合,内化为自己的认知。并在此基础上,将这些认知应用在手机游戏软件架构的设计上。课题系统的给出了每种菜单、RMS系统和游戏的算法的实现方法和技巧。在设计游戏的各种菜单时,我基本上采用了软件工程的思想进行了设计。本课题较为详细的研究了手机游戏的优化问题,给出了手机游戏优化的必要性,而且提出了集中实用的优化方法。虽然有些方法很普通,但是可以有效的优化很多资源。本课题的进一步的设想是增加蓝牙联机功能,如此类似的游戏都可以使用本课题的软件架构来快速实现。参考文献1张鹏,宁莹璋,王雪梅.Java手机游戏实例手册M.北京:海洋出版社,2006:22-32.2荣钦科技.J2ME手机游戏

50、设计技术与实战M.北京:电子工业出版社,2007:120-200.3刘斌.JavaME实用详解M.北京:电子工业出版社,2007:110-112.4陈晋波,李雪娟,熊飞.白领就业指南:手机游戏开发实践M.北京:电子工业出版社,2005:10-13.5陈跃峰.J2ME就业培训教程M.北京:中国电力出版社,2006:20-45.6楚军华,李治柱.J2ME应用程序性能优化的探讨J.计算机应用与软件,2008(1):10-13.7金春霞,白秋产.基于J2ME的手机游戏开发与实现J.计算机与数字工程,2008(2):177-178.8丁月华,刘佳,杨沛.J2ME手机游戏开发平台的设计与实现J.计算机工程

51、,2007(3):261.9Michael Morrison. Beginning Mobile Phone Game ProgtammingM,北京:人民邮电出版社,2005:20-145.10Yang Yiming,Pederson JO.A Comparative Study on Feature Selection in Text CategorizationA,Proceedings of the 14th International Conference on Machine learning Nashville,Morgan Kaufmann,1997(10):412-420.如

52、果需要源代码联系我。在这里我要郑重的感谢老师,不仅仅因为他是我的指导老师。他在我的毕业设计过程中指引我如何去发现问题,教给我解决问题的方法。他对我的论文选题、理论研究、工作计划安排以及论文的完成都给予了精心指导和严格要求。我认为我需要强调的是,他是我的班主任,他教会了我乐观面对生活和认真面对工作的态度,这对我的课题的完成有直接的作用。在课题开发的过程中,我发现这个课题别人已经做过了。宋锋老师就鼓励我,每个人眼中的世界都是不同的,你可以发现别人没有发现的地方,伟人的成功况且是站在前人的肩膀上,我们这些学习者更要认真的总结别人开发的经验,重要的是发现别人没有研究到的领域,在这个领域创新,并努力提出

53、自己经过科学验证过的理论。非常的感谢老师,我想这种思想就是大胆的创新思想,并且还要科学务实的验证自己的想法。感谢答辩组对本毕业设计的考核,如果可以得到专家的认可将对我的学习和工作给予极大的鼓励。你们客观的评价和建议我将牢记在心,在今后的发展中扬长避短,更加努力的严格要求自己。最后,真心感谢所有关心和帮助过我的人们,我会继续努力,不断的提高自己的知识水平。参考: 毕 业 论 文论文题目学 院专 业年 级姓 名指导教师职 称(200 年 月)教务处制毕业设计说明书与毕业论文撰写的规范化要求一篇完整的毕业设计说明书或毕业论文有题目、摘要及关键词、目录、引言(前言)、正文、结论、谢辞、参考文献、附录等

54、几部分构成。要求理工科专业不少于4000字,文科专业不少于6000字。一、毕业设计说明书撰写的主要内容与基本要求一份完整的毕业设计说明书应包括如下主要内容:1题目设计课题名称,要求简洁、确切、鲜明。2中外文摘要及关键词应扼要叙述本设计的主要内容、特点,文字要简练。中文摘要约300字左右;外文摘要约250个实词左右。关键词35个。3目录主要内容的目录。4前言应说明本设计的目的、意义、范围及应达到的技术要求;简述本课题在国内(外)的发展概况及存在的问题;本设计的指导思想;阐述本设计应解决的主要问题。 5正文(1)设计方案论证:应说明设计原理并进行方案选择。应说明为什么要选择这个方案(包括各种方案的

55、分析、比较);还应阐述所采用方案的特点(如采用了何种新技术、新措施、提高了什么性能等)。(2)设计及计算部分:这是设计说明书的重要组成部分,应详细写明设计结果及计算结果。(3)样机或试件的各种实验及测试情况:包括实验方法、线路及数据处理等。(4)方案的校验:说明所设计的系统是否满足各项性能指标的要求,能否达到预期效果。校验的方法可以是理论分析(即反推算),包括系统分析;也可以是实验测试及计算机的上机运算等。6结论概括说明本设计的情况和价值 ,分析其优点、特色,有何创新,性能达到何水平,并指出其中存在的问题和今后的改进方向。7谢辞简述自己通过本设计的体会,并对指导老师和协助完成设计的有关人员表示

56、谢意。8参考文献应列出主要参考文献。9附录将各种篇幅较大的图纸、数据表格、计算机程序等作为附录附于说明书之后。二、毕业论文撰写的主要内容与基本要求1题目题目应该简短、明确,要有概括性,让人看后能大致了解文章的确切内容、专业的特点和学科的范畴。题目的字数要适当,一般不宜超过20字。字体为2中外文摘要及关键词摘要也称内容提要,应当以浓缩的形式概括研究课题的主要内容、方法和观点,以及取得的主要成果和结论,应反映整个论文的精华。中文摘要约300字左右为宜,同时要求写出250个实词左右的外文摘要。关键词3-5个。摘要应写得扼要、准确,一般在毕业论文全文完成后再写摘要。在写作中要注意以下几点:(1)用精练、概括的语言表达,每项内容均不宜展开论证。(2)要客观陈述,不宜加主观评价。(3)成果和结论性意见是摘要的重点内容,在文字上用量较多,以加深读者的印象。(4)要独立

温馨提示

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

评论

0/150

提交评论