基于OpenGL的飞行射击游戏毕业设计.docx

上传人:b****6 文档编号:16117691 上传时间:2023-07-10 格式:DOCX 页数:61 大小:906.53KB
下载 相关 举报
基于OpenGL的飞行射击游戏毕业设计.docx_第1页
第1页 / 共61页
基于OpenGL的飞行射击游戏毕业设计.docx_第2页
第2页 / 共61页
基于OpenGL的飞行射击游戏毕业设计.docx_第3页
第3页 / 共61页
基于OpenGL的飞行射击游戏毕业设计.docx_第4页
第4页 / 共61页
基于OpenGL的飞行射击游戏毕业设计.docx_第5页
第5页 / 共61页
基于OpenGL的飞行射击游戏毕业设计.docx_第6页
第6页 / 共61页
基于OpenGL的飞行射击游戏毕业设计.docx_第7页
第7页 / 共61页
基于OpenGL的飞行射击游戏毕业设计.docx_第8页
第8页 / 共61页
基于OpenGL的飞行射击游戏毕业设计.docx_第9页
第9页 / 共61页
基于OpenGL的飞行射击游戏毕业设计.docx_第10页
第10页 / 共61页
基于OpenGL的飞行射击游戏毕业设计.docx_第11页
第11页 / 共61页
基于OpenGL的飞行射击游戏毕业设计.docx_第12页
第12页 / 共61页
基于OpenGL的飞行射击游戏毕业设计.docx_第13页
第13页 / 共61页
基于OpenGL的飞行射击游戏毕业设计.docx_第14页
第14页 / 共61页
基于OpenGL的飞行射击游戏毕业设计.docx_第15页
第15页 / 共61页
基于OpenGL的飞行射击游戏毕业设计.docx_第16页
第16页 / 共61页
基于OpenGL的飞行射击游戏毕业设计.docx_第17页
第17页 / 共61页
基于OpenGL的飞行射击游戏毕业设计.docx_第18页
第18页 / 共61页
基于OpenGL的飞行射击游戏毕业设计.docx_第19页
第19页 / 共61页
基于OpenGL的飞行射击游戏毕业设计.docx_第20页
第20页 / 共61页
亲,该文档总共61页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于OpenGL的飞行射击游戏毕业设计.docx

《基于OpenGL的飞行射击游戏毕业设计.docx》由会员分享,可在线阅读,更多相关《基于OpenGL的飞行射击游戏毕业设计.docx(61页珍藏版)》请在冰点文库上搜索。

基于OpenGL的飞行射击游戏毕业设计.docx

基于OpenGL的飞行射击游戏毕业设计

 

毕业设计(论文)

 

基于OpenGL的飞行射击游戏

开发与设计

 

基于OpenGL的飞行射击游戏开发与设计

摘要

国内的三维游戏开发技术正处于赶超国外的关键时期,以大型的游戏作为主流。

但是,小游戏的制作,还是不断在扩展。

大部分的电脑用户,都是闲暇时进行游戏,所以一个有乐趣的小游戏已经足够满足他们的需求。

本游戏的开发目的,就是为了满足这部分的用户。

大型游戏一个很重要吸引用户的地方,是能给用户拥有自己创造的人物模型,趋于这个目的,本游戏提供了一个能给用户制作人物模型的编辑器,大大吸引了用户。

游戏和模型编辑器的模型运用的是自定义的数据结构,所以游戏能绘制编辑器编辑出来的模型。

本游戏是基于OpenGL库的运用,结合面向对象方法开发的。

OpenGL定义了一个跨编程语言、跨平台的编程接口的规格,它用于三维图象(二维的亦可)。

OpenGL是个专业的图形程序接口,是一个功能强大,调用方便的底层图形库。

OpenGL的英文全称是“OpenGraphicsLibrary”,顾名思义,OpenGL便是“开放的图形程序接口”。

OpenGL仍然是唯一能够取代微软对3D图形技术的完全控制的API。

