斗破苍穹—手机设计游戏学士学位论文.doc

上传人:知****量 文档编号:91606304 上传时间:2023-05-27 格式:DOC 页数:32 大小:218.50KB
返回 下载 相关 举报
斗破苍穹—手机设计游戏学士学位论文.doc_第1页
第1页 / 共32页
斗破苍穹—手机设计游戏学士学位论文.doc_第2页
第2页 / 共32页
点击查看更多>>
资源描述

《斗破苍穹—手机设计游戏学士学位论文.doc》由会员分享,可在线阅读,更多相关《斗破苍穹—手机设计游戏学士学位论文.doc(32页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、毕 业 设 计(论文)题目斗破苍穹手机游戏设计 系别专业班级姓名学号指导教师日期斗破苍穹手机游戏设计总计:毕业设计(论文)23 页图表 2 幅II毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作 者 签 名: 日 期: 指导教师签名: 日期: 使用授权说明本人完全了解

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

3、作者签名: 日期: 年 月 日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。涉密论文按学校规定处理。作者签名:日期: 年 月 日导师签名: 日期: 年 月 日注 意 事 项1.设计(论文)的内容包括:1)封面(按教务处制定的标准封面格式制作)2)原创性声明3)中文摘要(300字左右)、关键词4)外文摘要、关键词 5)目次页(附件不统一编入)6)论文主体部分:

4、引言(或绪论)、正文、结论7)参考文献8)致谢9)附录(对论文支持必要时)2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。3.附件包括:任务书、开题报告、外文译文、译文原文(复印件)。4.文字、图表要求:1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画3)毕业论文须用A4单面打印,论文50页以上的双面打印4)图表应绘制于无格子的页面

5、上5)软件工程类课题应有程序清单,并提供电子文档5.装订顺序1)设计(论文)2)附件:按照任务书、开题报告、外文译文、译文原文(复印件)次序装订3)其它目 录摘 要IIIABSTRACTIV第1章 绪论- 1 -1.1 研究背景- 1 -1.1.1 研究原因- 1 -1.1.2 研究意义- 1 -1.2 研究现状及发展趋势- 2 -1.2.1 国内外研究现状- 2 -1.2.2 发展趋势- 2 -1.3.1 设计原理- 3 -1.3.2 方案选择- 3 -1.3.3 基本内容- 4 -1.4技术要求、研究方法和待解决的关键问题- 5 -1.4.1 技术要求- 5 -1.4.2 研究方法- 5

6、-1.4.3 待解决的关键问题- 6 -第2章 系统分析- 7 -2.1 功能概述- 7 -2.2 功能分析- 7 -2.2.1 主要功能分析- 7 -2.2.2 关键功能分析- 9 -第3章 系统设计- 11 -3.1 功能模块设计- 11 -3.2 系统配置方案- 12 -3.3 详细设计- 12 -3.3.1 总体设计- 12 -3.3.2 主体设计- 14 -第4章 系统实施- 17 -4.1 系统编码- 17 -4.2 系统测试- 18 -4.2.1 测试方法- 18 -4.2.2 测试项目- 19 -4.2.3 测试数据- 19 -4.2.4 测试结果- 19 -4.3 系统发布-

7、 19 -4.4 系统操作- 20 -4.4.1应用系统安装- 20 -4.4.2游戏操作说明- 20 -总 结- 21 -致 谢- 22 -参 考 文 献- 23 -VII摘 要J2ME(Java 2 Micro Edition) 是近年来随着各种不同设备,尤其是移动通信设备的飞速发展而诞生的一项新的开发技术。它定位在消费性电子产品的应用上,对设备的智能化、多样化,提供了革命性的解决方案,并因其“Write Once, run anywhere”的Java特性而提高开发的效率。随着手机的日益普及、Java功能在移动设备上的实现,Java应用程序产生的手机增值服务逐渐体现出其影响力,对丰富人们

