飞行射击类游戏的设计与实现

上传人:枕*** 文档编号:141042376 上传时间:2022-08-23 格式:DOC 页数:13 大小:955.50KB
收藏 版权申诉 举报 下载
飞行射击类游戏的设计与实现_第1页
第1页 / 共13页
飞行射击类游戏的设计与实现_第2页
第2页 / 共13页
飞行射击类游戏的设计与实现_第3页
第3页 / 共13页
资源描述:

《飞行射击类游戏的设计与实现》由会员分享,可在线阅读,更多相关《飞行射击类游戏的设计与实现(13页珍藏版)》请在装配图网上搜索。

1、 山西大学论文 编号:54论文题目 一个飞行射击类游戏的设计与实现 姓 名 刘 全 院系、专业 计算机与信息技术学院、计算机科学与技术专业学习年限 2008 年 9 月 2012 年 7 月 指导教师 翟 岩 慧 学位级别 学 士 2012年4月3日一个飞行射击类游戏的设计与实现学生姓名:刘全指导老师:翟岩慧内容提要: 本文主要阐述了一个飞行射击类游戏的设计与实现。该游戏主要是基于Java语言,使用Graphics2D类,Thread,AWT/Swing开发的。主要实现了游戏者控制一架小飞机躲避敌方炮弹,并且小飞机可以发射炮弹击毁敌机。关键字: Java Swing Graphics2D Th

2、read 飞行射击1 绪论在信息社会中,随着经济的迅速发展,人们的生活和学习发生了巨大变化。一些休闲小游戏已经走进人们的生活,但当今大部分游戏只注重画面与音乐,不注重剧情与可玩性,计算机配置要求也越来越高。因此设计一款简单,可玩性好的小游戏为人们在工作与学习的闲暇放松紧张的心情,提高工作学习效率已经非常有必要。同时由于计算机技术的不断进步,Java应用程序产生的增值服务逐渐体现出其非凡的影响力。这为游戏的发展奠定了坚实的基础,使得游戏的发展也发生着巨大的变化,再加上多媒体技术的支持,使得游戏也成为了我国的一大产业。着眼于J2ME技术的应用,本人制作了一款简单的飞行射击类游戏。本文所阐述的飞行射

3、击类游戏,主要是实现了简单的飞行射击,没有在界面上做过多的修饰,游戏各部分功能已实现,并且游戏对计算机的配置要求也不高,而且游戏娱乐性也较强。2 相关理论与技术2.1 Java Java1是由Sun Microsystems公司于1995年开发完成的Java程序设计语言和Java平台的总和。用Java实现的Hot Java浏览器展示了Java的魅力,有跨平台的,动感的Web,和Internet计算。从此,Java被计算机程序员广泛接受并推动了Web的迅速发展,通常使用的浏览器现在支持Java Applet。另一方面,Java技术也不断更新。Java平台由Java虚拟机2和Java应用编程接口构

4、成。Java应用编程接口为Java应用提供了一个独立操作系统的标准接口,分为基本部分和扩展部分。操作系统平台上安装一个Java平台之后,Java应用程序就可运行。Java平台已经嵌入了几乎所有的操作系统。这样Java程序可以只编译一次,就可以在各种系统中运行。2.2 Java Graphics2D Graphics2D 类扩展了Graphics类,提供了对几何形状、坐标转换、颜色管理和文本布局更为复杂的控制。它是用于在 Java(tm) 3-4平台上呈现二维形状、文本和图像的基础类。2.2.1 坐标空间所有传递到Graphics2D对象的坐标都在一个与设备无关并且名为用户空间的坐标系统中指定的

5、,这是应用程序使用的坐标系统。Graphics2D对象包含一个AffineTransform对象作为其呈现状态的一部分,后者定义了如何将坐标从用户空间转换到设备空间中与设备相关的坐标。设备空间中的坐标通常是指单独的设备像素,并根据这些像素之间无限小的间距对齐。某些对象可用于将对存储器的呈现操作捕获到图形元文件中,用于以后在未知物理分辨率的具体设备上播放。由于在捕获呈现操作时分辨率可能未知所以设置Graphics2D的Transform将用户坐标转换为虚拟设备空间,该设备空间与目标设备的预期分辨率接近。如果估计值不正确,则在播放时可能需要进一步转换。某些由呈现属性对象执行的操作发生在设备空间中,