通过利用OpenGL的三维图形软件包,深入了解运用VisualC++制作一个拥有可供用户自行定义游戏关卡的3D飞行射击游戏。

体现人机交互。

充分运用项目开发、面向对象、算法等。

关键词:

OpenGL游戏设计VisualC++飞行射击

 

OPENGLBASEDONTHEARCADE-STYLEGAMEDEVELOPMENTANDDESIGNS

ABSTRACT

Inthree-dimensionalspacedevelopmentoftechnologywascrucialinemulationofforeign,inlargegameasthemainstream.Butlittlegame,orindevelopingsteadily.themajorityofcomputerusers,itistimetogames,soafunlittlegameenoughtomeettheirrequirements.

Thisgamedevelopmentpurposeistosatisfythepartoftheuser.

Largegameaveryimportanttoattractusers,istogiveusershavecreatedamodel,tothisend,thisgameamodelformakingcharactersontheuser'seditor,hasgreatlyattractedtotheuser.

Gameandthemodeleditormodelusingacustomdatastructureofthegame,soyoucandrawtheeditortoeditoutofthemodel.

ThisgameisbasedonOpenGLthestorehousetheutilization,theobjectorientationofdevelopment.

OpenGLdefinesaprogramminglanguage,andsteppedacrosstheprogrammaticinterfacetospecifications.Itisathree-dimensionalimage(2dalso).Openglisaprofessionalgraphicsapplications,isapowerfulcalltothegroundfloor,alibrary.openglenglishnameis"opengraphicslibrary,"suggests,is"openinterfacegraphicsprogram”.Openglonlywith3dgraphicsabletoreplacethemicrosofttechnologycompletecontroloftheAPI.

OpenGLbyusing3-dgraphicspackage,theprobetousevisualcmakingadefinitionforusersonthestageofthe3darcade-stylegame.Thatinteractionfulluseoftheman-machinedevelopment,designingobject-orientedandalgorithms.

Keywords:

OpenGLgamedesignVisualC++firepowerex

 

1引言

1.1系统开发背景

软件系统名称:

飞行射击游戏

本项目是根据毕业设计的要求,经过本人实践及深思熟虑后提出,结合所学知识所作出的最终决定。

OpenGL(全写OpenGraphicsLibrary)是个定义了一个跨编程语言、跨平台的编程接口的规格,它用于三维图象(二维的亦可)。

OpenGL是个专业的图形程序接口,是一个功能强大,调用方便的底层图形库。

OpenGL的前身是SGI公司为其图形工作站开发的IRISGL。

IRISGL是一个工业标准的3D图形软件接口,功能虽然强大但是移植性不好,于是SGI公司便在IRISGL的基础上开发了OpenGL。

OpenGL的英文全称是“OpenGraphicsLibrary”,顾名思义,OpenGL便是“开放的图形程序接口”。

OpenGL仍然是唯一能够取代微软对3D图形技术的完全控制的API。

由于Linux操作系统平台的大力推广,基于Linux的各种应用软件也不断壮大,因此基于跨平台图形库的跨平台三维游戏开发也越来越受重视。

OpenGL(opengraphicslibrary)是一种独立的平台无关的三维图形开发库,在各种语言下进行主框架开发并结合应用OpenGL函数都可以开发出三维游戏。

但是由于框架开发的平台相关性使游戏无法跨平台编译运行,因此glut+OpenGL的方式成了一种很好的选择。

但是在对复杂框架和各种媒体的支持方面,glut并不理想。

在Linux下可以采用FLTK等框架平台技术实现包括按钮在内的比较复杂的框架功能,但是需要专门的Linux开发环境,众多的Window环境下的KDE爱好者明显对此无法适从。

相反,SDL(SimpleDirectMediaLayer)作为免费的跨平台多媒体应用编程接口,已经被人们广泛用于开发二维游戏,其优秀的消息框架支持、文件支持和声音支持等都使得它成为能与微软DirectX匹敌的最为成熟的技术之一。