8、的生活内容、提供快捷的资讯起着不可忽视的作用。鉴于此我们使用J2ME技术开发了一款飞行射击类手机游戏。本论文着眼于J2ME技术的应用,旨在开发一款可商用的手机游戏。本论文介绍了J2ME的相关技术及本程序的结构分析和具体功能的实现。本论文第一章主要介绍了研究的背景、研究现状及发展趋势等。第二章主要介绍了本系统所拥有的主要功能和对功能进行分析。第三章主要介绍立刻本系统的设计思想。第四章主要介绍系统的实施。本系统充分运用MIDP2.0游戏开发包的各个类,实现手机按键控制游戏主角飞机的上下左右的运行,飞弹处理,商店物品购买的实现。程序控制敌机及子弹的运行,位置等。本系统中使用了双缓冲技术,运行起来无闪

9、屏。但是由于时间及技术原因,本系统的功能尚未完善。关键字:J2ME;手机游戏;JavaABSTRACTJ2ME ( Java Micro Edition 2 ) in recent years, with various equipment, especially mobile communications equipment and the rapid development of the birth of a new development technology. It is located in consumer electronics products on the applicati

10、on of equipment, intelligent, diversification, provides innovative solutions, and because of its Write Once, run anywhere Java characteristics and improve the efficiency of development. With the growing popularity of mobile phone, the Java function on the mobile device to achieve, Java applications

11、the mobile phone value-added service gradually reflect their influence, to enrich peoples lives, providing easier access to information plays a role can not be ignored. In view of this, we use J2ME technology to develop a flight shooting mobile phone game.This paper focuses on J2ME technology applic

12、ation, designed to develop a commercial mobile phone game. This paper introduces the J2ME technology and the procedures for structural analysis and specific function of the realization of. The first chapter of this thesis mainly introduces the research background, research status and development tre

13、nd. The second chapter mainly introduced this system has the main functions and the function analysis. The third chapter mainly introduces the design thought of this system at. The fourth chapter mainly introduces the system implementation. This system make full use of the MIDP2.0 game development p

14、ackage of various types of mobile phone game, realize the key control plane about the next operation, missiles, treatment, store purchase implementation. Program control planes and bombs of the operation, position etc. This system using double buffering technology, run up without the splash screen.

15、But because of the time and the technology, the function of this system is not yet perfect.Key words:J2ME; mobile game; Java斗破苍穹(手机游戏设计)第1章 绪论1.1 研究背景游戏作为人们日常生活的一个重要的娱乐项目,也带动了巨大的游戏相关产业市场的发展。游戏平台从游戏机、电视游戏,到pc游戏,到手机游戏,中间经历了很多的技术的变革。随着新技术的发展和人们生活水平的提高,手机开始逐渐普及,手机以其小巧便捷,方便的特性成为人们的必备通讯工具。而基于手机平台的手机游戏也就拥有

16、了巨大的市场空间,随着3g的开通和应用,手机游戏必将迎来新的一轮游戏热潮!1.1.1 研究原因(1)传统手机出厂时均由硬件厂商固化程序,程序不能增加、删除,有了错误也不能更新、修改,若要增加新功能必须另换一部手机。(2)传统手机访问互联网是通过WAP(Wireless Application Protocal),所有网络资源必须接通网络才能在线访问,非常耗时、费用亦很高。手机游戏已成为手机应用产品中用户使用率最高的产品,随着移动网络和手机终端的发展手机游戏的需求量庞大市场广阔。1.1.2 研究意义应用程序可按需下载,而不是购买由硬件商提供的套件,可升级空间大。斗破苍穹游戏是一个比较经典的游戏,