6、但所有 Graphics2D 方法都采用用户空间坐标。每个 Graphics2D 对象都与一个定义了呈现位置的目标相关联。Graphics Configuration 对象定义呈现目标的特征,如像素格式和分辨率。 2.2.2 呈现过程确定呈现内容,将呈现操作限制在当前的Clip。Clip由用户空间中的Shape指定,并由该程序使用Graphics和Graphics2D的各种Clip操作方法进行控制。此用户剪贴区由当前的 Transform转换到设备空间中,并且与设备剪贴区组合,后者是通过窗口可见性和设备范围定义的。用户剪贴区和设备剪贴区的组合定义了复合剪贴区,它确定了最终的剪贴区域。用户剪贴区

7、不能由呈现系统修改,以反映得到的复合剪贴区。确定呈现的颜色。使用 Graphics2D 上下文中当前的Composite属性将颜色应用于目标绘图面。 2.2.3 呈现兼容性问题JDK(tm)1.1呈现模型是基于像素化的模型,该模型的坐标无限细分,位于像素之间。使用一个像素宽的画笔执行绘制操作,在路径锚点向下和向右填充像素。JDK 1.1呈现模型与大多数现有平台呈现类的功能相一致,需要将整数坐标分析为离散的画笔,使其完全落在指定数量的像素上。Java 2D(tm) 7-8 API支持防重叠呈现器。与像素 N+1 相对,一像素宽的画笔不需要完全落在像素N上。该画笔可以部分落在这两个像素上。不需要为

8、宽画笔选择一个偏离方向,因为画笔遍历边缘发生的混合可让画笔的子像素位置对用户可见。Java 2D API维持了与JDK 1.1呈现行为的兼容性,因此遗留操作和现有呈现器行为在Java 2D API下未改变。定义了映射到常规Draw和Fill方法的遗留方法,它明确指示Graphics2D根据Stroke和Transform属性和呈现提示的设置来扩展Graphics的方法。 2.3 Java GUI图形用户界面是指采用图形方式显示的计算机操作用户界面。这种面向客户的系统工程设计其目的是优化产品的性能,使操作更人性化,减轻使用者的认知负担,使其更适合用户的操作需求,直接提升产品的市场竞争力。 GUI

9、即人机交互图形化用户界面设计。纵观国际相关产业在图形化用户界面设计方面的发展现状,许多国际知名公司早已意识到GUI在产品方面产生的强大增值功能,以及带动的巨大市场价值,因此在公司内部设立了相关部门专门从事GUI的研究与设计,同业间也成立了若干机构,以互相交流 GUI 设计理论与经验为目的。随着中国IT产业,移动通讯产业,家电产业的迅猛发展,在产品的人机交互界面设计水平发展上日显滞后,这对于提高产业综合素质,提升与国际同等业者的竞争能力等等方面无疑起了制约的作用。 1)GUI视窗: 应用程序为使用数据而在图形用户界面中设置的基本单元。应用程序和数据在窗口内实现一体化。在窗口中,用户可以在窗口中操

10、作应用程序,进行数据的管理、生成和编辑。通常在窗口四周设有菜单、图标,数据放在中央。 2)GUI菜单:将系统可以执行的命令以阶层的方式显示出来的一个界面。一般置于画面的最上方或者最下方,应用程序能使用的所有命令几乎全部都能放入。重要程度一般是从左到右,越往右重要度越低。命定的层次根据应用程序的不同而不同,一般重视文件的操作、编辑功能,因此放在最左边,然后往右有各种设置等操作,最右边往往设有帮助。一般使用鼠标的第一按钮进行操作。 3)Java中的GUI实现方式: 针对特定的图形设备输出接口,自行开发相关的功能函数。 购买针对特定嵌入式系统的图形中间软件包。 采用源码开放的嵌入式GUI系统。 使用

11、独立软件开发商提供的嵌入式GUI产品。2.4 Java SwingSwing是一个用于开发Java应用程序用户界面的开发工具包。它以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格。Swing开发人员只用很少的代码就可以利用Swing丰富、灵活的功能和模块化组件来创建优雅的用户界面。 创建图形界面步骤:(1)导入Swing包 (2)选择界面风格 (3)设置顶层容器 (4)设置按钮和标签 (5)将组件放到容器上 (6)为组件增加边框 (7)处理事件 Swing采用了一种MVC的设计范式,即“模型-视图-控制”,其中模型用来保存内容,视图用来显示内容,控制器用来控制用户输

