电脑游戏飞机大战的开发与设计计算机专业毕业论文.docx
《电脑游戏飞机大战的开发与设计计算机专业毕业论文.docx》由会员分享,可在线阅读,更多相关《电脑游戏飞机大战的开发与设计计算机专业毕业论文.docx(69页珍藏版)》请在冰豆网上搜索。
电脑游戏飞机大战的开发与设计计算机专业毕业论文
毕业设计(论文)
题目:
飞机大战游戏的设计与开发
毕业设计(论文)原创性声明和使用授权说明
原创性声明
本人郑重承诺:
所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。
尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。
对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
作者签名:
日 期:
指导教师签名:
日 期:
使用授权说明
本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:
按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。
作者签名:
日 期:
学位论文原创性声明
本人郑重声明:
所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。
除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。
对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。
本人完全意识到本声明的法律后果由本人承担。
作者签名:
日期:
年月日
学位论文版权使用授权书
本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。
本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。
涉密论文按学校规定处理。
作者签名:
日期:
年月日
导师签名:
日期:
年月日
注意事项
1.设计(论文)的内容包括:
1)封面(按教务处制定的标准封面格式制作)
2)原创性声明
3)中文摘要(300字左右)、关键词
4)外文摘要、关键词
5)目次页(附件不统一编入)
6)论文主体部分:
引言(或绪论)、正文、结论
7)参考文献
8)致谢
9)附录(对论文支持必要时)
2.论文字数要求:
理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。
3.附件包括:
任务书、开题报告、外文译文、译文原文(复印件)。
4.文字、图表要求:
1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写
2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。
图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画
3)毕业论文须用A4单面打印,论文50页以上的双面打印
4)图表应绘制于无格子的页面上
5)软件工程类课题应有程序清单,并提供电子文档
5.装订顺序
1)设计(论文)
2)附件:
按照任务书、开题报告、外文译文、译文原文(复印件)次序装订
3)其它
摘要
飞机游戏是一款风靡全球的电视机游戏和掌上游戏机产品,曾几何时,它创造了一个无法企及的游戏巅峰,也曾影响了一代产业链。
虽然它辉煌的业绩在历史的涡轮中渐渐远去,但这款游戏每每提及,总会令人爱不释手,魂牵梦绕。
这款游戏的名字叫做飞机大战,它是运行于Windows操作系统下的一款2D游戏,以C/C++为开发语言,构建于MicrosoftFoundationClassLibrary(MFC)框架体系中,其中调用了部分的Win32API函数接口,在VisualStudio2010环境下开发的一款多媒体游戏。
随着硬件性能的不断提高,游戏的日益普及,使开发者不再需要过多的关注不同的硬件设备。
本论文着眼于双缓冲绘图的运用,开发出仅用于理论研究的二维平面射击类游戏。
本文首先分析了电脑游戏的发展历史,然后分析了制作游戏的基本流程和游戏本身所要包含的几种元素以及游戏应具备的游戏层次。
根据2D游戏的特点和游戏的角色,以及给用户呈现的游戏界面的特效,对2D图形技术,Windows图形界面编程技术GDI,DirectDraw的显卡接口和DirectSound声卡接口以及MVC设计模式下的MFC框架等技术进行了比较仔细的研究。
通过自定义一个游戏类CGame,封装了游戏元素的基本属性和行为,这样便于在用到游戏的行为操作是,只要轻松的产生CGame对象便可直接调用其方法,也有利于升级为双人游戏,乃至网络版时,只需要在该类中添加相应的行为便可。
当我们向用户呈现游戏运行的界面时,通过Timer时钟控件,映射到相应的处理函数,使得游戏界面大约每2秒钟刷新一下界面,这样才能让一张位图背景图片具有动态效果。
当使用DirectSound声卡接口时,我方和敌方相互射击所发出的声音,都是在时钟映射函数调用时处理的。
【关键词:
】C/C++;VS2010/MFC;飞机大战游戏
ABSTRACT
AirplanegameisapopularglobalTVgameandhandheldgameproducts,onceuponatime,itcreatesagameoutofreachpeak,haveinfluencedagenerationofindustrialchain.Althoughitbrilliantperformanceinthehistoryofturbinefadedaway,butthegameisoftenmentionedalwaysmiss.
Thegame'snameis,itisrunningonWindowsoperatingsystems,a2dgame,withC/C++asdevelopmentlanguage,buildingontheMicrosoftFoundationClassLibraryMFCframework,whichinvokesthepartWin32APIfunctioninterface,intheVisualStudio2010environmentusingDirectXsoftwaredevelopmentkitSDKtodevelopamultimediagame.
Withtheconstantimprovementofthehardwareperformance,therisingpopularityofthegame,DirectXdevelopmentkitupdateandperfect,makedevelopersdon'tneedtoomuchattentiontodifferenthardwaredevices.TheuseofthisthesisfocusonDirectSound,DirectDraw,developedonlyduetothetheoreticalresearchoftwo-dimensionalplaneshootinggame.
Thisarticlefirstanalyzesthedevelopmenthistoryofcomputergames,andthenanalyzethebasicprocessofmakinggameandthegameitselfneedtoincludewhatkindofelementsandthegameshouldhavelevel.Accordingtothecharacteristicsofthe2dgameandgamerole,andtotheuserinterfacerenderingeffects,thetechnologyof2dgraphics,thegraphicsinterfaceandDirectSoundDirectDrawsoundcardinterfaceandMFCframeworkofMVCdesignmodetocomparethecarefulresearch.ThroughacustomgameCGameclass,encapsulatesthebasicattributeofgameelementsandbehavior,soeasytouseinthegameoperation,aslongaseasytoproducetheCGameobjectcanbedirectlytocallitsmethods,butalsotowhenupgradedtoadoublegame,onlineversion,justneedtoaddtheproperbehaviorintheclass.Whenwepresentgameoperationinterfacetotheuser,bytheTimerclockcontrolthatismappedtothecorrespondingprocessingfunction,makesthegameaboutevery2secondsrefreshinterface,inthiswaycanwemakeabitmapbackgroundpicturewithdynamiceffect.WhenusingDirectSoundsoundcardinterface,weandthenoisemadebyenemyfire,areontheclockwhenprocessingthemappingfunctioncall.
KEYWORDS:
C/C++;VS2010/MFC;planewargame
第1章绪论
1.1系统研究的背景及意义
当今社会是一个信息社会,一个知识经济的年代。
自从世界上第一台计算机ENIAC于1946年问世到现在,计算机业飞速发展。
随着以全球信息网络普及和全球信息共享为标志的“全球信息网络革命”的蓬勃兴起,世界已然进入在计算机信息管理领域的激烈竞争的时代,计算机,自然而然的变成了人们生活中必不可少的一部分。
过去,人们只要是借助电影,电视,音乐等方式来娱乐。
而今天,以游戏为代表的电子娱乐正成为主流娱乐方式。
因为CPU以及显卡等设备的高速发展,为人们开发出更加炫目多彩的游戏提供了可能。
时代的发展,社会的进步,科学技术正以日新月异的速度飞速的向前发展。
计算机技术的发展更是迅速而且广泛。
可以说,计算机已经涉及到现代绝大部分行业。
目前纷繁复杂的游戏软件比比皆是,无论在线的网路游戏还是桌面游戏,二维的还是三维立体空间的,多由单机版游戏孕育而来。
学习简单的单机版游戏的制作,有利于初学者了解到游戏制作的理念。
目前不论是在国内还是世界范围内,游戏产业都如雨后的春笋,蓬勃发展,越来越多更具娱乐性的游戏产品被开发出来,这其中在众多的游戏开发工具中,Microsoft的VisualStudio系列被认为是当今世界最强大的游戏开发软件之一。
其代表作:
魔兽争霸系列、星际争霸系列、帝国时代系列等等等等,几乎所有的大作都有VS的功劳。
因此掌握了VS的应用,不但是掌握了一种优秀的开发工具,对于今后参加大型团队的游戏项目开发也具有一定的帮助。
本设计通过开发一个单机版的射击类游戏,有一定的娱乐性很值得一试。
通过制作这样一个软件,可以加深对游戏设计思想的了解,也可以进一步熟悉编程工具的应用,更可以给我们的生活带来更多的趣味。
通过该设计,我将更好的了解windows消息机制,更深的体会到利用VisualStudio/MFC开发windows程序的优越性。
1.2国内外的发展现状
96,97年的国产游戏产品是单机版的游戏,在当时的市场上虽然品质和档次不如外来产品,但也占有一定的市场,例如《仙剑奇侠传》、《三国志》等系列带有鲜明中国特色与气息的游戏在市场上掀起了一波高潮。
1998年联众与中国游戏中心等老牌的游戏平台的推出标志着电脑游戏在中国的开荒与生根。
但是到了1999年在没有形成主流产品的情况下,政策不明朗,包括开发资金出现问题等原因国产游戏开始走下坡路。
一直到了2000年,网络游戏问世并且很快流行起来我国的游戏行业才又渐渐的复苏,但是由于投入差距太大,起步晚等原因与外国游戏相对而言并没有竞争力。
时至今日,网络游戏走入盛世,成为了一部分人休闲娱乐的主要行为。
国内网易、腾讯、九城、完美等公司百花齐放,国产网游渐渐走入国际市场,而且基于网络的发展真正实现了网络全球化,网络游戏也是遍布全球,全球同玩一款游戏的现象比比皆是。
大量海外游戏走入中国市场,电脑游戏百花纷呈,随着经济的进步,计算机科技的发展,这一现象将愈演愈烈。
1.4本文的组织结构
第1章绪论本章主要介绍了课题的研究背景,课题研究的目的与意义,以及该项目所在领域国内外发展状况等,最后指出了本文工作内容及论文的组织结构。
第2章游戏相关知识和系统开发平台的阐述本章主要介绍了整个游戏中的流程表述和开发所用语言以及开发平台的介绍与说明。
第3章游戏分析本章主要分析了游戏的可行性,游戏对系统性能的要求以及用户对功能的需求。
第4章游戏设计本章是本文比较重要的章节,总体描述了游戏规则以及游戏开发中各项功能的实现方法,游戏界面的设计,最后对整个项目的包结构和项目资源路径做了简单的剖析和介绍。
第5章系统测试详细介绍了测试的概念,并对本项目进行测试。
第6章总结。
1.5本章小结
详细介绍了电脑游戏开发的国内外现状,以及本论文主要研究的方向和论文的整体结构,从本章中能够清楚的了解本论文的整体架构,对以后的各细节描述都有清晰的认识。
第2章游戏的相关知识和系统开发平台的阐述
2.1游戏基本流程概述
一个游戏基本上是一个连续的循环,它完成一系列的逻辑操作,并在屏幕上绘制图像,具体流程如下:
(1)初始化:
在这一步中,游戏程序执行标准初始化操作,如内存分配、资源采集、从磁盘载入数据等等,这和其他Windows应用程序一样。
(2)进入游戏循环:
在这一步中,游戏代码将进入游戏主循环,此时各种游戏动作和情节开始运行,直到当接受到用户退出游戏的命令。
(3)获取玩家的输入信息:
在这一步中,游戏玩家的输入信息被处理或缓存,以备下一步人工智能和游戏逻辑使用。
(4)执行人工智能和游戏逻辑:
这部分包括了游戏代码的主体,诸如执行人工智能、物理系统和常规的游戏逻辑,其结果用于渲染下一帧图像。
(5)渲染下一帧图像:
游戏的输入和第四步中游戏人工智能和游戏逻辑执行的结果,被用来产生游戏的下一帧。
这个图像通常放在不可见的缓存区内,因此玩家不会看到它逐渐被渲染的过程随后该图像被迅速拷贝到显示存储器中并显示出来。
(6)同步显示:
通常由于游戏复杂程序不同,游戏在计算机上运行的速度会不一。
使用定时器和等待函数确保游戏和最大帧同步,通常认为30FPS(帧/秒)是可以接受的最低速率,而大多数动作玩家将他们的图形调整到不大于60FPS。
(7)循环:
返回到游戏的入口并重新执行上述全部步骤。
(8)关闭:
这一步游戏结束,表示将退出主程序或游戏循环,并回到操作系统。
然而,在用户进行结束之前,用户必须释放所有的资源并清理系统。
游戏基本流程简图如下:
图2-1游戏基本流程图
2.2游戏系统元素阐述
游戏元素是指各类游戏的基本构成要素,该项目主要是侧重射击类游戏,那么其中主要包括4中元素:
(1)游戏界面:
人物造型、战斗场地、动画效果等,当玩家在进行游戏时,界面的效果,风格将会在第一时间告诉给玩家,这是游戏的大致轮廓,其中主要包括以下2点:
图形技术:
2D和3D图形技术;游戏视角:
第一人称视角,第三人称视角,俯视角。
(2)游戏创意:
游戏的创作意义,新奇,惊人,震撼,实效,有较突出的独立性。
(3)可玩性:
有较强的可玩性,情绪风格精神这三个方面特征。
可玩性是玩家和乐趣之间的沟通桥梁,,不仅体现在单机玩家和电脑对抗中,也体现在多人多角色的竞争中,良好的可玩性是游戏是否能够占领市场的作用之一。
(4)游戏声音:
游戏声音常常用于渲染气氛,烘托游戏的乐趣,使得游戏不显得匮乏无力。
用于给予听觉上的反馈,例如音效,背景音乐,对话等,高品质的音乐可以达到争强游戏的表现力的效果。
2.3开发环境和相关技术的概述
2.3.1开发环境
操作系统:
XP,Win7
程序语言:
C++
开发包:
MFC
IDE:
VisualStudio2010
2.3.2相关技术
2.3.2.1C++语言特点
C++是在C语言的基础上开发的一种通用编程语言.应用广泛。
C++支持多种编程范式--面向对象编程、泛型编程和过程化编程。
最新正式标准C++14于2014年8月18日公布。
其编程领域众广.常用于系统开发.引擎开发等应用领域.是至今为止最受广大受用的最强大编程语言之一.支持类:
类、封装、重载等!
计算机诞生初期.人们要使用计算机必须用机器语言或汇编语言编写程序。
世界上第一种计算机高级语言是诞生于1954年的FORTRAN语言。
之后出现了多种计算机高级语言.其中使用最广泛、影响最大的当推BASIC语言和C语言。
BASIC语言是1964年由Dartmouth学院JohnG.Kemeny与ThomasE.Kurtz两位教授在FORTRAN语言的基础上简化而成的.适用于初学者设计的小型高级语言;C语言是1972年由美国贝尔实验室的D.M.Ritchie所开发.采用结构化编程方法.遵从自顶向下的原则。
[2]在操作系统和系统使用程序以及需要对硬件进行操作的场合.用C语言明显优于其它高级语言.但在编写大型程序时.C语言仍面临着挑战。
1983年.贝尔实验室的BjarneStroustrup在C语言基础上推出了C++[1]。
C++进一步扩充和完善了C语言.是一种面向对象的程序设计语言。
C++这个名字是RickMascitti于1983年中所建议的.并于1983年12月首次使用。
更早以前.尚在研究阶段的发展中语言曾被称为“newC”.之后是“CwithClass”[3]。
在计算机科学中.C++仍被称为C语言的上层结构。
它最后得名于C语言中的“++”操作符(其对变量的值进行递增)。
而且在共同的命名约定中.使用“+”以表示增强的程序。
Stroustrup说:
“这个名字象征着源自于C语言变化的自然演进”。
注:
C+是一个和C/C++无关的早期编程语言。
RickMascitti在1992年被非正式地问起名字的由来.他表示这是在半开玩笑中说出的。
他从没想过C++会成为这门语言的正式名字。
有一个关于C++名字的笑话.当你使用后缀++时.赋值发生在加运算之后(因此.它应该是++C.而不是C++.这个笑话是说时下某些程序员还在以使用C的方式使用C++.这通常被一些权威著作认为是不正确的)。
在“CwithClass”阶段.研制者在C语言的基础上加进去的特征主要有:
类及派生类、共有和私有成员的区分、类的构造函数和析构函数、友元、内联函数、赋值运算符的重载等。
1985年公布的C++语言1.0版的内容中又添加了一些重要特征:
虚函数的概念、函数和运算符的重载、引用、常量(constant)等。
1989年推出的2.0版形成了更加完善的支持面向对象程序设计的C++语言.新增加的内容包括:
类的保护成员、多重继承、对象的初始化与赋值的递归机制、抽象类、静态成员函数、const成员函数等。
1993年的C++语言3.0版本是C++语言的进一步完善.其中最重要的新特征是模板(template).此外解决了多重继承产生的二义性问题和相应的构造函数与析构函数的处理等。
1998年C++标准(ISO/IEC14882StandardfortheC++ProgrammingLanguage)得到了国际标准化组织(ISO)和美国标准化协会(ANSI)的批准.标准C++语言及其标准库更体现了C++语言设计的初衷。
名字空间的概念、标准模板库(STL)中增加的标准容器类、通用算法类和字符串类型等使得C++语言更为实用。
此后C++是具有国际标准的编程语言.该标准通常简称ANSIC++或ISOC++98标准.以后每5年视实际需要更新一次标准。
后来又在2003年通过了C++标准第二版(ISO/IEC14882:
2003):
这个新版本是一次技术性修订.对第一版进行了整理——修订错误、减少多义性等.但没有改变语言特性。
这个版本常被称为C++03。
[2]
此后.新的标准草案叫做C++0x。
对于C++0x标准草案的最终国际投票已于2011年8月10日结束.并且所有国家都投出了赞成票.C++0x已经毫无疑义地成为正式国际标准。
先前被临时命名为C++0x的新标准正式定名为ISO/IEC14882:
2011.简称ISOC++11标准。
C++11标准将取代现行的C++标准C++98和C++03。
国际标准化组织于2011年9月1日出版发布《ISO/IEC14882:
2011》.名称是:
Informationtechnology--Programminglanguages--C++Edition:
3。
虽然.C++到目前为止.已经出现了很多年.但由于它的稳定性和强大的功能等.在系统开发.引擎开发等应用领域.是至今为止最受广大受用的最强大编程语言之一。
2.3.2.2MFC介绍
MFCMicrosoftFoundationClasses,是一个微软公司提供的类库(classlibraries),以C++类的形式封装了Windows的API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。
其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。
MFC是WinAPI与C++的结合。
API,即微软提供的Windows下应用程序的编程语言接口,是一种软件编程的规范,但不是一种程序开发语言本身,可以允许用户使用各种各样的第三方如我是一方,微软是一方,Borland就是第三方的编程语言来进行对Windows下应用程序的开发,使这些被开发出来的应用程序能在Windows下运行,比如VB、VC++、JAVA、Delhpi。
编程语言函数本质上全部源于API,因此用它们开发出来的应用程序都能工作在Windows的消息机制和绘图里,遵守Windows作为一个操作系统的内部实现,这其实也是一种必要。
微软如果不提供API,这个世上对Windows编程的工作就不会存在,微软的产品就会迅速从时尚变成垃圾。
上面说到MFC是微软对API函数的专用C++封装,这种结合一方面让用户使用微软的专业C++SDK来进行Windows下应用程序的开发变得容易,因为MFC是对API的封装,微软