17、根据软件工程有关的规范,以合理的开发原则,设计出斗破苍穹游戏,并给人们的生活带来唯美的艺术享受和健康愉快的补充。游戏软件是一种与文化背景密切联系的产品,具有很强的民族性和丰富的文化内涵。伴随着游戏软件在市场上的销售,与其相关的文化也随之传播。因此发展我国自主的益智、健康的游戏软件已是当务之急。游戏是一种基于计算机的应用软件,是新型的休闲娱乐方式。当前开发的游戏软件应该做到知识性、娱乐性、趣味性、教育性相统一。1.2 研究现状及发展趋势1.2.1 国内外研究现状在国外,手机游戏正在经历一个黄金发展时期。日本是游戏产业最发达的国家,早在几年前,日本的手机游戏业就已经蓬勃发展起来。就拿全球最大的手机

18、Java游戏霸主宫路武来说,从他2000年创办手机游戏公司开始,只花了4年时间,就在日本这个全球最大的手机游戏市场建立了霸业,实现年营收2300万美元的奇迹。虽然美国相对于日本及一些欧洲国家,在手机Java游戏方面的发展相对滞后,但是在2003年,其手机游戏市场的收入也已经达到1600万美元。在国内,有着近3亿的手机用户,即使只有10%的用户,每月只下载一款游戏,也足以使其形成一个规模庞大的产业。但是目前仅有不足1%的用户下载过手机游戏,这使得这块被无数人看好的市场并没有达到和人们预期相吻合的水平。人们似乎更容易接受移动其他的增值业务(比如短信、彩铃业务等),而对手机游戏的认知度却相当低。1.

19、2.2 发展趋势未来的手机游戏平台因为ATI和nVIDIA两大PC显示芯片厂商专业级水准的加入而更为热闹。在ATI推出手机和PDA手机3D多媒体芯片(包含专用的媒体处理器Media Processor及3D加速器3D Accelerator)后,老对头NVIDA也毫不示弱,公布了他们的3D多媒体芯片,并且应用于三菱和神达MiTAC的智能手机上。这些芯片在植入手机后能够有效的提升图形显示性能,使手机在进行多媒体演示和游戏时更够有出色显示效果。不过这些厂家提供的都是硬件芯片,要完全发挥其在3D图形的表现能力还需要相应支持的API才能相辅相成,而目前主要的API包括2003年7月发表的OpenGL

20、ES(OpenGL for Embedded Systems),就是OpenGL 的嵌入式版本,是为嵌入系统而开发的小型标准三维(3D)图形应用编程接口(API),并受到那些意图将3D游戏引入移动设备的游戏开发商、手机厂商、游戏引擎供应商和3D图形芯片公司的热烈追捧。目前已知NVIDIA AR10与ATI Imageon 23xx 3D芯片,已符合 OpenGL ES 1.0的标准。而最新Symbian OS 8.0版本也将支援OpenGL ES API。相信不久后,手机上也能玩像是CS、DOOM、Quake的FPS游戏了。另一种则是微软推出Direct3Dm,这是微软专为移动设备开发的,其中

21、m就是mobile 的意思。目前Direct3Dm尚在制定阶段, nVIDIA在法国戛纳举行的3GSM世界年会上发布的 AR10就是支持Direct3Dm新产品。 Direct3Dm的意义在于未来游戏厂商如果要把游戏移植到Mobile平台会变得比较容易,不需再去用新的平台去设计游戏,以降低游戏开发移植的成本。目前ATI的产品据称已经集成到日本最新一代3G FOMA手机F900I中,而该机正好采用的是symbian操作系统。由此可见智能化和3G应用是未来游戏平台的大势所趋。1.3.1 设计原理采用java面向对象的设计思想,主要涉及和用到J2ME中的类和功能有:Display类代表了系统显示屏和

22、输入设备的管理器,包含用来获取设备属性的方法,以及要求在设备上显示的对象的方法。画布类对图形绘制和文本的精确控制,只需要指定坐标即可,坐标以屏幕的最左上角为原点即(0,0)为初始点,横向为x轴纵为y轴。游戏画布类中提供游戏基本接口缓冲技术,直接得道设备键盘的物理状态等,精灵类中的图片分割显示技术。线程类,线程的不断执行实现对整个游戏的控制。分块图层类中的图片分块平铺填充技术来实现游戏的背景连续无间隔的显示。Grphics类中在画布上绘制各种图形和图标,文本等各种元素的绘制技术,Random类的随机数技术。player类中的音乐播放技术来实现游戏的背景音乐。其中用到一些算法如金币取值绘制对应的数