12、入。 Swing外观感觉采用可插入的外观感觉。在AWT组件中,由于控制组件外观的对等类与具体平台相关,使得AWT组件总是只有与本机相关的外观。Swing使得程序在一个平台上运行时能够有不同的外观。用户可以选择自己习惯的外观。3 需求分析3.1 目标游戏要求 本游戏适合于休闲游戏,这是一款飞行射击的游戏。游戏程序是一项精度要求很高的程序系统,因此代码利用率很高。一个实时运行的游戏,每秒都会运行成千上万事件,绘图事件,键盘事件都会以极高的频率在后台等待响应,若有丝毫的差别都将很容易导致程序在运行不久后可能出现严重错误,甚至死循环。因此,其逻辑设计应当相当严谨,须将所有可能发生的事件及意外情况考虑在

13、设计中。飞行射击游戏要求有一个可供玩家控制的小飞机,小飞机有一定的生命值,可以发射子弹击毁敌机,躲避敌机发射的子弹,若小飞机被敌机击中,则生命值减少,当生命值为0时,游戏失败,游戏分为两关,每关最后设置一个大的敌机,它拥有更多的生命值,可以发射更多的子弹,若玩家控制小飞机最后击毁敌方的Boss,则游戏胜利。3.2 系统运行环境1.运行操作系统Windows XP 或以上2.分辨率 最佳效果800*6003.3 系统开发工具1.开发环境 Eclipse2.开发语言 Java3.开发环境运行平台 Windows XP(SP3)3.4 系统的性能要求1.保证制作出来的游戏可被顺畅运行2.要求游戏能快

14、速响应玩家对小飞机的操作3.准确无误的显示玩家对小飞机的控制3.5 系统的功能要求程序运行时应该对玩家是否飞出屏幕的范围进行检测,如果飞出屏幕,就应该重新设定玩家的位置。根据游戏设定需检测玩家子弹与敌军,敌军子弹与玩家是否碰撞。如果发生碰撞,将小飞机图片替换为爆炸图片。敌人需要具有一定的智能性(如简单的跟踪功能),以便对玩家攻击,使游戏有一定的可玩性。敌人可以在一定范围内变换位置和开炮,同时应该检测敌军是否飞出了界外。游戏的画面使用Java中的Graphic类提供的方法,将玩家,敌军以及子弹画出。4 系统概要设计4.1设计思路 游戏中应设计至少三种类型的飞机,自己控制的飞机,小型的敌机,和大型

15、敌机(大BOSS),敌机可以发射子弹,玩家可以躲避敌机发射的子弹,并且发射子弹击毁敌方的飞机,三种飞机都设定一定的生命值,若被击中,则生命值减少,当玩家或敌机的生命值为0时,飞机被击毁,游戏设定两关,每关一个大BOSS,BOSS可以发射更多的子弹,并且拥有更多的生命值,并且可以根据主角飞机的位置,发射子弹,从而拥有一定子弹追踪效果。若玩家顺利躲避了小飞机的子弹,并且将BOSS消灭,则玩家胜利通关,若玩家被敌机击毁,则游戏结束。 考虑本游戏是单机小游戏,所以充分的考虑它的娱乐性,没有增加复杂的功能。4.2各个模块以及功能显示模块:将游戏过程中的全部内容显示在屏幕上,包括对玩家输入的控制信息,经过

16、后台处理后,通过显示模块显示出来。控制模块:通过对玩家输入的操作信息的判别,在将数据传输到数据处理模块。数据处理模块:控制模块传来的数据经过数据处理后,将数据传输到显示模块。数据存储模块:保存每个关卡中敌机的个数,以及几种不同的小飞机出现的次序的信息。游戏的功能模块如图1所示:数据存储模块控制模块数据处理模块显示模块 图1 游戏功能模块图5 系统详细设计5.1相关算法5.1.1碰撞检测算法在飞行射击游戏中,碰撞是最关键的技术,如果不能很好的解决,会影响玩游戏的娱乐性。因为飞行射击游戏就是碰撞的游戏躲避敌人的子弹或飞机,同时用自己的子弹去碰撞敌人。判断圆形物体只要两个物体的中心点距离小于它们的半

