admin管理员组

文章数量:1659743

欢迎添加微信互相交流学习哦!

项目源码:https://gitee/oklongmm/biye

     基于Java的雷电游戏
摘   要
   电脑游戏,是指在计算机上能够运转的游戏软件。这种软件具有较强的娱乐性。电脑游戏的创新和发展与硬件、软件的发展紧密相关。它能够给玩家提供一个虚拟的环境,使游戏带给了人们很多的享受和欢乐。雷电游戏因为操作简单,节奏明快,一直是纵轴射击游戏的经典之作。经常能够在手机或者计算机中见到这款游戏,深得广大玩家的喜爱,可以说是妇孺皆知的一款益智类游戏。
   本游戏基于Eclipse开发平台,以java作为编程语言,整个项目开发旨在模拟雷电游戏的飞机射击游戏。游戏界面的下部是玩家的飞机,可以根据按键控制子弹的发射,上部为敌方飞机,在界面中随机出现。在游戏过程当中,用户飞机的移动是被电脑键盘的方向键所控制的,在整个游戏过程当中,如果用户飞机的子弹与敌方飞机发生相撞时,敌方飞机就会有爆炸的效果产生。游戏中使用到的飞机、子弹均采用对应的类实现。
 
关键词:雷电;电脑游戏;java;Eclipse;


Lightning Game based on Java
Abstract
 A computer game is a game software that can run on a computer. This software has a strong entertainment function. Computer game innovation and development and hardware, software development is closely related. It can give players a virtual environment, so that the game brought a lot of people enjoy and joy. Lighting game because of simple operation, rhythmic, has been the vertical axis shooting game classic. Often in the phone or computer to see this game, won the majority of players love, can be said the all to see this game, won the majority of players love, can be said that all ages a puzzle game.
This game is a java-based lighting game, the use of Eclipse platform to achieve classic lighting games.
The entire project development is to simulate the lighting game of the aircraft shooting game, the bottom is the player’s plane, able to control the launch of the bullet, the top is a random enemy aircraft. Players can control the movement of their own aircraft through the arrow keys of the keyboard, when the player aircraft bullets hit the enemy aircraft, the enemy aircraft will appear explosion effect. The aircraft used in the game, bullets are used to achieve the corresponding class.  
Keywords: lightning; game; Java; Eclipse platform; 
目  录
摘   要    I
    Abstract    II
    1  引言    3
1.1 项目背景    3
1.2 电脑游戏的发展历史    3
        1.3国内游戏项目研究现状    5
1.4项目主要工作    6
1.5本文组织结构    7
1.6 电脑游戏的策划    7
    2  开发平台与开发技术    8
2.1 Eclipse    8
2.2 Eclipse平台    8
2.3 Java    9
2.4游戏图形界面的开发基础    11
2.5Java游戏中的基本框架    14
    3  雷电游戏模块设计    16
3.1 用户需求分析    16
3.2 可行性分析    16
3.3 总体设计原则    17
3.4 功能模块设计    18
3.4.1 游戏状态控制功能    18
3.4.2 游戏难度的调整    18
3.4.3 游戏界面绘画功能    18
3.4.4 玩家游戏控制功能    19
3.5 关键技术    19
    4  雷电功能实现    20
4.1 游戏程序设计的思路    20
4.1.1 游戏的素材选择    20
4.1.2 游戏中子弹、飞机的实现    20
4.1.3 多线程应用的途径    20
        4.2 游戏首页的实现    22
4.2.1 界面实现    22
    4.2.2 流程图    22
4.2.3 核心代码    23
4.3 游戏开始模块的实现    24
4.3.1 界面实现    24
4.3.2 流程图    25
4.3.3 核心代码    26
4.4 发射子弹模块的实现    27
4.4.1 界面实现    27
 
4.4.2 流程图    28
4.4.3 核心代码    28
    5  系统测试    31
5.1 测试的定义及其重要性    31
5.1.1 测试的定义    31
5.1.2 测试的重要性    31
5.2 测试实例的研究与选择    32
5.3 测试结果    35
总结和展望    37
参考文献    38
致  谢    39
附  录    39
 