23、字图片和解决不支持nextInt()随机数等一些简单的算法。1.3.2 方案选择本程序的实现方案可以通过使用2个不同的类来实现游戏的全部功能方案一:MILP1.0主要使用Canvas类,且不引入精灵类来实现使用此类来实现飞机和子弹的碰撞检测,需要亲自来编写,而最大的不足在于如果自己编写碰撞检测的话,只能达到一个特定的区域的检测,也就是子弹所在的矩形区域和飞机所在的矩形区域,利用是否有重叠的方法来检测碰撞,但是存在一个问题就是子弹和飞机不可能是规则的矩形图像,也就是说当子弹从飞机的左边或者右边过来的时候,当进入飞机所在的矩形区域的时候就会认为子弹碰上了飞机,但是事实上是没有碰到的,而程序确认为它

24、们相撞了,所以这样的方法存在一个检测不准确的问题。此方案还存在着一个问题就是,不能使用双缓冲技术,必须得由自己来编写代码来实现。在使用此方法的过程中还证实了还存在一个键盘事件响应的问题,重载keyPress()方法来监听键盘的时候不能够使用十进制求余的方法来侦听用户按下了哪个按键,所以在速度和性能上都比较不理想。方案二 MIDLP2.0主要使用GanmeCanvas类和精灵类来实现在使用第一种方案编写程序的过程中遇到了上述的几个问题,而这些问题在MIDLP2.0里面都已经封装了解决的办法,不仅拥有原来的所有方法,如GameCanvas类继承Canvas类,而且还加入了双缓冲的实现方法和精灵类的

25、像素检测方法和GameCamvas类十进制求余来侦听键盘的方法,并且提供了比MIDLP1.0更强大的功能,所以使用MIDLP2.0中新增加的功能来实现本程序。故选择方案2来实现此次所开发的程序。1.3.3 基本内容本课题以研究基于J2ME的手机游戏开发设计及其特点,具体研究内容如下:(1)手机游戏开发以及J2ME的基本理论和J2ME类库的使用(2)J2ME体系结构的研究(3)MIDP移动信息设备简表研究 MIDP的目标硬件环境 MIDP应用程序 CLDC 和MIDP库中的类(4)JEME API 的研究 精灵类的应用 分块图层类的应用以及 图层管理器的应用 各种事件发生器的应用1.4技术要求、

26、研究方法和待解决的关键问题1.4.1 技术要求(1)GameStart类主要提供程序的入口,设置Displayable对象和启动线程,以及实现程序的退出功能。(2)MyGameCanvas类程序最主要是用来在屏幕上绘制游戏选择菜单界面、游戏帮助界面、关于游戏界面、游戏设置界面、关卡选择界面、商店物品购买界面和购买成功提示界面,以及玩家飞机和敌机的绘制、子弹与飞机碰撞的检测、金币图片的绘制、玩家飞机生命的绘制,实现了按键的侦测和事件处理。(3)EnemyPlane类主要实现了产生敌机以及移动的控制以及移动。(4)Bullet类主要实现了敌机子弹和玩家子弹的产生以及移动的控制。(5)PlayPla

27、ne类主要实现了玩家飞机的产生和移动。(6)Sound类主要实现游戏背景音乐的播放。1.4.2 研究方法(1)参考现有的例子,深刻理解它的整体执行流程所具有的各功能,读懂程序的关键部分代码,使对J2ME射击类(FPS)游戏的整体开发流程有个比较清楚的认识,最后构思出本程序所要实现的功能整体的流程。(2)在对J2ME射击类(FPS)游戏有个清晰的认识和了解,并且对自己的的程序有个清晰的构思,然后按照软件开发的总过程进行设计,经历定义和计划、需求分析、软件设计、软件编码、软件测试等过程,研究开发自己的程序。1.4.3 待解决的关键问题(1)关于界面的文字说明如何依次的向上移动?(2)玩家获得的金币