1.2项目目的及意义

国内的三维游戏开发技术正处于赶超国外的关键时期,从创意、策划、研究开发与实现,到游戏的运营与维护,都有大量的知识值得学习和摸索。

一个优秀的游戏,不但画面漂亮,游戏性能好,而且游戏有特色,娱乐性好。

性能的好坏是基于良好的游戏架构跟算法,研究开发一个OpenGL游戏能更好的探索和巩固当中的奥秘。

优秀的游戏给人带来娱乐,休闲之余带来更多的乐趣。

对计算机要求低,可供更多的游戏玩家享乐。

通过利用OpenGL的三维图形软件包,深入了解运用VisualC++制作一个拥有可供用户自行定义游戏关卡的3D飞行射击游戏。

体现人机交互。

充分运用项目开发、面向对象、算法等的运用。

1.3项目技术要求

经过对某些游戏亲身体验,分析和研究后,运用计算机技术,结合飞行射击游戏的实际特点,开发了这飞行射击游戏。

一个好的游戏,给人带来娱乐,休闲之余带来更多的乐趣。

对计算机要求低,可供更多的游戏玩家享乐。

玩家可以通过游戏附带的模型制造工具来制作自己喜爱的飞机模型。

为了能让玩家可以制作模型,不需开发一个操作简单的游戏模型制作器,导出模型信息,并能被游戏识别。

本游戏通过MicrosoftVisualC++6.0集成开发环境,使用C++语言及OpenGL库、STL库进行开发基本达到要求。

1.4开发工具及相关技术简介

1.4.1C++语言

C++这个词在中国大陆的程序员圈子中通常被读做“C加加”,而西方的程序员通常读做“Cplusplus”,“CPP”。

它是一种使用非常广泛的计算机编程语言。

C++是一种静态数据类型检查的,支持多重编程范式的通用程序设计语言。

它支持过程化程序设计、数据抽象、面向对象程序设计、制作图标等等泛型程序设计等多种程序设计风格。

C语言之所以要起名为“C”,是因为它是主要参考那个时候的一门叫B的语言,它的设计者认为C语言是B语言的进步,所以就起名为C语言;但是B语言并不是因为之前还有个A语言,而是B语言的作者为了纪念他的妻子,他的妻子名字的第一个字母是B;当C语言发展到顶峰的时刻,出现了一个版本叫CwithClass,那就是C++最早的版本,在C语言中增加class和类,那个时候有很多版本的C都希望在C语言中增加类的概念;后来C标准委员会决定为这个版本的C起个新的名字,那个时候征集了很多种名字,最后采纳了其中一个人的意见,以C语言中的++运算符来体现它是C语言的进步,所以就叫C++,也成立了C++标准委员会;

一开始C++是作为C语言的增强版出现的,从给C语言增加类开始,不断的增加新特性。

虚函数(virtualfunction)、运算符重载(operatoroverloading)、多重继承(multipleinheritance)、模板(template)、异常(exception)、RTTI、命名空间(namespace)逐渐被加入标准。

1998年国际标准组织(ISO)颁布了C++程序设计语言的国际标准ISO/IEC1488-1998。

C++是具有国际标准的编程语言,通常称作ANSI/ISOC++。

1998年是C++标准委员会成立的第一年,以后每5年视实际需要更新一次标准,下一次标准更新将是在2009年,目前我们一般称该标准C++0x。

遗憾的是,由于C++语言过于复杂,以及他经历了长年的演变,直到现在(2009年)只有VisualC++2010CTP开发环境的编译器完全符合这个标准。

另外,就目前学习C++而言,可以认为他是一门独立的语言;他并不依赖C语言,我们可以完全不学C语言,而直接学习C++。

根据《c++编程细想》(ThinkinginC++)一书所评述的,C++与C的效率往往相差在正负5%之间。

所以有人认为在大多数场合C++完全可以取代C语言(然而我们在单片机等需要谨慎利用空间、直接操作硬件的地方还是要使用C语言)。