1 引言
1.1 项目背景
作为90后的我们,在小时候都拥有属于自己的一台游戏机,里面形形色色大概有十来款游戏。像 “扫雷”、“推箱子”、“俄罗斯方块”等等,我们的童年有这些游戏陪伴我们是幸福的,令许多小伙伴都为之痴迷,即使现在,这些都是随处可见的休闲游戏。我之选择“雷电”游戏作为我的毕业设计,因为它可以代表一代人青春的回忆。
Java语言,实际上就是面向对象的编程语言。对于计算机编程者来说,使用Java最大的好处有两方面,一是就编写程序而言,非常的简单也容易使用,二是它的功能很强大。与此同时,面向对象理论得以很好的实现。“雷电”游戏的毕业设计使我对本科期间所学知识进行了巩固。
    目前常见的电脑游戏的类型有动作游戏、传统益智游戏、体育游戏、策略游戏、休闲游戏和角色扮演类游戏等。不同的类型的游戏有着自身的特点,每一种类型的游戏都有一定的支持人群。开发出一款良好的游戏,了解各种类型的基本特点是很有必要的。而“雷电”游戏就属于上述类型中的STG(射击类)游戏,STG(Shooting Game)类型游戏主要凭借远程武器与敌方开展模拟对抗,拥有绚丽的射击画面。