28、如何动态的使用图片显示出来?(3)商店界面物品如何根据选择的装备种类而画出相应的装备并且显示相应说明文字以及说明文字的滚动速度如何控制?(4)如何根据不同的子弹对玩家飞机造成不同程度的生命伤害攻击力,以及如何把飞机生命和相应的生命图片关联起来动态的显示?(5)敌机发出子弹的时候如何如何才能够向飞机在同一时间出现的位置移动?(6)如何能够让敌机做不规则的移动并且不会超出屏幕以外且在特定的时候发射子弹?(7)在游戏菜单选择界面有游戏,关于游戏,和游戏设置,但是在暂停的时候也由相应的选项而在这几个界面都由一个返回的按钮当点击这个按钮的时候通过改变游戏的状态可以返回到上一个界面,但是当暂停界面调用过后

29、再点返回的时候会直接的返回到游戏菜单选择界面而不是游戏界面?(9)当检测到碰撞的时候这个子弹和飞机要从屏幕上除去,但是当使用向量移除的时候会出现闪屏的效果?第2章 系统分析2.1 功能概述本系统主要要实现的功能有游戏菜单的绘制,其中游戏菜单包括“主菜单”,“关卡选择菜单”,“武器商店武器选择菜单”。游戏控制的实现,游戏控制方面包含通常的“开始”,“退出”,“继续”,游戏中的“暂停”还有关卡选择的控制。本系统为增进游戏可玩性特别设置了武器商店武器商店包括如上图五大类。本系统在游戏运行方面做了背景、子弹、敌机、玩家飞机、金币、生命、游戏菜单和飞弹的绘制。2.2 功能分析2.2.1 主要功能分析本系

30、统的菜单功能模块主菜单包括开始游戏、游戏帮助、关于游戏、音乐开关、退出游戏和继续游戏。其中开始游戏并不是直接进入游戏,而是进入关卡选择菜单。继续游戏是如果有存档则读取存档后进入游戏。关卡选择菜单包括第一关到第六关的绘制和武器商店的绘制,其中每一个选择点包含着对应的标题和说明,说明文字每次向上滚动一行。武器商店武器选择菜单包含机体、机枪、弹舱、飞弹和配件的选择。对应的物品有对应的说明,武器商店界面中机体提供玩家购买飞机的地方,机枪可以让玩家升级武器,弹舱是增加在游戏可以使用的飞弹上限,飞弹是提供玩家购买飞弹的地方,配件是提供玩家购买配件的地方,配件可以增加飞机的固有属性(生命,防御)。另外本界面

31、还有剩余金币的显示,金币的余额是购买物品的关键。游戏控制模块包含了游戏的基本控制,开始、退出、继续还有游戏中的暂停和关卡选择、武器购买等。其主要原理是通过按键状态的改变,来改变游戏的状态以达到游戏的整体控制。武器商店是本系统的一大特色,其中机体一共有三种,分别子弹不同,攻击强度也不同。机枪一共有三种,即每种飞机有三种子弹类型可供购买,弹舱初始设定有五个,也即是可以填装五个飞弹。飞弹一共有三种,分别为全屏消子弹、攻击敌机、和这两者的结合。对于每种飞弹来说有不同的价格。配件设计的也是三种,暂定的三种配件分别加攻击,防御和生命这几大属性。游戏运行方面主要包含背景、子弹、敌机、玩家飞机、金币、生命、游