1.4.2OpenGL

OpenGL-高性能图形算法行业标准

OpenGL™是行业领域中最为广泛接纳的2D/3D图形API,其自诞生至今已催生了各种计算机平台及设备上的数千优秀应用程序。

OpenGL™是独立于视窗操作系统或其它操作系统的,亦是网络透明的。

在包含CAD、内容创作、能源、娱乐、游戏开发、制造业、制药业及虚拟现实等行业领域中,OpenGL™帮助程序员实现在PC、工作站、超级计算机等硬件设备上的高性能、极具冲击力的高视觉表现力图形处理软件的开发。

OpenGL的前身是SGI公司为其图形工作站开发的IRISGL。

IRISGL是一个工业标准的3D图形软件接口,功能虽然强大但是移植性不好,于是SGI公司便在IRISGL的基础上开发了OpenGL。

OpenGL的英文全称是“OpenGraphicsLibrary”,顾名思义,OpenGL便是“开放的图形程序接口”。

OpenGL是个与硬件无关的软件接口,可以在不同的平台如windows95、windowsNT、Unix、Linux、MacOS、OS/2之间进行移植。

因此,支持OpenGL的软件具有很好的移植性,可以获得非常广泛的应用。

由于OpenGL是图形的底层图形库,没有提供几何实体图元,不能直接用以描述场景。

但是,通过一些转换程序,可以很方便地将AutoCAD、3DS/3DSMAX等3D图形设计软件制作的DXF和3DS模型文件转换成OpenGL的顶点数组。

在OpenGL的基础上还有OpenInventor、Cosmo3D、Optimizer等多种高级图形库,适应不同应用。

其中,OpenInventor应用最为广泛。

该软件是基于OpenGL面向对象的工具包,提供创建交互式3D图形应用程序的对象和方法,提供了预定义的对象和用于交互的事件处理模块,创建和编辑3D场景的高级应用程序单元,有打印对象和用其它图形格式交换数据的能力。

1.4.3STL

STL=StandardTemplateLibrary,标准模块库,惠普实验室开发的一系列软件的统称。

它是由AlexanderStepanov、MengLee和DavidRMusser在惠普实验室工作时所开发出来的。

这可能是一个历史上最令人兴奋的工具的最无聊的术语。

从根本上说,STL是一些“容器”的集合,这些“容器”有list,vector,set,map等,STL也是算法和其他一些组件的集合。

这里的“容器”和算法的集合指的是世界上很多聪明人很多年的杰作。

STL的目的是标准化组件,这样就不用重新开发,可以使用现成的组件。

STL现在是C++的一部分,因此不用额外安装什么。

它被内建在你的编译器之内。

在C++标准中,STL被组织为下面的13个头文件:

算法:

大家都能取得的一个共识是函数库对数据类型的选择对其可重用性起着至关重要的作用。

举例来说,一个求方根的函数,在使用浮点数作为其参数类型的情况下的可重用性肯定比使用整型作为它的参数类性要高。

而C++通过模板的机制允许推迟对某些类型的选择,直到真正想使用模板或者说对模板进行特化的时候,STL就利用了这一点提供了相当多的有用算法。

它是在一个有效的框架中完成这些算法的——你可以将所有的类型划分为少数的几类,然后就可以在模版的参数中使用一种类型替换掉同一种类中的其他类型。

STL提供了大约100个实现算法的模版函数,比如算法for_each将为指定序列中的每一个元素调用指定的函数,stable_sort以你所指定的规则对序列进行稳定性排序等等。

这样一来,只要我们熟悉了STL之后,许多代码可以被大大的化简,只需要通过调用一两个算法模板,就可以完成所需要的功能并大大地提升效率。

算法部分主要由头文件组成。

是所有STL头文件中最大的一个(尽管它很好理解),它是由一大堆模版函数组成的,可以认为每个函数在很大程度上都是独立的,其中常用到的功能范围涉及到比较、交换、查找、遍历操作、复制、修改、移除、反转、排序、合并等等。