这个项目使我第一次全流程地独立完成整条链路的开发,对于我自己而言,是0-1的突破。万事开头难,有了这次完整项目开发的经历,以后再做游戏或者其它项目时就对全局有所把控,能够做到游刃有余。假如自己没有亲自动手设计这些,哪怕一次,就不能够真正的领会一个完整项目体系中的每个元素。在以后做一些大的项目时,就更不能对整体进行宏观思考,也就不能对具体项目中每一个细分的小模块进行合适的时间估计,导致项目开发超过预期时间,更有甚,不能完成。
1.2 电脑游戏的发展历史    
在1960年,电子计算机进入了美国的大学校园,这时候电脑游戏开始出现。在那个环境当中孕育了一大批的电脑编程高手。其中具有代表性的是1962年一名叫做拉塞尔的大学生,在美国DEC公司生产的PDP-1型计算机上编写的《宇宙战争》引起了广泛的关注。所以大多数人都把拉塞尔称作电脑游戏的发明人。从1970 年以后,计算机的发展速度逐渐加快,同时开发的成本逐步降低。再后来,布什内开发了世界上首台商业化计算机用以游戏用途,被称为“电子游戏之王”。
1970年,随着苹果公司的诞生,使得电脑游戏开始越来越商业化。不过,早期的电脑游戏界面设计等较为粗糙,但是电脑游戏的雏形已经诞生。    
1980年,随着多媒体技术渐渐走向成熟,技术先进的先行者们纷纷把目光投向电脑游戏。每一款游戏都会有详细的故事情节作为描述,1985年,日本公司任天堂开发了一款电子游戏巨作—超级马里奥,它讲述的情节是一名在意大利的管子工击败了大魔王,最终迎娶了公主也拯救了世界。这款游戏的流行程度也确立了任天堂公司在电子游戏界的称霸地位。这款游戏尽管叫做Computer,但它专心于游戏机平台的营造,舍弃了一部分计算机特征。从此以后,游戏机游戏和电脑游戏开始分道扬镳。Windows操作系统出现以后,电脑游戏的设计开始了一场新的革命,电子游戏的设计者越来越注重视觉和感官的冲击,开始向3D的方向发展。从3D Realms公司的《德军总部3D》到Id Software公司的《Doom》,电子游戏开始商品化。
1996年,《Quake》成为一款跨时代的游戏作品,相比于之前的其它射击类游戏,它是一款真正的3D游戏,给玩家带来了前所未有的虚拟真实感。《Quake》代表了计算机游戏开始渐渐向3D门槛迈入,也同时给电竞活动带来了全新的概念。
从1990年开始,即时战略游戏成为电脑上最引人关注的游戏类型。比如Westwood公司开发的《红色警戒》和《C&C》,还有《帝国时代》和《星际争霸》等等,伴随着五花八门的游戏概念的不断提出和创新,即时战略游戏的发展达到了一个新的高度。在此同时,由于3D技术的不断进步,动作游戏也获得了新生,伴随游戏的发展,动作游戏的规则也产生了一些改变,原来在2D平面上运行的动作游戏无法将一些真实的动作表现出来,而3D技术的革新,使得人物不仅前后左右运动,而且可以通过自己的视角进行观察周围环境,创造出新的动作。再到后来,随着计算机在软、硬件方面技术的进步,给电脑游戏的发展带来了强劲的动力和机遇。
21世纪以来,电脑游戏开始在网络游戏方面崭露头角。与单机版游戏不同,网络游戏的玩家需要通过连入互联网来进行游戏。所以说,网络游戏必须有用户玩家接入互联网,按照开发过程中制定的规则进行操作。其中,按照游戏形式的差异,可以分为网页游戏和客户端游戏。网页游戏是指用户不需要提前安装客户端软件,就可直接通过网络浏览器来玩的网络游戏。它所具有的优点是不会存在硬件配置不够的问题,而且开启以及关闭都很方便。网页游戏的题材和类型也都非常丰富,具有代表性的有休闲竞技等。客户端网络游戏需要预先在电脑上安装客户端进行注册自己的唯一账号,这种形式的游戏由开发该游戏的公司进行构建服务器,如今的大部分游戏都是这种类型。每个玩家在一开始都会创建自己的角色,并且这些资料都会保存在服务器端。具有代表性的游戏作品有英雄联篮球部落、魔兽世界、穿越火线、跑跑卡丁车等。
1.3 国内游戏项目研究现状
现在市场上的电脑游戏形形色色,种类杂多。而且游戏程序的设计工具也不相同。大体上包括四类:
一,利用C/C++程序设计语言,大多数大中型游戏都是将C/C++作为程序设计语言开发。C/C++所拥有的特点有运行时速度较快。
二,利用Java程序设计语言。Java程序设计语言在游戏制作方面的优势较为显著,不过这仅仅是相对于小游戏而言的,对于大型网络游戏,使用Java程序设计语言在速度方面的劣势就会越加突显。比较著名的Java语言开发工具有Sun 公司的NetBeans等。目前Java程序设计语言关于游戏的优势领域包括:基于Applet的网页游戏和手机游戏。在当前的手机游戏市场中,平台主要有Android(安卓)、iOS(苹果)、Java平台和Windows平台等。其中,iOS平台由于终端数量限制导致增长较慢,相反,Android平台以其普及度较高的平台终端正处于爆发式的增长期,此外,大多PC上开发的Java游戏也可以移植到Android智能手机平台上。
三,FlashActionScript是一种脚本语言,经常在Flash文件中进行嵌入,主要是对Flash动画流程进行控制。使用FlashActionScript语言设计出的游戏内存较小、画面逼真,因此在小游戏的设计领域迅速走红。2D平面游戏都可以用Flash编写。比如Adobe公司的Flash CS产品。
四,C#程序设计语言是由Java和C++衍化来的程序语言,拥有Java和C++的双重优点,既能够用以面向对象程序设计,同时在运行的速度方面具有较大优势。
   现如今,Java语言在游戏开发环节,也正逐步展现出它独有的特色。
1.4 项目主要工作
本次项目开发是基于JAVA的雷电游戏。
此雷电游戏通俗来说就是我方飞机和敌方之间的对决,先要做的应该是通过一个界面来达到装载整个游戏,然后就是我方飞机的移动方式(也就是通过键盘来移动),接着就是生成我方飞机的子弹(依据子弹类型的不同有不同的实现形式),准备就绪后会有敌方飞机的出现,每一个飞机会对应发射不同种类的子弹,最后是我方飞机通过键盘进行移动、射击,显示出游戏结果,然后结束游戏。
该雷电应该满足以下一些要求:
(1)游戏状态控制功能 
在进行游戏的设计时,我们应该考虑到,如何进行游戏状态的划分。简单来说,我们需要设置开始,并且要考虑到游戏中断,以及中断后回到游戏中。玩家点击开始之后,程序会调用启动页面的代码,然后进入游戏,在游戏的过程中,玩家如果由于其它工作需要离开时,可以将其中断,比如单击空格键,当需要恢复游戏现场时,再单击空格键,就可以继续游戏,当自己控制的飞机被击毁时,会有游戏结束的显现。
(2)游戏难度的调整 
    随着游戏的进行、关卡的提高,敌机的速度会越来越快、敌方飞机的数目会越来越多、子弹数量也会越快且越多。此时,带给游戏玩家的视觉冲击变得更强,需要玩家更加冷静地去躲闪以及攻击敌机。
