




免费预览已结束,剩余30页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
毕业设计(论文) 题 目 基于DirectX的飞机大战游戏(C+版)的开发与设计 英文题目 The development and Design of Aircraft war game Based on DirectX 学生姓名 张连泉 学 号 09111629 指导教师 蒋年德 职称 副教授 专 业 软件工程 东华理工大学软件学院 二零一三年三月 九日 东华理工大学软件学院毕业设计(论文) 摘要摘 要飞机游戏是一款风靡全球的电视机游戏和掌上游戏机产品,曾几何时,它创造了一个无法企及的游戏巅峰,也曾影响了一代产业链。虽然它辉煌的业绩在历史的涡轮中渐渐远去,但这款游戏每每提及,总会令人爱不释手,魂牵梦绕。这款游戏的名字叫做,它是运行于Windows操作系统下的一款2D游戏,以C/C+为开发语言,构建于Microsoft Foundation Class Library(MFC)框架体系中,其中调用了部分的Win32API函数接口,在Visual C+6.0环境下使用DirectX(SDK)软件开发包来开发的一款多媒体游戏。随着硬件性能的不断提高,游戏的日益普及,DirectX开发包的更新和完善,使开发者不在需要过多的关注不同的硬件设备。本论文着眼于DirectSound,DirectDraw的运用,开发出仅由于理论研究的二维平面射击类游戏。本文首先分析了电脑游戏的发展历史,然后分析了制作游戏的基本流程和游戏本身所要包含的哪几种元素以及游戏应具备的游戏层次。根据2D游戏的特点和游戏的角色,以及给用户呈现的游戏界面的特效,对2D图形技术,Windows 图形界面编程技术GDI,DirectDraw的显卡接口和DirectSound声卡接口以及MVC设计模式下的MFC框架等技术进行了比较仔细的研究。通过自定义一个游戏类CGame,封装了游戏元素的基本属性和行为,这样便于在用到游戏的行为操作是,只要轻松的产生CGame对象便可直接调用其方法,也有利于当升级为双人游戏,网路版时,只需要在该类中添加相应的行为便可。当我们向用户呈现游戏运行的界面时,通过Timer时钟控件,映射到相应的处理函数,使得游戏界面大约每2秒钟刷新一下界面,这样才能让一张位图背景图片具有动态效果。当使用DirectSound声卡接口时,我方和敌方相互射击所发出的声音,都是在时钟映射函数调用时处理的。 关键词:C/C+; VC+/MFC; 飞机大战游戏 东华理工大学软件学院毕业设计(论文) ABSTRACTABSTRACT Airplane game is a popular global TV game and handheld game products, once upon a time, it creates a game out of reach peak, have influenced a generation of industrial chain. Although it brilliant performance in the history of turbine faded away, but the game is often mentioned, cuddly, always miss.The games name is , it is running on Windows operating systems, a 2 d game, with C/C + + as development language, building on the Microsoft Foundation Class Library (MFC) framework, which invokes the part Win32API function interface, in the Visual C + + 6.0 environment using DirectX software development kit (SDK) to develop a multimedia game.With the constant improvement of the hardware performance, the rising popularity of the game, DirectX development kit update and perfect, make developers dont need too much attention to different hardware devices. The use of this thesis focus on DirectSound, DirectDraw, developed only due to the theoretical research of two-dimensional plane shooting game.This article first analyzes the development history of computer games, and then analyze the basic process of making game and the game itself need to include what kind of elements and the game should have level. According to the characteristics of the 2 d game and game role, and to the user interface rendering effects, the technology of 2 d graphics, graphical interface Windows GDI programming technology, the graphics interface and DirectSound DirectDraw sound card interface and MFC framework of MVC design mode to compare the careful research. Through a custom game CGame class, encapsulates the basic attribute of game elements and behavior, so easy to use in the game operation, as long as easy to produce the CGame object can be directly to call its methods, but also to when upgraded to a double game, online version, just need to add the proper behavior in the class. When we present game operation interface to the user, by the Timer clock control that is mapped to the corresponding processing function, makes the game about every 2 seconds refresh interface, in this way can we make a bitmap background picture with dynamic effect. When using DirectSound sound card interface, we and the noise made by enemy fire, are on the clock when processing the mapping function call. KEYWORDS: C/C + +;VC + + MFC /; plane war game 东华理工大学软件学院毕业设计(论文) 目录目 录摘 要ABSTRACT目 录第1章 绪论11.1选题的目的和意义11.2论文结构安排1第2章 游戏的相关知识和系统开发平台的阐述22.1游戏基本流程概述22.2游戏系统元素阐述32.3 游戏系统的层次52.4 开发环境和相关技术的概述52.4.1 开发环境:52.4.2 相关技术5第3章 游戏的分析和设计93.1游戏分析93.1.1 概述93.1.2 可行性分析103.2 游戏设计103.2.1游戏总体设计规划103.2.2 游戏的对战规则11第4章 游戏的各模块的详细设计与实现114.1 游戏界面显示模块124.1.1 模块描述124.1.2 模块功能124.1.3 模块实现124.2文字消息提示模块144.2.1 模块描述144.2.2 模块功能144.2.3 模块实现154.3子弹发射模块164.3.1 模块描述和功能164.3.2 模块实现174.4键盘操作模块184.4.1 模块描述和功能184.4.2 模块实现194.5全屏模块194.5.1 模块描述和功能194.5.2 模块实现204.6游戏结束模块214.6.1 模块描述和功能214.6.2 模块实现21第5章 论文总结225.1总结22致 谢23参考文献24附录25 东华理工大学软件学院毕业设计(论文) 绪论第1章 绪论1.1选题的目的和意义过去,人们只要是借助电影,电视,音乐等方式来娱乐。而今天,随着计算机技术多媒体技术的飞速发展,计算机硬件性能的不断跃升,以游戏为代表的电子娱乐正成为主流娱乐方式。因为CPU以及显卡等设备的高速发展,为人们开发出更加炫目多彩的游戏提供了可能。时代的发展,社会的进步,科学技术正以日新月异的速度飞速的向前发展。计算机技术的发展更是迅速而且广泛。可以说,计算机已经涉及到现代绝大部分行业。目前纷繁复杂的游戏软件比比皆是,无论在线的网路游戏还是桌面游戏,二维的还是三维立体空间的,多由单机版游戏孕育而来。学习简单的单机版游戏的制作,有利于初学者了解到游戏制作的理念。目前不论是在国内还是世界范围内,游戏产业都如雨后的春笋,蓬勃发展,越来越多更具娱乐性的游戏产品被开发出来,这其中在众多的游戏开发工具中,Microsoft的Visual C+ 系列被认为是当今世界最强大的游戏开发软件之一。其代表作:魔兽争霸系列、星际争霸系列、帝国时代系列 等等等等,几乎所有的大作都有VC的功劳。因此掌握了VC的应用,不但是掌握了一种优秀的开发工具,对于今后参加大型团队的游戏项目开发也具有一定的帮助。本设计通过开发一个单机版的基于DirectX的射击类游戏,有一定的娱乐性很值得一试。通过制作这样一个软件,可以加深对游戏设计思想的了解,也可以进一步熟悉编程工具的应用,更可以给我们的生活带来更多的趣味。通过该设计,我将更好的了解windows消息机制,更深的体会到利用Visual C+/MFC开发windows程序的优越性。1.2论文结构安排第二章介绍游戏的相关知识和背景,以及开发环境的阐述,主要包括对电脑游戏制作的基本流程,游戏元素的分析以及游戏层次的简要剖析。第三章游戏分析与设计,包括系可行性分析和游戏对战规则,介绍基于DirectX开发的多媒体游戏,第四章游戏各模块的详细设计与实现,主要包括了6个模块:游戏操作界面显示,文字消息提示模块,子弹发射模块,键盘操作,全屏以及游戏结束模块。第五章论文的总结,以及相关技术的参考文献。1东华理工大学软件学院毕业设计(论文) 游戏的相关知识和系统平台的阐述第2章 游戏的相关知识和系统开发平台的阐述2.1游戏基本流程概述 一个游戏基本上是一个连续的循环,它完成一系列的逻辑操作,并在屏幕上绘制图像,具体流程如下:初始化:在这一步中,游戏程序执行标准初始化操作,如内存分配、资源采集、从磁盘载入数据等等,这和其他Windows应用程序一样。进入游戏循环:在这一步中,游戏代码将进入游戏主循环,此时各种游戏动作和情节开始运行,直到当接受到用户退出游戏的命令。获取玩家的输入信息: 在这一步中,游戏玩家的输入信息被处理或缓存,以备下一步人工智能和游戏逻辑使用。执行人工智能和游戏逻辑:这部分包括了游戏代码的主体,诸如执行人工智能、物理系统和常规的游戏逻辑,其结果用于渲染下一帧图像。渲染下一帧图像: 游戏的输入和第四步中游戏人工智能和游戏逻辑执行的结果,被用来产生游戏的下一帧。这个图像通常放在不可见的缓存区内,因此玩家不会看到它逐渐被渲染的过程。随后该图像被迅速拷贝到显示存储器中并显示出来。同步显示:通常由于游戏复杂程序不同,游戏在计算机上运行的速度会不一。使用定时器和等待函数确保游戏和最大帧同步,通常认为30FPS(帧/秒)是可以接受的最低速率,而大多数动作玩家将他们的图形调整到不大于60FPS。循环:返回到游戏的入口并重新执行上述全部步骤。关闭:这一步游戏结束,表示将退出主程序或游戏循环,并回到操作系统。然而,在用户进行结束之前,用户必须释放所有的资源并清理系统。游戏基本流程简图如下: 2东华理工大学软件学院毕业设计(论文) 游戏的相关知识和系统平台的阐述 图-1 游戏基本流程图2.2游戏系统元素阐述游戏元素是指各类游戏的基本构成要素,该项目主要是侧重射击类游戏,那么其中主要包括4中元素:(1)游戏界面:人物造型、战斗场地、动画效果等,当玩家在进行游戏时,界面的效果,风格将会在第一时间告诉给玩家,这是游戏的大致轮廓,其中主要包括以下2点:图形技术:2D和3D图形技术;游戏视角:第一人称视角,第三人称视角,俯视角。(2)游戏创意:游戏的创作意义,新奇,惊人,震撼,实效,有较突出的独立性。(3)可玩性:有较强的可玩性,情绪 风格 精神这三个 方面 特征 。可玩性是玩家和乐趣之间的沟通桥梁,不仅体现在单机玩家和电脑对抗中,也体现在多人多角色的竞争中,良好的可玩性是游戏是否能够占领市场的作用之一。(4)游戏声音:游戏声音常常用于渲染气氛,烘托游戏的乐趣,使得游戏不显得匮乏无力。用于给予听觉上的反馈,例如音效,背景音乐,对话等,高品质的音乐可以达到争强游戏的表现力的效果。 3 2.3 游戏系统的层次 游戏系统可以分为三个层次:游戏层,引擎层,系统层,如下图所示: 图-2游戏的层次图 2.4 开发环境和相关技术的概述2.4.1 开发环境: 操作系统:XP,Win7 程序语言:C+ 开发包: MFC ,DirectX(SDK) IDE: Visual C+ 6.02.4.2 相关技术 C+ 语言特点C+是一种从C语言(面向过程)的基础上派生出的具有面向对象特性的高级编程语言 具体来说C+语言是一种优秀的面向对象程序设计语言,它在C语言的基础上发展而来,但它比C语言更容易为人们学习和掌握。C+以其独特的语言机制在计算机科学的各个领域中得到了广泛的应用。面向对象的设计思想是在原来结构化程序设计方法基础上的一个质的飞跃,C+完美地体现了面向对象的各种特性。 主要应用: 单片机、嵌入式。 游戏服务器、游戏通信。 串口通信、USB通信、驱动开发。 早期的铁路、银行、证券、内部信息系统等底层方面的开发。1. 面向对象面向对象是一种对现实世界理解和抽象的方法,通过面向对象的方式,将现实世界的物抽象成对象,现实世界中的关系抽象成类、继承,帮助人们实现对现实世界的抽象与数字建模。通过面向对象的方法,更利于人理解的方式对于复杂系统的进行分析、设计与编程。同时,面向对象能有效提高编程的效率,通过封装技术,消息机制可以像搭积木的一样快速开发出一个全新的系统。其中主要会涉及到“类、对象、 继承、属性、方法、静态、重载、隐藏、重构、声明、定义、初始化、赋值等,面向对象语言是以对象为中心以消息为驱动。简单表示为:面向过程编程语言:程序=算法+数据;面向对象编程语言:程序=对象+消息。面向对象的程序设计(Object-Oriented Programming,简记为OOP)立意于创建软件重用代码,具备更好地模拟现实世界环境的能力,这使它被公认为是自上而下编程的优胜者。它通过给程序中加入扩展语句,把函数“封装”进编程所必需的“对象”中。对象(Object)是问题域或实现域中某些事物的一个抽象,它反映此事物在系统中需要保存的信息和发挥的作用;它是一组属性和有权对这些属性进行操作的一组服务的封装体。 关于对象要从两方面理解:一方面指系统所要处理的现实世界中的对象;另一方面对象是计算机不直接处理的对象,而是处理相应的计算机表示,这种计算机表示也称为对象。简单的来说,一个人就是一个对象,一个尺子也可以说是个对象。当这些对象可以用数据直接表示时,我们就称他为属性,尺子的度量单位可以是厘米,公尺或英尺,这个度量单位就是尺子的属性。通过面向对象的方式,将现实世界的物抽象成对象,现实世界中的关系抽象成类、继承,帮助人们实现对现实世界的抽象与数字建模。通过面向对象的方法,更利于人理解的方式对于复杂系统的进行分析、设计与编程。本质上来说,面向对象和面向过程的核心思想是一样的,区别在于面向过程的重点在功能划分,并耦合于函数原型;而面向对象的重点是功能+数据的划分,并耦合于接口,接口就是对象的原型.要注意的接口是划分的产物。如果连对象都没划分清楚,就开始设计接口,最后一定会做不少无用功,弄不好整个软件被糟糕的接口绑架而走上歧途。对象的划分比功能划分要困难许多,因为功能之间的关系可以表示为堆栈模型,是树状结构(或DAG,递归另算,因为一般不会使用复杂递归),而数据之间的关系则非常复杂,它有两个方面:空间和值(相当于lvalue和rvalue,前者用于引用,后者用于计算),数据的空间关系是一般图结构,值关系则是倒挂的树状结构,这也是为什么在自动化静态分析中,数据分析比过程分析困难许多。而数据的两重特性更加重了对象划分的困难。这在设计模式里面可没提到,因为那本书是先假设你已经划分好了,然后根据划分的关系给你提供了20多种模式让你选择。如果一上来就先考虑模式,那你就输了。但是在某些显而易见的局部设计中,快速选择一种正确的模式,是条捷径,这也是设计模式这本书的目的。正是因为对象划分的困难,所以才有重构,因为人不 5东华理工大学软件学院毕业设计(论文) 游戏的相关知识和系统平台的阐述可能总是走在正确的路上。重构实际上是一种把你往正确道路上引导的方法,使得软件在演化的过程中不至于撞南墙也不回头。但是实际的效果还是由人决定的,因为最终是人来选择往哪个方向去重构。 2. 高效性 C的程序执行效率高,主要用于底层方面的开发。C+通过指针能够直接的对内存单元里的数据进行操作,不必通过变量名找到相应的数据地址,再对内存中的数据进行操作,节省了时间开销,从而提高了程序运行的效率比。除此之外,C+语言还利用了引用、内联函数与友元提高程序运行效率的机制。引用引入了对象的一个同义词。定义引用的表示方法与定义指针相似,只是用&代替了*。引用(reference)是C+对C语言的重要扩充。内联函数在C+类中,应用最广的,应该是用来定义存取函数。我们定义的类中一般会把数据成员定义成私有的或者保护的,这样,外界就不能直接读写我们类成员的数据了。对于私有或者保护成员的读写就必须使用成员接口函数来进行。如果我们把这些读写成员函数定义成内联函数的话,将会获得比较好的效率。友元是一种定义在类外部的普通函数,但他需要在类体内进行说明,为了和该类的成员函数加以区别,在说明时前面加以关键字friend。友元不是成员函数,但是他能够访问类中的私有成员。友元的作用在于提高程式的运行效率,但是,他破坏了类的封装性和隐藏性,使得非成员函数能够访问类的私有成员。 3. 共享性C+引入了面向对象的设计思想:继承,多态,封装。C+语言利用静态数据成员及成员函数节省内存开销共享的机制。静态成员的提出是为了解决数据共享的问题。实现共享有许多方法,如:设置全局性的变量或对象是一种方法。但是,全局变量或对象是有局限性的。这一章里,我们主要讲述类的静态成员来实现数据的共享。4. 重用性C+语言利用继承、模板与多态实现无限制重用已有程序代码的机制。通过继承机制,可以利用已有的数据类型来定义新的数据类型。所定义的新的数据类型不仅拥有新定义的成员,而且还同时拥有旧的成员。我们称已存在的用来派生新类的类为基类,又称为父类。由已存在的类派生出的新类称为派生类,又称为子类。C+中的多态性具体体现在运行和编译两个方面。运行时多态是动态多态,其具体引用的对象在运行时才能确定。编译时多态是静态多态,在编译时就可以确定对象使用的形式。在C+中模板是泛型编程的基础,模板可以实现类型的参数化(把类型定义为参数),从而实现了真正的代码可重用性。C+中的模板可分为函数模板和类模板,而把函数模板的具体化称为模板函数,把类模板的具体化成为模板类。5. 支持泛型程序设计 6东华理工大学软件学院毕业设计(论文) 游戏的相关知识和系统平台的阐述泛型编程(Generic Programming)最初提出时的动机很简单直接:发明一种语言机制,能够帮助实现一个通用的标准容器库。所谓通用的标准容器库,就是要能够做到,比如用一个List类存放所有可能类型的对象这样的事;泛型编程让你编写完全一般化并可重复使用的算法,其效率与针对某特定的数据类型而设计的算法相同。泛型即是指具有在多种数据类型上皆可操作的含意,与模板有些相似。STL巨大,而且可以扩充,它包含很多计算机基本算法和数据结构,而且将算法与数据结构完全分离,其中算法是泛型的,不与任何特定数据结构或对象类型系在一起。 MFC介绍MFC(Microsoft Foundation Classes),是一个微软公司提供的类库(class libraries),以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是面向对象程序设计与Application framework的完美结合,它将传统的API进行了分类封装,并且为你创建了程序的一般框架。 关于Visual C+6.0Visual C+ 6.0,简称VC或者VC6.0,是微软推出的一款C+编译器,将“高级语言”翻译为“机器语言(低级语言)”的程序。Visual C+是一个功能强大的可视化的软件开发平台。自1993年Microsoft公司推出Visual C+1.0 7东华理工大学软件学院毕业设计(论文) 游戏的相关知识和系统平台的阐述 后,随着其新版本的不断问世,Visual C+已成为专业程序员进行软件开发的首选工具。虽然微软公司推出了 Visual C+.NET(Visual C+7.0),但它的应用有很大的局限性,只适用于Windows 2000、Windows XP和Windows NT4.0。所以实际中,更多的是以Visual C+6.0为平台。Visual C+6.0由Microsoft开发, 它不仅是一个C+ 编译器,而且是一个基于Windows操作系统的可视化集集成开发环境(integrated development environment,IDE)。Visual C+6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具。 这些组件通过一个名为Developer Studio的组件集成为和谐的开发环境。Visual C+6.0以拥有语法高亮,自动编译功能以及高级除错功能而著称。比如,它允许用户进行远程调试,单步执行等。还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。其编译及创建预编译头文件(stdafx.h)、最小重建功能及累加连结(link)著称。这些特征明显缩短程序编辑、编译及连结的时间花费,在大型软件计划上尤其显著。 关于DirectXDirectX,(Direct eXtension,简称DX)是由微软公司创建的多媒体编程接口。由C+编程语言实现,遵循COM。Microsoft DirectX 是这样一组技术:它们旨在使基于Windows 的计算机成为运行和显示具有丰富多媒体元素(例如全色图形、视频、3D 动画和丰富音频)的应用程序的理想平台。DirectX 包括安全和性能更新程序,以及许多涵盖所有技术的新功能。应用程序可以通过使用DirectX API 来访问这些新功能。DirectX是由很多API组成的,按照性质分类,可以分为四大部分,显示部分、声音部分、输入部分和网络部分。(1)显示部分担任图形处理的关键,分为DirectDraw(DDraw)和Direct3D(D3D),前者主要负责2D图像加速。后者则主要负责3D效果的显示,比如CS中的场景和人物、FIFA中的人物等等,都是使用了DirectX的Direct3D。 (2)声音部分中最主要的API是DirectSound,除了播放声音和处理混音之外,还加强了3d音效,并提供了录音功能。我们前面所举的声卡兼容的例子,就是利用了DirectSound来解决的。(3)输入部分DirectInput可以支持很多的游戏输入设备,它能够让这些设备充分发挥最佳状态和全部功能。除了键盘和鼠标之外还可以连接手柄、摇杆、模拟器等。(4)网络部分DirectPlay主要就是为了具有网络功能游戏而开发的,提供了多种连接方式,TCP/IP,IPX,Modem,串口等等,让玩家可以用各种连网方式来进行对战,此外也提供网络对话功能及保密措施。 8东华理工大学软件学院毕业设计(论文) 游戏的分析和设计 第3章 游戏的分析和设计3.1游戏分析 3.1.1 概述 随现今经济及计算机多媒体技术的飞速发展,计算机游戏日益受到人们的亲睐,成为人们生活中重要的组成部分。目前纷繁复杂的计算机游戏,多由单机版游戏发展而来,学习简单的单机版游戏制作,有益于加深对计算机游戏的制作理念的理解,也将有益于今后参加更加复杂的项目。 本游戏系统以Visual C+ 6.0作为系统应用程序开发工具,以MFC中单文档应用程序为程序基础,开发实现的2D单机版射击类游戏。3.1.2 可行性分析 1技术可行性 本游戏以C/C+语言为基础,以Visual C+6.0(简称vc+)为开发平台。通过微软提供的MFC框架实现的基于DirectX的简单的飞机射击游戏。C+,是在C语言的基础上发展而来,C+保留了C语言的所有优点,增加了面向对象的机制。C+面向对象编程语言具有如下4个基本特征:抽象,继承,封装,多态。MFC,微软基础类(Microsoft Foundation Classes),实际上是微软提供的,用于在C+环境下编写应用程序的一个框架和引擎,VC+是Windows下开发人员使用的专业程序C+ 开发包的SDK(SDK,Standard SoftWare Develop Kit,专业软件开发平台),MFC就是挂在它之上的一个辅助软件开发包,MFC作为与VC+血肉相连的部分(注意C+和VC+的区别:C+是一种程序设计语言,是一种大家都承认的软件编制的通用规范,而VC+只是一个编译器。MFC是Win API与C+的结合,API,即微软提供的WINDOWS下应用程序的编程语言接口,是一种软件编程的规范,但不是一种程序开发语言本身,可以允许用户使用各种各样的第三方。MFC是微软对API函数的专用C+封装,这种结合一方面让用户使用微软的专业C+ SDK来进行Win下应用程序的开发变得容易,因为MFC是对API的封装,微软做了大量的工作,隐藏了好多程序开发人员在Win下用C+ & MFC编制软件时的大量内节,如应用程序实现消息的处理,设备环境绘图,这种结合使得应用程序开发人员开发更加方便了,产品的开发周期大大降低,效率提高了。 DirecX是微软提供的多媒体编程接口 ,遵循COM技术,使得游戏的声音特效,显示部分,输入信息部分和网路部分的开发更加便捷。 9 东华理工大学软件学院毕业设计(论文) 游戏的分析和设计2操作可行性分析本游戏以传统的C/S为体系结构,对用户的计算机硬件没有什么特别的要求,也不需要用户具有较高的计算机水平。只需一台安装了XP/win7等操作环境,声卡和显卡功能正常。3.2 游戏设计3.2.1游戏总体设计规划 本游戏的整体结构如下: 图-3本游戏的整体结正方:玩家。具有生命力(本游戏初始设为7),有火力(本游戏分为3中:单火力,双火力,和强火力),每次被炸毁生命力就减1,直到玩家的生命力为0时,结束游戏.反方:电脑本身,即敌机。敌机的出现是随机的,子弹的发射是按照一定的位置移动的,直到碰到游戏界面的末端。火力:火力的存在是单独的,其作用在于为玩家服务的,当玩家的火力值大于5时,生命力和火力都会增强。火力的产生,初始值为0,表示单火力,之后没添加一个火力,值增加1。背景:本游戏的背景设置是动态的,利用时钟控件,实现通过移动位图背景来映射飞机的前进飞行。 103.2.2 游戏的对战规则 实现游戏的规则,这个是游戏的基础,也是必修准确无误实现的功能。 本游戏的对战规则图如下: 图-4 本游戏的对战规第4章 游戏的各模块的详细设计与实现系统功能模块结构总图如下: 图-5 系统功能模块结构总图 11东华理工大学软件学院毕业设计(论文) 游戏的各模块的详细设计与实现4.1 游戏界面显示模块4.1.1 模块描述游戏界面是对游戏第一印象的构成部分,本游戏界面表现的是全屏,由于位图本身的限制,我们不可能总是画那么多的位图,也不可能利用放大缩小位图的方法,这样会产生严重的闪烁,但是可以利用空白的方法,获取屏幕大小的函数获得屏幕的分辨率大小,然后设法将位图显示到屏幕的中间。4.1.2 模块功能本模块的功能就是要将各个游戏元素显示出来,那么首先要获取屏幕的宽度和高度,并且保存为全局变量,这样方便以后在别的地方使用。接下来是显示背景,背景的高度为2000像素,远远大于屏幕的像素,但是背景的宽度是有限的,我们必须确定位图的起点:(width-800)/2,0)。宽度一定:800,高度就是height。在具体实现上,我们依然利用透明背景位图的显示函数,但是显示由于一些变量的关系,我们只能给背景数组赋值。4.1.3 模块实现该模块的算法描述:首先建立基于单文档的MFC应用程序,名字任取,如: FightingBetweenThePlanes。然后在类视图中C*View中找到OnDraw成员函数,该函数功能就是在MFC框架启动后绘制应用程序的主界面,凡是最先呈现给用户视图,都是在本功能函数中实现,并且利用该函数的参数pDC,即上下文设备描述表,就相当于画家的画布,要绘制出漂亮的界面,总得先要张画布吧。其次,通过先获得屏幕窗口的矩形区域,经过计算获取游戏界面显示的屏幕区域.。接着通过pDC设备描述表选入一张背景图片,再接着就是通过BiTBlt函数将这张背景图片绘制到游戏主界面上。最后,就是通过自定义的类CGame类,该类封装了游戏相应的行为和属性,这样便可以通过该类的成员函数SetTransparentBitmap在主界面上显示我方飞机位图,火力位图,以及游戏结束后的界面等。 12东华理工大学软件学院毕业设计(论文) 游戏的各模块的详细设计与实现 该模块的算法流程图如下: 图-6 该模块算法流程图该模块的关键实现编码如下:GetWindowRect(&WindowRect);/ 获得屏幕窗口的矩形区域/将背景图片对象选入设备描述表Dc.SelectObject(backmap);/绘制两张位图,并使它们连接pDC-BitBlt(width-800)/2,0,8000,height,&Dc,0,goup-2000,SRCCOPY);pDC-BitBlt(width-800)/2,0,8000,height,&Dc,0,goup,SRCCOPY);/显示我方飞机game.SetTransparentBitmap(dc.GetSafeHdc(),game.plane,(width-800)/2+game.xStart*50+20, game.yStart*height/600*50, 0,0, game.cTransparentColor);/显示火力位图game.SetTransparentB
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- ××超市文件归档规定
- 校园生活的点滴记事类作文9篇
- 读西游记有感于成长之路读后感(15篇)
- 2025年法语TCF考试试卷:法语阅读理解与长篇文本分析
- 2025景观设计师(初级)职业技能鉴定模拟试题分析
- 2025年电工特种作业操作证考试试卷(电工电气工程合同管理咨询报告)
- 2025年电子商务师(初级)考试试卷:电商数据分析与预测建模试题
- 太空之旅的想象之旅小学想象作文14篇
- 2025年消防执业资格考试题库:消防救援队伍管理法规案例分析真题解析试卷
- 2025年保险从业资格考试保险法律法规与政策实务应用与案例分析试题
- 供暖管道焊接技术培训
- 滋补品店铺运营方案设计
- 2025年保密教育线上培训考试题库参考答案
- 安管员考试题库及答案
- 《屹立在世界的东方》课件
- 【博观研究院】中国口服维生素保健品市场分析报告(简版)
- T/CI 475-2024厨余垃圾废水处理工程技术规范
- T/CCT 011-2020干法选煤技术规范
- (高清版)DB62∕T 4730-2023 公路装配式石笼防护设计与施工技术规范
- 2024-2025 学年八年级英语下学期期末模拟卷 (深圳专用)原卷
- 内蒙古呼和浩特市实验中学2024-2025学年下学期七年级数学试卷
评论
0/150
提交评论