斗破苍穹手机设计游戏毕业论文

上传人:沈*** 文档编号:99373356 上传时间:2022-05-31 格式:DOC 页数:28 大小:150.50KB
收藏 版权申诉 举报 下载
斗破苍穹手机设计游戏毕业论文_第1页
第1页 / 共28页
斗破苍穹手机设计游戏毕业论文_第2页
第2页 / 共28页
斗破苍穹手机设计游戏毕业论文_第3页
第3页 / 共28页
资源描述:

《斗破苍穹手机设计游戏毕业论文》由会员分享,可在线阅读,更多相关《斗破苍穹手机设计游戏毕业论文(28页珍藏版)》请在装配图网上搜索。

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

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 -1.4.3 待解决的关键问题-

6、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 系统发布- 19 -4.4 系统操作- 20 -4

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

8、J2ME技术开发了一款飞行射击类手机游戏。本论文着眼于J2ME技术的应用,旨在开发一款可商用的手机游戏。本论文介绍了J2ME的相关技术与本程序的结构分析和具体功能的实现。本论文第一章主要介绍了研究的背景、研究现状与发展趋势等。第二章主要介绍了本系统所拥有的主要功能和对功能进行分析。第三章主要介绍立刻本系统的设计思想。第四章主要介绍系统的实施。本系统充分运用MIDP2.0游戏开发包的各个类,实现手机按键控制游戏主角飞机的上下左右的运行,飞弹处理,商店物品购买的实现。程序控制敌机与子弹的运行,位置等。本系统中使用了双缓冲技术,运行起来无闪屏。但是由于时间与技术原因,本系统的功能尚未完善。关键字:J

9、2ME;手机游戏;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 application of equipment, intelligent,

10、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 the mobile phone value-added s

11、ervice 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 application, designed to develop a c

12、ommercial 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 trend. The second chapter mainly

13、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 package of various types of mob

14、ile 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. But because of the time and th

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

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

17、艺术享受和健康愉快的补充。游戏软件是一种与文化背景密切联系的产品,具有很强的民族性和丰富的文化涵。伴随着游戏软件在市场上的销售,与其相关的文化也随之传播。因此发展我国自主的益智、健康的游戏软件已是当务之急。游戏是一种基于计算机的应用软件,是新型的休闲娱乐方式。当前开发的游戏软件应该做到知识性、娱乐性、趣味性、教育性相统一。1.2 研究现状与发展趋势1.2.1 国外研究现状在国外,手机游戏正在经历一个黄金发展时期。日本是游戏产业最发达的国家,早在几年前,日本的手机游戏业就已经蓬勃发展起来。就拿全球最大的手机Java游戏霸主宫路武来说,从他2000年创办手机游戏公司开始,只花了4年时间,就在日本这

18、个全球最大的手机游戏市场建立了霸业,实现年营收2300万美元的奇迹。虽然美国相对于日本与一些欧洲国家,在手机Java游戏方面的发展相对滞后,但是在2003年,其手机游戏市场的收入也已经达到1600万美元。在国,有着近3亿的手机用户,即使只有10%的用户,每月只下载一款游戏,也足以使其形成一个规模庞大的产业。但是目前仅有不足1%的用户下载过手机游戏,这使得这块被无数人看好的市场并没有达到和人们预期相吻合的水平。人们似乎更容易接受移动其他的增值业务(比如短信、彩铃业务等),而对手机游戏的认知度却相当低。1.2.2 发展趋势未来的手机游戏平台因为ATI和nVIDIA两大PC显示芯片厂商专业级水准的加

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