32、戏菜单和飞弹的绘制。其中游戏的每一关有不同的背景,背景采用的是一张首尾无间隙连接的图片。不同类的飞机有不同的子弹,玩家飞机的子弹是自动且连续的,并且子弹发射的初始位置是随玩家移动的,但是子弹出现之后的移动轨迹又是固定不变的。玩家每种飞机的子弹有四种。敌机的子弹是少量的随机的,除BOSS之外每种敌机的子弹应当不超过两种。敌机暂时设计的有两种,第一种出现位置是在屏幕的上半部分边缘随机出现,然后选择随机的移动轨迹进行移动。第一种的敌机有四种移动的轨迹。第二种敌机随机出现在屏幕的上边缘,第二种敌机有两种移动轨迹。分别斜向左下,再返回;和反向。敌机都有检测是否被攻击的方法,然后执行相应的动作。玩家飞机在

33、屏幕上出现一个,且初始坐标确定为屏幕下方中间。玩家飞机随时判断按键状态,一旦对应方向状态改变则飞机向相应方向移动飞机共有八个移动的方向上、下、左、右和左上、右上、左下、右下。玩家飞机在关卡内不会改变,只有当玩家购买了不同飞机,才会显示不同的飞机。同时玩家飞机出现的时候随之而出现的有子弹。本系统中金币有两种概念,一种是金币的数量计数,也即是持久的可被玩家看见的,提供给玩家金币余额的信息。另一种是敌机被打爆后爆出来的金币,一旦被玩家“吃掉”或移除屏幕就会消失。生命是由两张图片显示的,两张图一张生命槽,一张生命,它们和玩家飞机生命以一定关系联系起来。就构成了生命显示效果。在游戏中屏幕左下部位还有菜单

34、的绘制点击菜单的话,游戏的绘制就暂停,转为菜单的绘制,再写对应的菜单项的操作。在屏幕的右下方绘制的是飞弹,飞弹是当触发一定的按键事件时才会激活。以上所有要绘制的元素中生命条、金币余额显示、菜单、飞弹信息、玩家飞机、玩家飞机子弹、背景都是随着开始游戏同时绘制到屏幕上的,敌机、敌机所爆的金币、敌机子弹、敌机的爆炸效果、玩家飞机的爆炸效果、玩家“吃掉”奖励的提示信息等,都是在游戏运行中遵循一定的规则随时间出现的。2.2.2 关键功能分析(1)在上述功能中玩家金币余额的显示是一个难点,因为我们要做到的是任意给一个六位以内的数,然后把这六位数的每一位对应图片()然后显示在屏幕上。当这个数发生改变时,图片

35、显示的应当是和这个数相同的书,不够六位的前面显示图片零。针对这个问题我们这样思考:0-9十个数正好对应图片的分块后的十个图片。因此我们只需要把任意给出的数处理一下剥离出这个数的每一位,那么就可以和要显示的金币数对应起来,然后显示,这样就达到了金币余额的显示效果。(2)关于玩家飞机生命的绘制分析,玩家的生命在这里我们使用的是一张图片,每当玩家飞机生命减少时,图片就向左移动一定距离,配合另一张图片生命槽两相结合就可以达到生命显示的效果,其中关键的是,图片左移的距离和玩家飞机生命减少的一个比例关系。如果图片移动的过快,就会出现生命看起来已经没有了,但是玩家飞机却还活着。所以在这里我们需要算好飞机减生

36、命时,对应生命的图片应该移动多少,而且玩家飞机被不同的攻击,减的生命也不同。(3)关于敌机出现的位置及其移动的分析,敌机是本系统中极为重要的一块,敌机的出现时机我们设计是随着线程运行到一定次数,开始出现敌机,而后随机选择出现的位置,再根据出现位置确定移动的轨迹。这里要注意的是,需要让出现的敌机不会出现“初始位置在左上角,移动的方向却是左下方。”这里还有要控制如果两架敌机随机出现的位置一样且移动方向一样出现两架敌机重合的错误。还有敌机移动轨迹为曲线的问题,在本系统中,我们思考,敌机轨迹之所以为曲线,其本质是因为在移动的时候它的方向是一直在变化的。(4)关于敌机发射子弹的问题,在本系统中敌机的一切

