VC++电脑游戏飞机大战的开发与设计含源文件.docx
《VC++电脑游戏飞机大战的开发与设计含源文件.docx》由会员分享,可在线阅读,更多相关《VC++电脑游戏飞机大战的开发与设计含源文件.docx(60页珍藏版)》请在冰豆网上搜索。
VC++电脑游戏飞机大战的开发与设计含源文件
毕业设计(论文)
题目:
飞机大战游戏的设计与开发
学院:
计算机科学学院
摘要
飞机游戏是一款风靡全球的电视机游戏和掌上游戏机产品,曾几何时,它创造了一个无法企及的游戏巅峰,也曾影响了一代产业链。
虽然它辉煌的业绩在历史的涡轮中渐渐远去,但这款游戏每每提及,总会令人爱不释手,魂牵梦绕。
这款游戏的名字叫做飞机大战,它是运行于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的封装,微软做了大量的工作,隐藏了好多程序开发人员在Windows下用C++&MFC编制软件时的大量内节,如应用程序实现消息的处理、设备环境绘图,这种结合是以方便为目的的,必定要付出一定代价这是微软的一向作风,因此就造成了MFC对类封装中的一定程度的的冗余和迂回,但这是可以接受的。
MFC是微软封装了的API。
什么意思呢?
Windows作为一个提供功能强大的应用程序接口编程的操作系统,的确方便了许多程序员,传统的win32开发(直接使用Windows的接口函数API)对于程序员来说非常的困难,因为,API函数实在太多了,而且名称很乱,从零构架一个窗口动辄就是上百行的代码。
MFC是面向对象程序设计与Applicationframework的完美结合,它将传统的API进行了分类封装,并且为你创建了程序的一般框架。
2.3.2.3关于VisualStudio2010
VisualStudio是微软公司推出的开发
环境.是目前最流行的Windows平台应用程序开发环境。
VisualStudio2010版本于2010年4月12日上市.其集成开发环境(IDE)的界面被重新设计和组织.变得更加简单明了。
VisualStudio2010同时带来了NETFramework4.0、MicrosoftVisualStudio2010CTP(CommunityTechnologyPreview--CTP).并且支持开发面向Windows7的应用程序。
除了MicrosoftSQLServer.它还支持IBMDB2和Oracle数据库。
发展溯源
Dev-C++灵活又小巧.C++Builder开发效率高;TurboC是万人迷.VisualStudio的资格老。
可如今.江湖上只剩下最后一个大佬VisualStudio了.其他几位不是支
持者渐少.不成气候.就是转投他人怀抱.中道衰落.让人难免生出几分遗憾。
但是反过来.我们又对VisualStudio这位“江湖最后的大佬”增添了几分敬仰之情。
据说这位老大又要出新的版本了.这些江湖八卦者.哪有错过的道理。
要想深入的了解一个人.需要从他的童年开始。
想了解VisualStudio.故事也就要从它的1.0开始。
VisualStudio可以用来创建Windows平台下的Windows应用程序和网络应用程序.也可以用来创建网络服务、智能设备应用程序和Office插件。
[1]
1992年4月.微软发布了革命性的操作系统Windows3.1.把个人计算机引进了真正的视窗时代。
微软在原有C++开发工具MicrosoftC/C++7.0的基础上.开创性地引进了MFC(MicrosoftFoundationClasses)库.完善了源代码.成为MicrosoftC/C++8.0.也就是VisualC++1.0.并于1992年发布。
VisualC++1.0是真正意义上的WindowsIDE.这也是VisualStudio的最初原型。
虽然以现在的眼光来看.这个界面非常简陋和粗糙.但是它脱离了DOS界面.让用户可以在图形化的界