体积很小,只包括几个在序列上面进行简单数学运算的模板函数,包括加法和乘法在序列上的一些操作。

中则定义了一些模板类,用以声明函数对象。

容器:

在实际的开发过程中,数据结构本身的重要性不会逊于操作于数据结构的算法的重要性,当程序中存在着对时间要求很高的部分时,数据结构的选择就显得更加重要。

经典的数据结构数量有限,但是我们常常重复着一些为了实现向量、链表等结构而编写的代码,这些代码都十分相似,只是为了适应不同数据的变化而在细节上有所出入。

STL容器就为我们提供了这样的方便,它允许我们重复利用已有的实现构造自己的特定类型下的数据结构,通过设置一些模版类,STL容器对最常用的数据结构提供了支持,这些模板的参数允许我们指定容器中元素的数据类型,可以将我们许多重复而乏味的工作简化。

容器部分主要由头文件,,,,,组成。

对于常用的一些容器和容器适配器(可以看作由其它容器实现的容器),可以通过下表总结一下它们和相应头文件的对应关系。

数据结构描述实现头文件

向量(vector)连续存储的元素

列表(list)由节点组成的双向链表,每个结点包含着一个元素

双队列(deque)连续存储的指向不同元素的指针所组成的数组

集合(set)由节点组成的红黑树,每个节点都包含着一个元素,节点之间以某种作用于元素对的谓词排列,没有两个不同的元素能够拥有相同的次序

多重集合(multiset)允许存在两个次序相等的元素的集合

栈(stack)后进先出的值的排列

队列(queue)先进先出的执的排列

优先队列(priority_queue)元素的次序是由作用于所存储的值对上的某种谓词决定的的一种队列

映射(map)由{键,值}对组成的集合,以某种作用于键对上的谓词排列

多重映射(multimap)允许键对有相等的次序的映射

迭代器:

下面要说的迭代器从作用上来说是最基本的部分,可是理解起来比前两者都要费力一些(至少笔者是这样)。

软件设计有一个基本原则,所有的问题都可以通过引进一个间接层来简化,这种简化在STL中就是用迭代器来完成的。

概括来说,迭代器在STL中用来将算法和容器联系起来,起着一种黏和剂的作用。

几乎STL提供的所有算法都是通过迭代器存取元素序列进行工作的,每一个容器都定义了其本身所专有的迭代器,用以存取容器中的元素。

  迭代器部分主要由头文件,组成。

是一个很小的头文件,它包括了贯穿使用在STL中的几个模板的声明,中提供了迭代器使用的许多方法,而对于的描述则十分的困难,它以不同寻常的方式为容器中的元素分配存储空间,同时也为某些算法执行期间产生的临时对象提供机制,中的主要部分是模板类allocator,它负责产生所有容器中的默认分配器。

1.4.4VC++

VC++是微软公司开发的一个IDE(集成开发环境),换句话说,就是使用c++的一个开发平台.有些软件就是这个编出来的...另外还有VB,VF.只是使用不同语言...但是,

vc++是Windows平台上的C++编程环境,学习VC要了解很多Windows平台的特性并且还要掌握MFC、ATL、COM等的知识,难度比较大。

Windows下编程需要了解Windows的消息机制以及回调(callback)函数的原理;MFCWin32API的包装类,需要理解文档视图类的结构,窗口类的结构,消息流向等等;COM是代码共享的二进制标准,需要掌握其基本原理等等。

VC作为一个主流的开发平台一直深受编程爱好者的喜爱,但是很多人却对它的入门感到难于上青天,究其原因主要是大家对他错误的认识造成的,严格的来说VC++不是门语言,虽然它和C++之间有密切的关系,如果形象点比喻的话,可以把C++看作为一种“工业标准”,而VC++则是某种操作系统平台下的“厂商标准”,而“厂商标准”是在遵循“工业标准”的前提下扩展而来的。