37、行为都是自动的,所以我们要考虑敌机的子弹问题,因为敌机不可能象玩家飞机子弹一样有规律,敌机子弹的发射讲究的是一个无迹可寻。不能太密,又必须在屏幕内,而且最好在屏幕的上半部分并且敌机子弹最好又要跨过大半个屏幕尽量不要在贴近屏幕边缘发射。关于这块功能的实现我们使用的方式是设置特定的子弹发射区,也即是只有飞机移动到这一块区域,才会释放子弹,当这块区域足够小的时候,再加上敌机出现位置和移动的随机性的时候就可以组合出杂乱无序的敌机子弹。第3章 系统设计本程序是基于J2ME技术的飞行射击类游戏,为玩家打造了一个功能强大,场景真实,趣味十足的天空战斗手机游戏,本游戏共分为6关,每一关玩家都在不同的场景中战斗

38、,玩家可以通过购买武器装备来提高自身的战斗力,如果金币不够也可在打败对方飞机的时候获得对方飞机所产生的物品奖励,从而也可提高自身的战斗力,并且玩家多次的玩本游戏的话金币还可以保存下来累加起来,也可保存已经购买过武器装备,以便下次使用。3.1 功能模块设计系统功能模块图本游戏共分为以下几大模块 (1)游戏控制模块:主要控制游戏的运行状态通过改变游戏的状态来达到控制游戏的效果。(2)游戏菜单模块:主要绘制游戏中所出现的菜单包括“主菜单”、“关卡选择菜单”、“武器商店菜单”、“暂停菜单”。(3)游戏运行模块:提供一个完整游戏开始后的所需要的所有元素。包括背景、玩家飞机、玩家子弹、玩家金币余额、玩家生

39、命、敌机、敌机子弹、飞弹等元素的绘制。(4)武器商店模块:武器商店主要提供玩家购买物品的场所,购买武器花费玩家金币,可以在各方面提升玩家属性,以达到降低玩家游戏难度的目的。在本系统中我主要负责游戏运行模块的设计及其实现。3.2 系统配置方案(1)Windows XP(2)eclipse 3.5.2、Eclipse是一个开放源代码的与NetBeans、Sun ONE Studio和Borland Jbuilder类似的一种基于Java的整合型可扩展开发平台,也是目前最著名的开源项目之一,IBM在最近几年里也一直在大力支持该项目的发展,目标是将其做成用以替代IBM Visual Age for J

40、ava(简称IVJ)的下一代IDE开发环境。(3) eclipseme.feature_1.7.9_site,开发j2me手机游戏需要用的插件(4)WTK2.5.2(Wireless Toolkit2.52.2),由Oracle公司提供(5)jdk1.6(JAVA Development Kit 1.6),由Oracle公司提供(6)手机顽童模拟器 用于测试打包程序最好的模拟器选择eclipse+eclipseme+wtk是因为这三件套开发j2me手机游戏非常方便,由eclipse所提供的便捷功能,使得不必记住每一个类的方法全称,就可以轻易的书写代码。选择手机顽童模拟器,是因为手机顽童模拟器脱

41、离了eclipse开发环境,模拟起制做的手机游戏更真实。3.3 详细设计3.3.1 总体设计本系统的设计共包含GameStart、MyGameCanvas、PlayPlane、EnemyPlane、Bullet、Sound六个类的设计。GameStart类是程序的入口,系统开始时首先执行GameStart类中的构造方法,创建一个MyGameCanvas对象,并设置在当前屏幕上显示,之后执行startApp()方法开始启动游戏的主线程。Sound类实现音乐的播放。PlayPlane类继承自Sprite类是玩家飞机类,主要进行玩家飞机的绘制和一些相关动作。其中主要有move()方法控制玩家飞机的移