(3)游戏界面绘画功能 
游戏主屏主要用来输出用户对我方的控制与敌方的动作显示。在游戏屏幕的左下角有全屏爆破次数的显示,这相当于游戏玩家的特殊技能,可以瞬间清除当前屏幕上的所有敌机以及子弹,在游戏屏幕的右下角会呈现玩家飞机血条,代表着当前我方飞机的状态。当血条格为空时,表示我方飞机已经被击毁,整个雷电游戏也将结束。
(4)玩家游戏控制功能
对于我方飞机的移动和子弹的发射,游戏用户可以通过控制键盘来控制。飞机的左右移动通过键盘的上、下、左、右键来实现,而我方飞机子弹的释放方式有两种,z键会释放出点状子弹,而x键会释放出线状子弹,可供游戏玩家依据需要自行选择。
1.5 本文组织结构
文本的具体内容和组织结构简述如下:
第一章,本论文的研究项目和研究背景。
第二章,此项目的开发语言以及编程环境。
第三章,用户的需求分析,可行性分析,功能模块设计以及总体原则。
第四章,实现了雷电游戏的功能模块,对雷电游戏项目过程中的核心部分进行了代码的注解。 
第五章,对实现的程序进行了测试,对整个项目做了功能评价。
1.6 电脑游戏的策划
策划主要就是对游戏的整体进行规划的工作,即在整个项目开始编写之前,要对雷电游戏的开发过程进行规划,要做到心中有数。好比在阅读一本新书时,要先通过阅读全书的目录章节对全书进行整体的了解。策划的具体工作是对游戏的整体模式进行设计,同时也要对游戏设计文档进行描述。策划的范围包括整个游戏的所有内容,此外,游戏素材需提前制作,使得游戏中的各种要素能够呈现在我们面前。而程序开发的过程则是按照策划阶段设计的游戏规则运用代码的方式加以实现。游戏的筹划通常分为:数值策划、剧情策划、关卡策划等。
基于Java的雷电游戏属于飞机射击类游戏。在游戏策划中包括关卡的设计,这一过程需要程序的实现同时配合美术资源的制作。而且,也需要根据整个任务系统的框架进行任务书的编写。

2 开发平台与开发技术
本章主要介绍该毕业设计项目所使用的开发语言和开发平台。
2.1 Eclipse
Eclipse是有名的跨平台自由集成开发环境(IDE),在最开始的时候,它作为一种开发工具,主要是为Java语言服务的,但近年来,随着各种插件的出现,它开始支持各种各样的语言,比如PHP以及C++等等。就Eclipse本身来说,它只是为开发者提供一个平台而已,但是随着各式各样插件的出现,使得Eclipse拥有较强的灵活性。许多软件开发商在Eclipse框架之上开发自己的IDE。Eclipse最吸引人的三个方面包括:一是创新性的图形API-SWT/JFace。与Java的 AWT/SWING界面不够美观、界面响应速度较慢相比,SWT/JFace极大改善了Java在这些方面的能力。二是插件机制。Eclipse以其强大的插件机制而著名,可以认为,Eclipse就是由众多的插件所组成的。到了Eclipse3.0,伴随RCP概念的推广,整个Eclipse的插件形成了清晰明了的层次关系。三是基于Eclipse插件机制开发的各种功能强大的插件。Eclipse插件的安装方法包括:直接复制法、Eclipse自带图形界面安装、使用link文件法、使用dropins安装插件等。
2.2 Eclipse平台
Eclipse是基于JAVA的可扩展开发平台。目前Java开发领域的集成开发环境层出不穷,种类达到10余种。如此多种类的IDE丰富了Java开发工具家族,但也为开发人员提出了选择难题。
这些开发模式区别较为显著,在一种开发模式下完成的项目往往不能方便地移植到另一种模式中,这就需要更加合理有效地选择适合项目目标的开发工具。
在目前的集成开发环境中,Eclipse可以说是最具发展前景的产品之一。Eclipse最早开始于1994年4月,由IBM、OTI的产品开发组创建。IBM提供了最初的Eclipse基础代码,包含JDT、Platform、PDE等。目前Eclipse项目已发展为一个庞大的Eclipse联盟,该联盟以IBM为主,有150多家软件公司参与其中,包括Borland、Software、Red Hat、Rational、Sybase等,最近Oracle也着手加入Eclipse联盟中。 
2.3 Java 
在目前的软件开发中,Java语言成为大部分人员的选择,甚至会有用户自己提出运用Java语言进行开发,可见Java语言的发展已经是深入人心,Java的流行是由于自身所拥有的特点所决定的。
   (1)平台无关性