20、本,是为嵌入系统而开发的小型标准三维(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,这是微软专为移动设备开发的,其中m就是mobile 的意思。目前Direct3Dm尚在制定阶段, nVIDIA在法国戛纳举行

21、的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类中的音乐播放技术来实现游戏的背景音乐。其中用到一些算法如金币取值绘制对应的数字图片和解决不支持nextInt()随机数等一些简单的算法。1.3.2 方案选择本程序的实现

23、方案可以通过使用2个不同的类来实现游戏的全部功能方案一:MILP1.0主要使用Canvas类,且不引入精灵类来实现使用此类来实现飞机和子弹的碰撞检测,需要亲自来编写,而最大的不足在于如果自己编写碰撞检测的话,只能达到一个特定的区域的检测,也就是子弹所在的矩形区域和飞机所在的矩形区域,利用是否有重叠的方法来检测碰撞,但是存在一个问题就是子弹和飞机不可能是规则的矩形图像,也就是说当子弹从飞机的左边或者右边过来的时候,当进入飞机所在的矩形区域的时候就会认为子弹碰上了飞机,但是事实上是没有碰到的,而程序确认为它们相撞了,所以这样的方法存在一个检测不准确的问题。此方案还存在着一个问题就是,不能使用双缓冲

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

25、更强大的功能,所以使用MIDLP2.0中新增加的功能来实现本程序。故选择方案2来实现此次所开发的程序。1.3.3 基本容本课题以研究基于J2ME的手机游戏开发设计与其特点,具体研究容如下:(1)手机游戏开发以与J2ME的基本理论和J2ME类库的使用(2)J2ME体系结构的研究(3)MIDP移动信息设备简表研究 MIDP的目标硬件环境 MIDP应用程序 CLDC 和MIDP库中的类(4)JEME API 的研究 精灵类的应用 分块图层类的应用以与 图层管理器的应用 各种事件发生器的应用1.4技术要求、研究方法和待解决的关键问题1.4.1 技术要求(1)GameStart类主要提供程序的入口,设置

26、Displayable对象和启动线程,以与实现程序的退出功能。(2)MyGameCanvas类程序最主要是用来在屏幕上绘制游戏选择菜单界面、游戏帮助界面、关于游戏界面、游戏设置界面、关卡选择界面、商店物品购买界面和购买成功提示界面,以与玩家飞机和敌机的绘制、子弹与飞机碰撞的检测、金币图片的绘制、玩家飞机生命的绘制,实现了按键的侦测和事件处理。(3)EnemyPlane类主要实现了产生敌机以与移动的控制以与移动。(4)Bullet类主要实现了敌机子弹和玩家子弹的产生以与移动的控制。(5)PlayPlane类主要实现了玩家飞机的产生和移动。(6)Sound类主要实现游戏背景音乐的播放。1.4.2

27、研究方法(1)参考现有的例子,深刻理解它的整体执行流程所具有的各功能,读懂程序的关键部分代码,使对J2ME射击类(FPS)游戏的整体开发流程有个比较清楚的认识,最后构思出本程序所要实现的功能整体的流程。(2)在对J2ME射击类(FPS)游戏有个清晰的认识和了解,并且对自己的的程序有个清晰的构思,然后按照软件开发的总过程进行设计,经历定义和计划、需求分析、软件设计、软件编码、软件测试等过程,研究开发自己的程序。1.4.3 待解决的关键问题(1)关于界面的文字说明如何依次的向上移动?(2)玩家获得的金币如何动态的使用图片显示出来?(3)商店界面物品如何根据选择的装备种类而画出相应的装备并且显示相应

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

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

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

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

32、机有不同的子弹,玩家飞机的子弹是自动且连续的,并且子弹发射的初始位置是随玩家移动的,但是子弹出现之后的移动轨迹又是固定不变的。玩家每种飞机的子弹有四种。敌机的子弹是少量的随机的,除BOSS之外每种敌机的子弹应当不超过两种。敌机暂时设计的有两种,第一种出现位置是在屏幕的上半部分边缘随机出现,然后选择随机的移动轨迹进行移动。第一种的敌机有四种移动的轨迹。第二种敌机随机出现在屏幕的上边缘,第二种敌机有两种移动轨迹。分别斜向左下,再返回;和反向。敌机都有检测是否被攻击的方法,然后执行相应的动作。玩家飞机在屏幕上出现一个,且初始坐标确定为屏幕下方中间。玩家飞机随时判断按键状态,一旦对应方向状态改变则飞机

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

34、弹是当触发一定的按键事件时才会激活。以上所有要绘制的元素中生命条、金币余额显示、菜单、飞弹信息、玩家飞机、玩家飞机子弹、背景都是随着开始游戏同时绘制到屏幕上的,敌机、敌机所爆的金币、敌机子弹、敌机的爆炸效果、玩家飞机的爆炸效果、玩家“吃掉”奖励的提示信息等,都是在游戏运行中遵循一定的规则随时间出现的。2.2.2 关键功能分析(1)在上述功能中玩家金币余额的显示是一个难点,因为我们要做到的是任意给一个六位以的数,然后把这六位数的每一位对应图片()然后显示在屏幕上。当这个数发生改变时,图片显示的应当是和这个数一样的书,不够六位的前面显示图片零。针对这个问题我们这样思考:0-9十个数正好对应图片的分

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

36、,敌机是本系统中极为重要的一块,敌机的出现时机我们设计是随着线程运行到一定次数,开始出现敌机,而后随机选择出现的位置,再根据出现位置确定移动的轨迹。这里要注意的是,需要让出现的敌机不会出现“初始位置在左上角,移动的方向却是左下方。”这里还有要控制如果两架敌机随机出现的位置一样且移动方向一样出现两架敌机重合的错误。还有敌机移动轨迹为曲线的问题,在本系统中,我们思考,敌机轨迹之所以为曲线,其本质是因为在移动的时候它的方向是一直在变化的。(4)关于敌机发射子弹的问题,在本系统中敌机的一切行为都是自动的,所以我们要考虑敌机的子弹问题,因为敌机不可能象玩家飞机子弹一样有规律,敌机子弹的发射讲究的是一个无

37、迹可寻。不能太密,又必须在屏幕,而且最好在屏幕的上半部分并且敌机子弹最好又要跨过大半个屏幕尽量不要在贴近屏幕边缘发射。关于这块功能的实现我们使用的方式是设置特定的子弹发射区,也即是只有飞机移动到这一块区域,才会释放子弹,当这块区域足够小的时候,再加上敌机出现位置和移动的随机性的时候就可以组合出杂乱无序的敌机子弹。第3章 系统设计本程序是基于J2ME技术的飞行射击类游戏,为玩家打造了一个功能强大,场景真实,趣味十足的天空战斗手机游戏,本游戏共分为6关,每一关玩家都在不同的场景中战斗,玩家可以通过购买武器装备来提高自身的战斗力,如果金币不够也可在打败对方飞机的时候获得对方飞机所产生的物品奖励,从而

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

39、可以在各方面提升玩家属性,以达到降低玩家游戏难度的目的。在本系统中我主要负责游戏运行模块的设计与其实现。3.2 系统配置方案(1)WindowsXP(2)eclipse3.5.2、Eclipse是一个开放源代码的与NetBeans、Sun ONE Studio和Borland uilder类似的一种基于Java的整合型可扩展开发平台,也是目前最著名的开源项目之一,IBM在最近几年里也一直在大力支持该项目的发展,目标是将其做成用以替代IBM Visual Age for Java(简称IVJ)的下一代IDE开发环境。(3)eclipseme.feature_1.7.9_site,开发j2me手机

40、游戏需要用的插件(4)WTK2.5.2(WirelessToolkit2.52.2),由Oracle公司提供(5)jdk1.6(JAVADevelopmentKit1.6),由Oracle公司提供(6)手机顽童模拟器 用于测试打包程序最好的模拟器选择eclipse+eclipseme+wtk是因为这三件套开发j2me手机游戏非常方便,由eclipse所提供的便捷功能,使得不必记住每一个类的方法全称,就可以轻易的书写代码。选择手机顽童模拟器,是因为手机顽童模拟器脱离了eclipse开发环境,模拟起制做的手机游戏更真实。3.3 详细设计3.3.1 总体设计本系统的设计共包含GameStart、My

41、GameCanvas、PlayPlane、EnemyPlane、Bullet、Sound六个类的设计。GameStart类是程序的入口,系统开始时首先执行GameStart类中的构造方法,创建一个MyGameCanvas对象,并设置在当前屏幕上显示,之后执行startApp()方法开始启动游戏的主线程。Sound类实现音乐的播放。PlayPlane类继承自Sprite类是玩家飞机类,主要进行玩家飞机的绘制和一些相关动作。其中主要有move()方法控制玩家飞机的移动。fire()方法控制玩家飞机的开火。setExplod()方法设置爆炸初始化工作。 playPlaneExplod()具体绘制玩家

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

43、od()敌机爆炸的绘制。setmoneyPosition()方法设置敌机爆金币的初始坐标,并激活金币绘制。makeMoney()方法是当敌机被玩家飞机打爆后的金币的绘制。getEnemyPlaneType()方法用来得到敌机的类型。setActivate()方法设置是否激活敌机子弹。Bullet类继承自Sprite类是子弹类,主要用来绘制子弹,以与设置子弹移动的轨迹,Bullet类有两个构造方法,分别对应玩家飞机类和敌机类。其中方法是drawBullet()根据飞机类型的不同而选择不同的子弹发射方式。MyGameCanvas类继承自GameCanvas类实现了Runnable接口,它是本程序的

44、核心,在MyGameCanvas类中控制着游戏的一切运行,其中load()方法用来加载游戏所要用到的资源。init()做一些初始化工作。这两个方法在构造方法中被调用。start()方法用来启动游戏线程。run()方法中执行线程要执行的代码。tick()方法和render()方法在run()方法中被执行。tick()主要根据“游戏状态”来控制游戏的运行速度。render()方法根据“游戏状态”来决定绘制的容。drawLogo()方法用来绘制Logo界面。drawMenu()方法用来绘制主菜单界面。drawAbout()方法用来绘制关于界面。drawHelp()方法用来绘制帮助界面。drawSou

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

46、u()方法绘制主菜单,然后玩家对游戏进行操作选择相应的选项,在keyPressed()方法过查看玩家按下的键值来改变为对应的状态,再在render()中根据游戏状态执行绘制相应的界面的动作。如果游戏状态为关卡选择状态(GAME_STATE_PLAY_MENU),就调用drawPlayMenu()方法绘制关卡选择界面,如果游戏状态为GAME_STATE_SHOP就调用drawShop()方法绘制游戏武器商店。如果游戏状态为游戏运行状态(GAME_STATE_PLAY),就调用drawGame()方法绘制游戏运行的界面。在tick()方法中每一种游戏状态有一个速度,其思想是先获得系统当前时间,然后

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

48、layMenu()方法绘制而成的。程序首先绘制界面的背景,并执行背景随线程每执行一次向下移动5个像素。实现背景的滚动显示。之后在指定坐标绘制关卡图,然后绘制选择的关卡的光标,光标采用两图片轮换显示。将每一个关卡选择点对应一个数组下标,并且把关卡的对应说明也对应此数组,在键盘事件过一个变量来控制关卡的光标显示,和对应关卡的说明文字的显示。说明文字一次只能显示4行,并把下面文字的依次向上移动一行。(3)游戏的武器商店界面包含着背景的绘制,类别显示的绘制,剩余金币的绘制,对应类的物品绘制,选择的类别和物品的提示显示,选择的物品的说明文字的绘制。武器商品绘制的思想是二维数组,第一维为商品的类别,第二维

49、为具体的商品,把类别编号0-4五类,在keyPressed()方法中根据左右按键状态的改变来改变选择的类别,根据选择的类别绘制对应类别下应该显示的物品集合,把每一类下的物品从0开始编号,使用上下按键控制选中的物品,初始选择的是每一类的第0号商品,根据选择的类别编号+商品编号来唯一确定选择了哪一个商品,根据类别的数量和类别下商品的数量来编写一个二维的对应商品的说明数组。最终达到选择的物品和物品的说明达到同步显示的效果。绘制选中的商品信息提示是根据选择的类别加类别下的商品来确定绘制在哪个位置。绘制商品的图片也是采用这种思想,将图片名称按照类别号+商品号定义,这样做将大量减少代码的抒写。当选中对应商

50、品后,点击购买,程序首先判断金币是否足够,如果金币足够,则改变对应的变量,以达到购买的效果,如果金币不够,那就弹出购买失败的提示框。在这里背景和商品是直接绘制图片,金币余额和类别是用的分块图层,类别的选中效果,是根据选中的类别然后采用另外一除显示效果不同外其他都一样的图片进行覆盖而达到的。在keyPressed()方法中还做了一些其他的逻辑控制(例如:如果当前选择的类别一下的商品二,这时直接按下右键,那么选择的商品就应该重新定位到类别二下的第一个)。(4)游戏的运行界面是调用drawGame()方法进行绘制的,首先判断游戏是运行、暂停还是失败,如果玩家飞机的生命在运行中变为小于或等于零,那么就

51、判定游戏失败,执行一定时间的失败界面然后返回关卡选择界面,在这段时间中做一些失败处理,且暂停按键无效。如果玩家点击了暂停按键那么就绘制暂停菜单,并且停止游戏的绘制。在其中选中的菜单项要区别于其它选项。当游戏运行时,程序判断不处于暂停或其它状态,之后再根据选择的关卡来确定绘制哪一关。在决定绘制哪一关后,先进行一些初始化工作,为程序后续运行做准备。之后使用分块图层创建一个两行一列的分块每一块大小为屏幕大小,分别显示不同坐标然后每次向下移动一个像素,实现地图的滚动。然后绘制生命槽和生命,生命随玩家飞机生命减少而减少。根据金币数绘制金币,使用求余和整除结合可以将一个数的每一位剥离出来,然后对应数字图片

52、,使用分块图层技术将金币数量显示。在飞弹向量中读取飞弹的相关信息,然后绘制在屏幕的右下方。在初始化的时候根据玩家飞机的类型创建玩家飞机对象并绘制对应的玩家飞机,玩家飞机初始位置位于屏幕下方中部,使用paint()方法绘制,之后调用玩家飞机类的move()方法fire()方法,getMoney()方法,drawfeidan()方法和playPlaneExplod()。分别侦听玩家飞机的移动,开火,得到金币,发射飞弹,爆炸。其中移动方法根据玩家飞机的按键状态来判断向什么方向移动。开火方法根据传递的子弹类型,和线程运行的次数加上飞机本身的类型来决定子弹的发射,如果玩家飞机和金币碰撞后则金币增加并显示

53、得到金币信息。如果玩家按下了飞弹发射键,则激活飞弹,在屏幕上绘制飞弹,并执行飞弹的相应动作。如果玩家飞机被敌机子弹击中或碰到敌机,就激活玩家飞机爆炸效果,玩家生命相应减少。判断如果玩家飞机生命小于或等于零则把玩家飞机设为不可见,并移除玩家飞机的所有子弹,且开始执行失败界面,一定时间后自动返回关卡选择界面。敌机的出现是依据于线程运行的次数,设计一个线程执行计数器只在线程正常运行的时候增加,当计数器为某一值时执行生成一个敌机对象,并把它添到敌机向量中,然后使用随机数调用敌机对象的setEnemyPlanePosition()方法设置初始位置,并确定敌机的移动,这些在一个关卡一个只能运行一次。之后使

54、用循环语句把每一个敌机对象遍历取出,并调用move()方法使敌机按照预定的轨迹移动,fire()方法控制敌机发射子弹,enemyPlaneExplod()方法来绘制敌机的爆炸,makeMoney()方法控制敌机爆金币,其中fire、enemyPlaneExplod、makeMoney方法都只用作侦听,并不用来控制。当敌机移动到子弹区域时,即判断敌机的横纵坐标,如果敌机移动到了指定的子弹区就调用setActivate()方法传递true值,激活子弹,否则传递false值。敌机超出屏幕的话敌机设为不可见,如果敌机可见的前提下,生命小于零,则代表敌机与玩家飞机或子弹发生了碰撞,那么敌机设为不可见,并

55、且调用敌机对象的setExplodPosition()方法其中传递的值为敌机的当前坐标,激活敌机爆炸效果,同时调用setmoneyPosition()方法,如果随机值是产生金币,就激活金币在屏幕上绘制出来。如果敌机与玩家飞弹碰撞的话,执行敌机生命减少。其中要注意的是敌机数量和子弹的控制,和玩家飞机子弹的控制。良好的控制其数量可以很好的提高程序性能。第4章 系统实施4.1 系统编码(1)游戏状态判断的实现public void render(Graphics g)switch (gameState) case GAME_STATE_LOGO:drawLogo(g); break;case GAM

56、E_STATE_MENU:drawMenu(g); break;case GAME_STATE_PLAY_MENU:drawPlayMenu(g); break;case GAME_STATE_ABOUT:drawAbout(g); break;case GAME_STATE_HELP:drawHelp(g); break;case GAME_STATE_SOUND:drawSound(g); break;case GAME_STATE_PLAY:drawGame(g); break;case GAME_STATE_SHOP:drawShop(g); break;default:break;(

57、2)敌机与子弹碰撞检测的实现for(int j=0;jenemyPlane.EnemybulletVector.size();j+)bt1=(Bullet)enemyPlane.EnemybulletVector.elementAt(j);if(bt1.collidesWith(playplane, true)bt1.setVisible(false);System.out.println(敌机子弹碰到玩家);(3)玩家飞机的动作。if(PlayPlane.playPlaneHP0 & feidanActive)playplane.setfeidanPosition();feidanVecto

58、r.removeElementAt(0); feidanActive=false;playplane.drawfeidan(g);4.2 系统测试4.2.1 测试方法(1)在需要测试的地方写入System.out.println()语句 将需要了解的数据在控制台输出查看结果(2)运行程序,观看执行的效果是否与预期的结果一致4.2.2 测试项目(1)gamestate变量值的变化(2)当玩家飞机碰到敌机子弹的时候生命值是否会减少,相应的生命槽显示是否会减少,当生命值为0的话是否会产生爆炸效果,且提示游戏失败,过50个线程时间后自动的返回游戏关卡界面。4.2.3 测试数据gamestate=1敌机

59、子弹攻击力为50玩家飞机生命初始为1004.2.4 测试结果(1)gamestate的状态随着用户选择不同的菜单项而依次正确的改变,并且输出。(2)当玩家飞机与敌机子弹相撞的时候生命槽会按照一定的比例减相应的长度,并产生爆炸效果,当玩家飞机生命小于零时,会提示玩家游戏失败,过50个线程时间后自动跳转到关卡选择界面。4.3 系统发布(1)安装jdk 1.6(2)安装WTK 2.5.2(3)安装eclipse3.3.2 添加eclipseme.feature_1.7.9_site插件并且添加WTK 2.5.2中的手机模拟器。(4)在eclipse中建立项目,然后修改graduation_proje

60、ct.jad文件,在其中的midlets中点击add添加游戏运行的入口Midlet类。(5)右击项目,选择J2MECreate Package创建可执行的jar进行游戏的发布。4.4 系统操作4.4.1应用系统安装一种是使用数据线或蓝牙等下载游戏到手机上,打开,选择安装目录,然后点安装。另一种是下载到手机上,直接打开运行。4.4.2游戏操作说明打开游戏进入游戏选择菜单界面,然后点击上下左右键可以选择相应菜单,然后单击OK键进入相应界面。进入开始界面是游戏关卡选项和武器商店选项;进入帮助界面可以查看游戏的帮助信息;进入游戏关于界面可以查看游戏的一些信息;进入音乐开关界面可以设置游戏音乐是否开启,

61、点OK键即开启游戏音乐,默认为关闭。点击退出游戏即关闭游戏。进入游戏,左键:飞机左移;右键:飞机右移;上键:飞机上移;下键:飞机下移;OK键:发射飞弹;左软键:暂停;武器商店 :左右键:选择物品类别,上下键:选择物品;左软键:购买物品。总 结经过近七周的开发,在指导老师的细心教导和同学的热情帮助下,我们终于完成了毕业开题报告,毕业设计,毕业论文,详细开发说明文档。回想这段日子的经历和感受,我感慨万千,在这次毕业设计的过程中,我们拥有了无数难忘的回忆和收获。在我们组成员的商讨下我们的题目定了下来,是:斗破苍穹飞行射击类游戏。当题目定下来的时候,我们当时便立刻着手资料的收集工作中,从网上下载了十几

62、款市场上的手机游戏,并提取其中的图片再加上自己的加工,再加上参考别人的手机游戏设计思想,又在导师细心的指导下,终于使我们对我们的程序有了相当的把握。为了本次的毕业设计与论文,我们放弃了玩的时间。在设计中虽然遇到了诸多的困难,但在小组讨论和老师的帮助下困难一个一个的解决掉了,项目也慢慢成型。经过多次测试和仔细修改,游戏终于完成了。整个过程中,从需求分析到设计、编码、测试,我都努力让自己以前学的知识运用到本游戏的开发中,尽量保证整个系统的开发进度和质量,顺利完成这次的毕业设计,为自己的大学生涯画上一个相对完美的句号。最后经过指导老师的指导,我们经过不断努力学习,终于完成了这个作品。在制作手机游戏的过程中,我感觉我的编程能力,沟通协调能力各方面的能力

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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