17、径之和就可以了。但我们要碰撞的物体是圆形子弹和方形的飞机,就需要一种精确的检测方法。例如,半径检测法,三维中的标准平台方程法,边界框法等等。我们采用边界框法,边界框是在编程中加进去的不可见的边界。边界框法,顾名思义,就是用边界框来检测物体是否发生了碰撞,如果两个物体的边界框相互干扰,则发生了碰撞。用什么样的边界框要视不同情况而定,用最近似的几何形状。当然,可以用物体的准确几何形状作边界框,在飞行射击游戏中,我们可以用矩形作近似的边界框。现在我们假设飞机是一个正方形,我的飞机是正着的、向上飞的正方形,敌人的子弹是迎面飞来的,圆形的,且飞机不会旋转(大部分游戏中都是这样的)。我们可以这样定义飞机:

18、中心点O(X1,Y1),四个顶点P0(X3,Y3)、P1(X4,Y4)、P2(X5,Y5)、P3(X6,Y6)。中心点为正方形的中心点,即中心点到四个顶点的距离相等。我们把正方形放到极坐标平面中,中心点为原点,水平线即X轴为零度角。正方形成了如图2的所示:在每个角度我们都可以找到一个距离,用以描述正方形的边。既然我们找到了边到中心点的距离,那就可以用这个距离来检测碰撞。假设,正方形和圆中心点坐标分别为(X1,Y1)和(X2,Y2),由这两个点的坐标求出两点的距离L1及两点连线和X轴的夹角,再由求出中心点连线与正方形边的交点加圆半径L2,用这两个距离比较,从而判断正方形和圆是否碰撞。若L1L2,

19、则没有碰撞,若L1=L2,则碰撞。如图3所示: 子弹坐标:X2,Y2 a 小飞机中心坐标:X1, Y1 图2 子弹与小飞机位置关系图5.1.2子弹跟踪算法本游戏使用的子弹追踪算法是根据子弹和飞机的中心位置的连线,判断子弹的飞行路径。即,在子弹初始化时和飞机此时的位置中心之间画一条直线,子弹就跟据这条直线飞行,从而实现简单子弹追踪效果,如图4所示: 两图形中心连线为L1 子弹的中心坐标:(X2,Y2) 小飞机的中心坐标:(X1,Y1) 图3 子弹与小飞机碰撞图 Y轴 子弹 X轴 飞机图4 子弹追踪小飞机示意图5.2 模块设计显示模块: (1) 初始化游戏开始界面,在主界面上显示游戏开始提示。(2

20、) 游戏开始后,通过玩家类(playA类)创建一个玩家控制的小飞机显示出来,并在数据存储模块中通过创建敌机类(enemy类)的实例加载关卡中的敌方飞机。 (3) 玩家通过控制键,控制小飞机的移动和发射炮弹,通过数据处理模块得到飞机的移动信息,通过显示模块显示出来飞机的移动和发射的炮弹。 (4) 游戏结束,显示游戏胜利或失败。 数据处理模块: (1) 数据处理分为两个部分,分别是处理每关中敌方飞机行为,和处理玩家控制小飞机的行为。 (2) 两个部分分别用多个线程实现,游戏开始后,两个线程分别启动。 (3) 控制敌方飞机的部分开始后,从关卡类(stage类)中,将敌机按顺序创建,敌机有三种不同的类

21、型,拥有不同的飞行行为(即不同的飞行路径),但发射的子弹是相同的。 (4) 控制玩家飞机的部分开始后,这部分设置了键盘监听事件,当玩家按W,S,A,D,Z时,飞机作出相应的动作。发射炮弹或左右移动,当子弹击中敌机时,敌机生命值减少,当生命值为0时,敌机图片换成爆炸图片。同样,当敌方飞机的子弹击中玩家控制飞机时,玩家的小飞机生命值减少,若生命值为0,则游戏失败,结束游戏。 (5) 游戏最后,出现游戏的大BOSS,大BOSS拥有更多的生命值,可以发射更多的子弹,并且子弹具有简单的追踪效果。控制模块:控制模块提供了玩家对小飞机的操作接口,玩家通过键盘可以操作小飞机上下左右移动发射子弹。数据存储模块:

22、数据存储模块主要存储每关中敌机出现的时间,飞机类型,出现位置,和发射子弹频率。5.3游戏详细流程图开始游戏 生成敌机信息初始化玩家控制的飞机初始化数据处理模块运行编辑好的敌军飞行用户操作 生成子弹及移动信息生成子弹及移动信息数据处理碰撞检测,子弹追踪等数据处理游戏是否结束 N Y游戏结束图5 游戏流程图 6 系统演示游戏开始界面如图7.1所示,在该游戏中,主要在一个JPanel中显示游戏过程。 玩家控制小飞机躲避敌人子弹,并且消灭敌人。玩家有一定的生命值,被子弹击中,则减少一定的生命值,若生命值为0 ,则游戏失败,若玩家消灭了大BOSS 则游戏胜利。图6 游戏开始界面敲击ENTER键就开始游戏

23、,游戏中用,对小飞机进行控制移动,如图7.2所示,按Z键控制小飞机发射炮弹击毁敌方飞机,敌方飞机有三种,各自有不同的动作(即表现形式)图7 进行游戏中的界面消灭完所有的敌方小飞机后,或者在规定时间后,没有被敌方小飞机消灭,仍然存活,则出现个大,大BOSS拥有更多的生命值,可以发射更多的子弹,子弹类型有两种,一种是规则的向四面八方发射的子弹,另一种是拥有一定的跟踪效果的子弹,如图7.3所示。图8 游戏中对战大BOSS的界面7结束语经过一学期的毕业设计,并且在老师的悉心指导下,我基本上完成了飞行射击类游戏的设计与实现,在设计期间,我查阅了大量的关于java Graphics2D和java swin

24、g 等想关的书籍,对java语言有了更进一步的认识, 同时对面向对象语言有了更加深刻的认识,在编写程序时运用了平时课堂上学到的知识,对软件工程等有了更加深刻的理解,也让我学会了动画效果的展现,虽然实际效果欠佳。游戏有许多不足的地方,首先界面不是很美观,再者飞机的类型和弹药的类型都不太丰富,游戏运行起来不是很流畅,流畅性不好,在判断子弹击中飞机的时候精度不是很高,由于时间有限,游戏只有一关,boss死了游戏就结束了,情节不是很丰富,想必对玩家的吸引力不够。本次游戏的设计与实现让我们进一步熟练了一下已学的知识,课堂上所学的内容在游戏中都得到了体现,也让我在以后的学习中更加坚定成为一名好程序员。8

25、致谢 在论文完成之际,首先感谢我的父母多年来对我学业的理解与支持;其次我真诚感谢大学期间在学习和生活上给我启迪和鼓励的所有师长和朋友,这四年中正因为与你们的默契相处才促使我不断进步逐渐成熟,同时使我的生活充实而快乐,在此我感谢您们。尤其要感谢我的指导老师翟岩慧老师,从最初收集资料、研究资料到系统的逐渐实现,直至论文的最终完成,这其中每一个阶段都倾注着翟老师的心血和汗水。没有他严格尽心的指导和细致入微的帮助,就没有本文的顺利完成,在此致以真诚的谢意。参考文献:1 克里夫特.JAVA游戏高级编程:清华大学出版社.2005.1092 张桂珠.JAVA面向对象程序设计:北京邮电大学出版社.2007.2

26、13 郎波.JAVA语言程序设计:清华大学出版社.2005.454 翁恺,肖少拥.Java语言程序设计教程:浙江大学出版社.2007.675 吴玺玺.游戏设计入门.重庆大学出版社:2005.2106 胡书敏.Servlet与JSP核心编程:清华大学出版社.2007.987 董小园.JAVA面向对象程序设计:清华大学出版社.2001.348 Cay S.Horstann Gary Cornell:JAVA核心技术.2008.1169 李尊朝.JAVA语言程序设计:中国铁道出版社. 2004.7310 袁海燕.JAVA应用程序设计100例:人民邮电出版社.2005.3911 Ernest Adam

27、s Andrew Rollings.FUNDAMENTALS OF GAME DESIGN:机械工业出版社.2009.54Design and Implementation of a Fly and Shot Game Student Liu QuanTutor Zhai YanhuiAbstract:This article focuses on a fly and shot games design and implementation. The game is based on the Java language, using the Graphics2D and Thread technology, AWT / Swing development. Its main function is that a plane can fly and hide the enemy planes shot and that plane can shot to destroy enemy plane.Keywords: java swing Graphics2D Thread Fly and Shot

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