平台无关性是Java语言所拥有的最大优势,在Java中,源文件不是直接被编译成硬件可以识别的机器指令,而是通过Java的编译器先编译成字节码文件,该字节码文件就是编译Java源程序时得到的class类文件。Java的跨平台主要是指字节码文件能够在任意软硬件平台上运行,而执行这种类文件的就是Java虚拟机。Java虚拟机是指软件模拟出的计算机,可以执行编译Java源文件得到的中间码文件,而各种平台的差异就是通过Java虚拟机进行处理。
在JAVA中,通过Java虚拟机把中间码文件解译成目标平台能够识别的机器指令,能够实现不同平台运行Java程序。Java依据不同的环境平台提供了不同的Java虚拟机,例如在Sun的官方网站中就提供了windows、Linux和Solaris等各种版本Java虚拟机的下载。
(2)安全性
    在C/C++中,指针的使用是一个高级话题,如果熟练掌握指针可以给程序的开发带来很大的方便,但是若使用指针不当,就有可能造成系统资源泄露,更严重的是错误的操作可能导致非法访问系统文件的地址空间,从而给系统带来灾难性的破坏,因此上在C/C++中指针的使用需要十分注意。在Java中,不存在这样指针,所有的存取过程都根据Java语言自身进行解决完成,不涉及对存储空间之间访问的方法,这样可以确保地址空间不被故意或者是无意的破坏。并且经过这种处理,也可有效避免系统资源的泄露。
    例如在C/C++中,如果大量的指针不及时处理,就会占用系统内存资源,导致可用的内存空间被白白消耗掉。在Java中就不存在这样的麻烦,Java提供了一套行之有效的资源回收策略,可以使不再使用的系统资源自动回收,从而确保了系统资源的稳定性、安全性。另外,Java虚拟机会将Java程序内的数据资源及代码规范在特定的内存区域之中,确保Java程序不会破坏系统的内存空间,从而保证了系统的安全性。
   (3)面向对象
面向对象已经成为目前软件开发中的首选,在Java中利用了不同面向对象语言的长处,从而更彻底的实现了面向对象的技术。Java程序大体上所有的功能都是基于对象来完成的。为了实现模块化以及数据的隐蔽,Java语言运用了功能代码封装的处理,Java语言对继承性的实现使得功能代码能够重复使用,用户可以通过将具体的功能代码封装成自定义的类,来实现对代码的再利用。
C++是一种经典的面向对象语言,Java语言延续了C++中面向对象的理论,但是在Java语言中去掉了部分复杂的技术,从而简化了面向对象的技术,例如运算符的重载等等之类的一些功能。在这样的处理之后,Java中的面向对象技术变得更为简便、易懂,同时保留了面向对象的核心技术,使用户能够方便的享受面向对象技术带来的方便快捷。
(4)异常处理
     在Java程序开发中,提供异常处理的策略,能够对各种异常和错误进行处理。这些错误主要指程序在编译以及运行时出现的错误和异常,例如数组越界异常等等。Java中的这种非正常处理策略能够帮助使用者定位处理各种错误,从而极大提高了Java应用程序的开发周期。同时,这种异常策略能够高效捕捉到程序中的异常,针对不同的异常࿰

本文标签: 源文件雷电游戏Java