VC++应用程序的开发主要有两种模式,一种是WINAPI方式,另一种则是MFC方式,传统的WINAPI开发方式比较繁琐,而MFC则是对WINAPI再次封装,所以MFC相对于WINAPI开发更具备效率优势,但为了对WINDOWS开发有一个较为全面细致的认识,笔者在这里还是以讲解WINAPI的相关内容为主线。

话说到这里可能更多人关心的是学习VC++需要具备什么条件,为什么对于这扇门屡攻不破呢?

要想学习好VC必须具备良好的C/C++的基础,必要的英语阅读能力也是必不可少的,因为大量的技术文档多以英文形式发布。

VC基于C,C++语言,主要由是MFC组成,是与系统联系非常紧密的编程工具,它兼有高级,和低级语言的双重性,功能强大,灵活,执行效率高,几乎可说VC在Windows平台无所不能。

最大缺点是开发效率不高。

VC适用范围

1、VC主要是针对Windows系统,适合一些系统级的开发,可以方便实现一些底层的调用。

在VC里边嵌入汇编语言很简单。

2、VC主要用在驱动程序开发

3、VC执行效率高,当对系统性能要求很高的时候,可用VC开发。

4、VC主要适用于游戏开发

5、VC多用于单片机,工业控制等软件开发,如直接对I/O地址操作,就要用C++。

 6、VC适用开发高效,短小,轻量级的COM组件,DLL。

比如WEB上的控件。

7、VC可以开发优秀的基于通信的程序。

8、VC可以开发高效灵活的文件操作程序。

9、VC可以开发灵活高效的数据库操作程序。

10、VC是编CAD软件的唯一选择!

包括AUTOCAD,UG的二次开发。

11、VC在多线程、网络通信、分布应用方面,VC++有不可比拟的优势。

 

2可行性研究

可行性研究的目的是用最小的代价,在尽可能短时间内确定问题是否能够解决,它的目的不是解决问题,而是确定问题是否值得去解决,可行性从以下四个方面来考虑:

2.1技术可行性

飞行射击游戏和模板编辑器是用应用程序实现的。

本系统使用微软公司的MicrosoftVisualC++6.0开发,并且应用OpenGL和STL库。

本人经过多年的学习,已熟练掌握这几种软件的开发技术,在以前的实践中也开发过一些相关的软件产品,并且有许多相关技术的资料,再加上指导老师的悉心帮助,所以在技术上是可行的。

2.2经济可行性

经济可行性指的是对组织的经济状况和投资能力进行分析,对系统建设、运行和维护费用进行估算,对系统建成后可能取得的社会及经济效益进行估计。

本游戏的开发由本人利用毕业设计的机会开发,开发费用可以忽略不计。

本游戏的开发需要资金少。

由于基本引擎已经射击完场,游戏开发运行后,可以轻松的进行各项信息的发布与管理,节省了人力、物力和财力,减少无意的错误,节省了大量的时间,更新效率也大幅度提高。

本游戏小,且娱乐性高,具有一定的市场占有率,因此,在经济上是可行的。

所带来的效益远远大于游戏的开发成本。

在经济上完全可行。

2.3操作可行性

本游戏直观易懂,使用非常方便,用户可以直接上手,操作本游戏没有太大的问题。

2.4法律可行性

本系统开发不会侵犯他人、集体或国家利益,不存在侵权等问题,不违反国家法律,因此具有法律可行性。

综上所述,从技术上、经济上、法律上、可操作性上都是可行的,而且要求不高,所以该系统的开发是可行的。

 

3需求分析

3.1需求分析的重要性

在软件工程的历史中,很长时间里人们一直认为需求分析是整个软件工程中最简单的一个步骤,但在过去十年中越来越多的人认识到它是整个过程中最关键的一个过程。

假如在需求分析时分析者们未能正确地认识到顾客的需要的话,那么最后的软件实际

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2