42、动。fire()方法控制玩家飞机的开火。setExplod()方法设置爆炸初始化工作。 playPlaneExplod()具体绘制玩家飞机的爆炸。getmoney()方法用来显示当玩家飞机得到金币时所显示的提示信息。setfeidanPosition()方法用来设置飞弹初始化工作。drawfeidan()方法用来具体绘制飞弹。setActivate()方法设置是否激活玩家子弹。EnemyPlane类继承自Sprite类是敌机类,主要进行敌机的绘制和一些相关动作。其中setEnemyPlanePosition()方法设置敌机的出现位置,并且选择移动的轨迹。move()方法控制敌机的移动。fire

43、()方法控制敌机的开火。setExplodPosition()方法设置敌机爆炸的初始坐标。并激活敌机爆炸。enemyPlaneExplod()敌机爆炸的绘制。setmoneyPosition()方法设置敌机爆金币的初始坐标,并激活金币绘制。makeMoney()方法是当敌机被玩家飞机打爆后的金币的绘制。getEnemyPlaneType()方法用来得到敌机的类型。setActivate()方法设置是否激活敌机子弹。Bullet类继承自Sprite类是子弹类,主要用来绘制子弹,以及设置子弹移动的轨迹,Bullet类有两个构造方法,分别对应玩家飞机类和敌机类。其中方法是drawBullet()根据

44、飞机类型的不同而选择不同的子弹发射方式。MyGameCanvas类继承自GameCanvas类实现了Runnable接口,它是本程序的核心,在MyGameCanvas类中控制着游戏的一切运行,其中load()方法用来加载游戏所要用到的资源。init()做一些初始化工作。这两个方法在构造方法中被调用。start()方法用来启动游戏线程。run()方法中执行线程要执行的代码。tick()方法和render()方法在run()方法中被执行。tick()主要根据“游戏状态”来控制游戏的运行速度。render()方法根据“游戏状态”来决定绘制的内容。drawLogo()方法用来绘制Logo界面。draw

45、Menu()方法用来绘制主菜单界面。drawAbout()方法用来绘制关于界面。drawHelp()方法用来绘制帮助界面。drawSound()方法用来绘制音乐设置界面。drawPlayMenu()方法用来绘制关卡选择界面。drawShop()方法用来绘制武器商店界面。drawGame()方法用来绘制游戏运行界面。keyPressed()方法用来侦听按键状态并做以处理(如改变游戏状态等)。游戏开始后初始游戏状态为GAME_STATE_LOGO状态,程序根据tick()方法设置Logo显示的速度,再根据render()方法判断并调用drawLogo()方法绘制Logo界面,当Logo界面显示完之

46、后将游戏状态改为主菜单(GAME_STATE_MENU)状态,线程重新执行render()方法是由于游戏状态的改变所以调用drawMenu()方法绘制主菜单,然后玩家对游戏进行操作选择相应的选项,在keyPressed()方法中通过查看玩家按下的键值来改变为对应的状态,再在render()中根据游戏状态执行绘制相应的界面的动作。如果游戏状态为关卡选择状态(GAME_STATE_PLAY_MENU),就调用drawPlayMenu()方法绘制关卡选择界面,如果游戏状态为GAME_STATE_SHOP就调用drawShop()方法绘制游戏武器商店。如果游戏状态为游戏运行状态(GAME_STATE_

47、PLAY),就调用drawGame()方法绘制游戏运行的界面。在tick()方法中每一种游戏状态有一个速度,其思想是先获得系统当前时间,然后执行代码,之后再获取当前系统时间,利用后者减去前者就得到了代码执行所花费的时间,再用游戏速度减去代码执行花费的时间,就可以达到一个游戏速度控制的目的。3.3.2 主体设计(1)游戏主菜单界面的绘制是先调用系统提供的类Graphics中的drawImage()方法在缓冲区上绘制背景图片,再在合适位置设置一个恰好容下菜单选项的剪裁区,然后将菜单图片显示的坐标用按键控制起来,这样图片每次显示的只是剪裁区的一部分,最后使用flushGraphics()方法将缓冲区的内容绘制到屏幕上,就可以看到最终的菜单效果了。(2)游戏的关卡选择界面是当游戏状态为GAME_STATE_PLAY_MENU时调用d

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com