1、 太 原 理 工 大 学 毕 业 设 计 (论 文 )用 纸I职场大变样社区():下载毕业设计成品全套资料,全部 50 元以下弹力球游戏摘 要弹力球游戏是一款十分有趣的休闲益智小游戏,弹力球游戏原理:碰撞基本都是参照“反射定理”的,就是出射角=入射角,但是做碰撞时需要角度。碰撞的运动和球的方向有关,球的方向有好几种。有 8 向的,也有 4 向的。保证小球横向上在允许范围之内运动,当触发时就反方向运动,当出了球拍的可击打范围就停止运行。本游戏中通过分析使用软件 Visual Studio2012 游戏的开发流程,对功能进行设计。该游戏主要实现了开始游戏,游戏难度选择,记录统计等功能。游戏操作简单
2、,功能齐全,是广大游戏爱好者都喜欢的一款游戏,具有一定的游戏性和娱乐。本文在介绍 VC+相关技术和国内外发展现状的基础之上,对弹力球程序的整个生命周期各个开发阶段进行了非常详细地介绍。首先,我分析了开发本游戏软件的可行性,重点分析本程序采用的技术可行性。其次,还从游戏主界面等几方面,认真分析了本游戏的功能需求;同时,从可使用性和安全性方面分析了属性需求。然后,进行了游戏的概要设计和详细设计,很好的展示了游戏的界面。保证了程序代码的正确性和功能实现的可靠性,最后,本文还介绍了游戏软件的程序调试过程和功能测试结果。关 键 字 : 弹 力 球 ; 游 戏 ; VC+; 娱 乐太 原 理 工 大 学
3、毕 业 设 计 (论 文 )用 纸IIBreakBall GamesAbstractElastic ball games is a very interesting casual puzzle games, elastic ball game principle: basic collision is refer to “reflection theorem“, is the emergence Angle = incidence Angle, but do the need when collision Angle. Impact on sports and the direction of
4、 the ball, there are several kinds of the direction of the ball. There are 8 to and 4 to. Ensure a ball on the lateral movement within the scope of the permit, reverse direction, when triggered when the racket to hit range will stop running.By analyzing the use of software in this game Visual Studio
5、2012 the development process of the game, to design the function. The game is mainly realized the start the game, the game difficulty choice, record statistics, and other functions. Games operation is simple, the function is all ready, is the vast majority of gamers like a game, gameplay and enterta
6、inment.This paper introduces the vc + + related technologies and development status of both at home and abroad on the basis of the bouncing ball program throughout the life cycle of each development phase was introduced in great detail. First, I analyze the feasibility of developing this game softwa
7、re, mainly analyzes the technical feasibility of using this program. Second, also from several aspects such as the main interface game, carefully analyzes the function requirements of the game; At the same time, analyzed from the aspects of usability and safety of property requirements. Then, has ca
8、rried on the summary design and detailed design of the game, good interface of the game. To ensure the validity of the 太 原 理 工 大 学 毕 业 设 计 (论 文 )用 纸IIIprogram code and the reliability of function implementation, and finally, the article also introduces the game software program debugging process and
9、 function test results.Key words: BreakBall;The game;VC+; Entertainment目 录1 绪论 .11.1 课题背景 .11.2 目的和意义 .11.3 主要任务 .21.4 论文工作与安排 .21.5 本章小结 .32 技术及工具介绍 .42.1 开发环境 .42.2 相关技术综述 42.3 开发工具 .42.3.1 Visual Studio 2012 简介 .52.3.2 开发工具 52.4 本章小结 63 系统需求分析 73.1 游戏历史版本及规则简介 .73.2 游戏规则介绍 .73.3 可行性分析 .83.3.1 技术可
10、行性 .83.3.2 经济可行性 .83.3.3 操作可行 .83.3.4 法律可行性 .9太 原 理 工 大 学 毕 业 设 计 (论 文 )用 纸IV3.4 算法分析 .93.4.1 砖块的初始化 .93.4.2 小球的初始化 .93.4.3 球在空中的运动轨迹 .103.5 需求分析 103.5.1 用户需求 .103.5.2 软件属性需求 .113.6 本章小结 114 程序设计 .124.1 游戏逻辑设计 .124.2 概要设计 .124.3 游戏操作设计 .134.4 功能模块设计 .134.4.1 系统流程图设计 .134.4.2 类的主要功能 .144.4.3 关系依赖图 .1
11、54.5 类的详细设计 .164.5.1 主类 CSuperBrickBreaker 164.5.2 类 CBall 174.5.3 类 CBricks 174.5.4 类 CDirectDrawGame 184.5.5 类 CPaddle 184.5.6 类 TBallCorner .194.5.7 类 TBrick 194.5.8 类 Global.204.6 本章小结 205 程序具体实现 .215.1 游戏主界面设计与实现 .215.1.1 主类 CSuperBrickBreaker 215.1.2 类 CBall 23太 原 理 工 大 学 毕 业 设 计 (论 文 )用 纸V5.1
12、.3 类 CBricks 255.1.4 WinMain.Cpp265.1.5 其他类 275.2 游戏功能界面实现 .285.3 本章小结 .306 软件测试 .316.1 测试概述 .316.1.1 软件测试的目的 .316.1.2 测试的内容 326.1.3 测试流程 .326.1.4 测试阶段 .336.2 游戏的具体测试 336.3 本游戏的测试 .346.3.1 测试用例 .346.4 本章小结 .36结 论 37参考文献 38致 谢 39太 原 理 工 大 学 毕 业 设 计 (论 文 )用 纸11 绪论1.1 课题背景游戏是全球最大的娱乐经济项目之一,已经被命名为“第九艺术”
13、。而由“游戏”派生出来的职业,除了软件开发外,游戏包装宣传推广、攻略指导、网络游戏管理员和职业游戏玩家等,已成为了一系列专门的岗位。面对游戏产业如此巨大的市场空间,国内各大城市纷纷加大了这方面的人才培养,中国的游戏人才培训已随着游戏行业的总体发展开始逐步迈入了正轨。 虽然说中国的游戏行业开始逐步的迈入了正轨,但是现今,游戏人才出现严重的瓶颈时期,高校的扩招、金融危机的侵袭直接影响着我们最关心的就业问题,但是另一方面游戏人才的缺乏又直接制约着行业的发展,这就更加严格了对社会培训机构的稳定性和正规性的要求。在我国,游戏人才培养体系还未健全,部分开设了相关专业的高校,游由于理论和实践的脱离无法完全满
14、足网游公司对人才的需求。所以,就中国目前的市场分析来看,加强游戏产业必须在多渠道人才培养体系上加快突破,尽快建立起多渠道人才培养体系,来满足社会对游戏人才的需求。弹力球游戏始祖是史蒂夫乔布斯与他的好友沃兹(苹果公司的另一位创始人)于1975 年的夏末,花了 4 天时间设计完成的游戏乒乓 。同时,美国英宝格公司(en:Atari Games,ja: () )于 1976 年推出的街机游戏“Breakout” ,由该公司在 1972 年发行的“PONG” (世界上第一款电子游戏,类似台球)改良而来。相较于其前作,一个人就可以玩与变化丰富这两项特点让 Breakout 相当卖座,使各家公司竞相模仿。
15、因为规则简单与游戏性,现在许多移动电话都有内建打砖块游戏,也有许多因特网小游戏版本。打砖块游戏一般不大,甚至用软盘即可容下。1.2 目的和意义弹力球游戏中的一款经典老游戏,又名打砖块游戏,虽然玩法很简单,但是以前可是非常火爆的。游戏目标是消去墙上所有的砖块。当今用简单的代码编写的小游戏越来越受人们的欢迎,所以对于小游戏的开发也成为了各大编程人士的最爱。我选择弹力球游戏这个课题,用代码控制游戏的等级,运用不同的函数来控制球的速度和方向,游戏简单而有趣。选择这个题目一方面的原因是我之前在学校所学的太 原 理 工 大 学 毕 业 设 计 (论 文 )用 纸2一系列关于软件开发的知识,如软件开发模型、
16、VC+语言、软件测试相关知识以及运用考文献的能力没有过这种整合性的锻炼,虽然有一些小的课设,但是只是关于某一门课的小结,所以我需要毕业设计这样一次完整的软件开发来锻炼自己;另一方面,因为这个游戏,并且可以说是一段时期自己玩的唯一的游戏,所以小的时候就很希望自己能研究一下这个游戏是怎么做出来的,知道学完整个专业课程后,我认为这个时机已经成熟,我已经有能力制作这个小游戏了。因此,我希望通过自己的所学知识把它剖析开来,通过自己的动手实践,真正的了解它的本质和精髓。综合来看弹力球小游戏的开发难度并不是太高。VC+语言功能丰富、表达能力强、使用灵活方便、应用面广、目标程序效率高、可移植性好,纯粹的面向对
17、象的编程,特别适合用于编写应用软件。代码简单易懂,在游戏的同时也可以简单的看一下代码,有助于初涉 c+者语言水平的提高。 作为新一代的大学生,现在科学技术不断的发展,每一分,每一秒中都在改变人们的生活,而且这种改变正在不断的扩大,不断的深入,我们学习最新最先进的技术,站在时代的前沿,即使不创造新的时代,也不能被新时代淘汰,因此掌握时代动态,适应社会发展,应该能够独立完成各种任务,成为一名合格的新时代的人才。本次设计不仅考查了我综合运用以前所学知识的能力,同时也锻炼了我的实际动手能力,对于我以后工作能力的培养具有重要的意义。1.3 主要任务弹力球游戏主要完成以下任务或需要解决以下问题:(1)如何
18、实现多个砖块的显示?(2)如何实现挡板跟随左右控制键的移动?(3)如何实现小球的自动运动? (4)如何实现小球与挡板的碰撞检测? (5)如何处理发生碰撞后小球的运动方式? (6)如何实现碰撞后砖块的消失? (7)如何评判当前的得分?太 原 理 工 大 学 毕 业 设 计 (论 文 )用 纸31.4 论文工作与安排本次设计的目标是开发一个基于 VC+的弹力球游戏,设计一套功能比较完善的、具有可玩性的游戏,论文安排如下:第 1 章为本章绪论,简述弹力球游戏这个课题的背景情况以及开发本系统的意义。第 2 章为技术及工具介绍,介绍本游戏所需要的开发环境与开发技术。第 3 章为需求分析,本章中明确了弹力
19、球游戏需要实现的功能,以及游戏设计过程中各类的介绍,进行了可行性分析、算法分析等。第 4 章为总体设计,详细描述了本系统中设计情况,并给出了系统总体界面的设计方案。 第 5 章为程序设计与编码各主要功能模块的实现方法和部分关键代码,同时提供了个主要界面运行的参考图片,以更直观了解本游戏的实现情况。第 6 章为软件测试,测试系统功能实现并对测试结果进行记录分析。第 7 章为总结,为此次毕业设计做一个总结,总结所获得的经验和体会。1.5 本章小结本章介绍弹力球小游戏的课题背景、我选择本题目作为毕业设计题目的目的和意义以及本次毕业设计中我需要解决的问题。太 原 理 工 大 学 毕 业 设 计 (论
20、文 )用 纸42 技术及工具介绍2.1 开发环境操作系统:Microsoft Windows 7开发软件:Visual Studio2012程序语言:Visual C+6.0、C/C+2.2 相关技术综述本游戏的开发语言为 VC+。开发工具选用 Visual Studio2012 中的VC+6.0。Visual C+6.0 不仅是一个 C+编译器,而且是一个基于 Windows 操作系统的可视化集成开发环境(integrated development environment,IDE) 。Visual C+6.0 由许多组件组成,包括编辑器、调试器以及程序向导 AppWizard、类向导 Cl
21、ass Wizard 等开发工具。 这些组件通过一个名为 Developer Studio 的组件集成为和谐的开发环境。数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。 类是面向对象程序设计语言中的一个概念。类(Class)实际上是对某种类型的对象定义变量和方法的原型。它表示对现实生活中一类具有共同特征的事物的抽象,是面向对象编程的基础。类是对某个对象的定义。它包含有关对象动作方式的信息,包括它的名称、方法、属性和事件。实际上它本身并不是对
22、象,因为它不存在于内存中。当引用类的代码运行时,类的一个新的实例,即对象,就在内存中创建了。虽然只有一个类,但能从这个类在内存中创建多个相同类型的对象。2.3 开发工具Microsoft Visual Studio(简称 VS)是美国微软公司的开发工具包系列产品。VS是一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如 UML 工具、代码管控工具、集成开发环境(IDE)等等。所写的目标代码适用于微软太 原 理 工 大 学 毕 业 设 计 (论 文 )用 纸5支持的所有平台,包括 Microsoft Windows、Windows Mobile、Windows CE、.N
23、ET Framework、.NET Compact Framework 和 Microsoft Silverlight 及 Windows Phone。Visual Studio 是目前最流行的 Windows 平台应用程序的集成开发环境。2.3.1 Visual Studio 2012 简介Visual Studio 2012 作为一个集成解决方案,适用于无论是个人或者各种规模的开发团队。Visual Studio2012 实现了同事间的无缝协作,提高了生产效率与专注度,最终好的点子变成了优秀的现实应用。您可以使用灵活敏捷的规划工具(如容量规划、任务板和积压工作管理)来按照您自己的进度实现增
24、量开发技术和敏捷方法。使用高级建模、发现和体系结构工具可描述您的系统并帮助确保实现您的体系结构构想。Visual Studio 2012 是一个综合性产品系列,适用于每一位希望升级或创建精彩应用程序的组织、团体和个人开发人员。VS2012 通过整合先前单个产品中的功能并为每个版本加入新的强大功能,简化了产品系列,并且,它更加适合用于开 windows8专用程序。Visual Studio 2012 荣获在软件界有奥斯卡奖之称的 Jolt 奖 2013 年生产力奖。Visual Studio 已经逐渐将软件行业扩展到软件设计和协作、 生命周期,以及更改管理系统等方面,Visual Studio
25、2012 版本提供了更为简便优化界面,实现轻松导航项目应用程序;加入了针对 Windows 8 项目的可视化的工具集,对于 Web 开发,增加了最新的模板、工具以及对 HTML5 和 CSS3 等新标准的全面支持等。2.3.2 开发工具Visual C+6.0 是 Microsoft 公司开发的基于 C/C+的面向对象的可视化集成开发工具,它是 Visual Studio 中功能最为强大、代码效率最高的开发工具。Visual C+6.0与以前的版本相比有了多方面的改进。它的编译器、调试器、连接器、编辑器、资源编辑器都有所加强。在编辑器中还提供了自动语句生成功能,编辑器会像 Visual Bas
26、ic一样自动提示函数的参数、对象的成员。另外,Visual C+ 6.0 还提供了很多向导。MFC 提供了一些新的类,提供了更强大的数据访问功能。用户可利用 Visual C+6.0以两种方式编写 Win32 应用程序,一种方式是基于 Windows API 的 C 编程方式,另太 原 理 工 大 学 毕 业 设 计 (论 文 )用 纸6一种是基于 MFC 的 C+编程方式。 Visual C+ 6.0 的主要特点如下: Visual C+ 6.0 的最大特色就是提供面向对象技术的支持,它利用类把大部分与用户界面设计有关的 Windows API 函数封装起来,通过 MFC(Microsoft
27、 Foundation Class)类库的方式提供给开发人员使用,大大提高了程序代码的重用性。Visual C+ 6.0 提供一个功能强大的应用程序生成向导 AppWizard,这也是其得意之处。有了 AppWizard,用户将不会为创建繁琐的初始化代码而苦恼。AppWizard 将帮助 MFC 类库的用户自动生成一个运行程序框架一个空的不能做任何事情的应用程序,而用户只需要在该框架的适当部分添加扩充代码就可以得到一个满意的应用程序。Visual C+ 6.0 的另一个强大工具就是 Class Wizard,用户通过它能够方便而有效地使用和管理 MFC 类库。以前,继承和派生一个类是一件很麻烦
28、的事,而现在简单了,只需在 Class Wizard 中指定一些必要信息,Visual C+ 6.0 将自动为你生成类的框架和代码。Visual C+ 6.0 利用“所见即所得”的方式完成程序界面的设计,大大减轻了程序设计人员的劳动强度,提高了开发效率。Visual C+ 6.0 的功能强大,用途广泛。不仅可以编写普通的应用程序,还能很好的进行系统及通信软件的开发。2.4 本章小结本章主要介绍弹力球游戏开发过程中所需要的开发环境、开发软件及开发语言。太 原 理 工 大 学 毕 业 设 计 (论 文 )用 纸73 系统需求分析3.1 游戏历史版本及规则简介弹力球游戏是一种动作电子游戏的名称,它又
29、名“打砖块”游戏。玩家操作一根萤幕上水平的“棒子” ,让一颗不断弹来弹去的“球”在撞击作为过关目标消去的“砖块”的途中不会落到萤幕底下。球碰到砖块、棒子与底下以外的三边会反弹,落到底下会失去一颗球,把砖块全部消去就可以破关。随着科技的发展与进步,弹力球游戏也进行了不断地更新与创新以及演变,游戏界面也越来越精美, 如今有各种各样版本的弹力球游戏,例如:彩色打砖块(图 3-1) 、弹力球打砖块(图 3-2) 。图 3-1 彩色打砖块 图 3-2 弹力球打砖块3.2 游戏规则介绍(1)弹球区域下方为横板接球,上方为砖块。 (2)通过键盘的左、右光标键控制接球横版的移动。 (3)小球落到横板水平线,横
30、板未接注小球,若 turns 为 0 本局结束。(4)若墙上的砖块被小球全部打没,则说明完成游本关游戏,然后直接进入下一关。 (5)小球弹起碰到的砖块自动打碎、消失。 (6)小球与横板为完全弹性碰撞,不考虑能量损耗。 太 原 理 工 大 学 毕 业 设 计 (论 文 )用 纸8(7)弹力球游戏难度分为 3 个等级,其主要不同在于球的个数,以及横板的数量。(8)小球每打碎一个砖块要进行计分,打碎的砖块颜色不同,记分也不同。3.3 可行性分析3.3.1 技术可行性在技术方面,使用 VC+,它功能强大,对于游戏里面的界面设计,动作类的算法以及常用函数构造和系统函数的调用等都可以用它来实现,相信能较好
31、的编写出这个小中型游戏系统。3.3.2 经济可行性在经济方面初步从成本来看,我们做的这个游戏主要是耗费人力,至于财力方面不需要投入什么,只要游戏能够在通用游戏平台里运行就几乎很成功了;从系统的经济效益来看,我相当看好,估计它一定可以超过游戏本身所开发的成本。它的理由主要有两个方面:其一随着社会的越来越进步。人员的越来越紧张的竞争。工作压力的重要之下,必然有大部分人喜欢在工作闲暇之余让自己充分的放松,这个时候游戏,就是最好的兴奋剂,可以带动整个人,让整个人兴奋起来,不至于那么疲惫和无聊。其二弹力球这个游戏通俗易懂,简单好玩,老少皆宜,相信随着它的流行会有更多的人喜欢这款小游戏的。3.3.3 操作
32、可行在操作方面,主要操作左右方向键,发射小球击中目标砖块才可以得分,不同颜色的砖块被击中打碎后的得分也不同,碰撞后小球的速度有变化,并且进行分数积累,游戏设有三个难度等级,每个等级又设有几关,每破一关直接进入下一关,难易程度相当,在玩游戏的过程中,当小球碰撞到不同颜色的墙时的速度也会不同,得分累加也不同,很有可玩性。太 原 理 工 大 学 毕 业 设 计 (论 文 )用 纸93.3.4 法律可行性(1)所有技术资料都为合法。(2)开发过程中不存在知识产权问题。(3)开发过程中未涉及任何法律责任。综上所述,本系统的开发从技术上、从经济上、从法律上都是完全可靠的。3.4 算法分析程序初始化包括砖块
33、的位置初始化、挡板的位置初始化 和球的位置初始化。其中砖块的初始化和挡板的初始化方法基本相同。判断小球碰到砖块、判断小球碰到砖块的哪个边、小球碰到砖块的不同位置(这里只考虑运动方向)的处理方法。3.4.1 砖块的初始化 砖块的初始化位置八行十二列摆放方法。因此需定义一个二维数组用来存放砖块,设置两个随机变量 m 和 n 作为数组的行数和列数,其值固定为 8 和 12。 砖块大小和游戏界面大小均为固定值,砖块间的间距必须控制好,因此必须对砖阵中每一个砖块的具体位置进行计算。砖块是一个矩形,确定它的左上角坐标和它的长宽,便可确定砖块的位置。因此定义一个数组存放每一个砖块的左上角坐标,然后定义一个
34、Point型变量存放砖块的长宽。 设游戏界面宽度为 L,砖阵有 m 列,要使砖块摆放均匀,把 L 均分成 m 份,把每一个砖块放到每一份空间的中心,确定砖块的 x 坐标;采用一个砖块的宽度作为砖块的 y 坐标,保证砖块之间的竖直距离恒定。3.4.2 小球的初始化 小球的初始位置应在挡板的正中央,而本游戏的小球初始位置是从左边墙发射球,小球的绘制方法是:把小球看成个矩形,确定起始位置和长宽,就可以绘画出矩形的内切椭圆,将椭圆的长轴和短轴设为相等值,椭圆就可变成圆形。因此只要确定了小球的左上角坐标和小球的直径就确定小球的具体位置,在本游戏中小球用矩形来处理。则初始化小球的状态及当前位置表示如下:l
35、_ball_rect.top = m_y_pos;太 原 理 工 大 学 毕 业 设 计 (论 文 )用 纸10l_ball_rect.left = m_x_pos;l_ball_rect.right = m_x_pos + BALL_WIDTH;l_ball_rect.bottom = m_y_pos + BALL_HEIGHT;3.4.3 球在空中的运动轨迹本游戏中最复杂的要数小球了,因为小球要涉及到很多碰撞检测和反弹,而且这其中还和砖块、挡板有联系。小球涉及到的碰撞有:小球与墙壁碰撞、小球与挡板碰撞、小球与砖块碰撞。碰撞检测实际上是检测小球的坐标是否进入了某个特定的区域,若进入了,则小球
36、要反弹;否则,按原来的路线继续前进。小球能不断的反弹,事实上靠的是小球速度方向的改变。小球在空中的运动轨迹,包括球碰到四周边框的处理,碰到砖块后的处理和碰到挡板后的运动规则,其处理方法基本相同,以小球碰到砖块后的处理为例介绍。当小球碰到砖块左边上时,小球 x 轴方向取反,y 方向不变;当小球碰到砖块的右边时,小球的 x 轴方向取反,y 方向不变;当小球碰到砖块的上边界时 x 轴方向值不变,y 方向值取反;当小球碰到砖块的下边界时 x 方向值不变,y 方向的值取反。以砖块的位置作为参照:设砖块左上角坐标为 m_start_(x,y),砖块长宽为 m_brick_width (x,y)。小球左上角
37、坐标为 (x,y) ,小球直径为 d。由于小球相对于砖块来说体积很小,在计算中可以忽略。3.5 需求分析所谓需求分析,就是程序员根据策划案确定需要实现什么,实现成什么样子,哪些不需要做。下面逐步引领大家共同来完成这一步骤。3.5.1 用户需求 首先,本项目要做的是弹球游戏,弹球的游戏规则上面已经做了说明。不再赘述,其中游戏中的基本物品要求在这里限定一下,这个版本提供档板、弹射球、被弹射的砖块。 该游戏对速度和时间比较敏感,故程序对操作的响应要足够快速。游戏的操作方法也需要进行限定。在进入主游戏后弹射球自动从档板射出,要通过左右方向键移动太 原 理 工 大 学 毕 业 设 计 (论 文 )用 纸
38、11档板左右移动,将即将落地的弹射球反弹到击球区域。在游戏初始化时,同时要初始化被弹射球的位置,在游戏进行当中,还得随时进行碰撞检测以及计算碰撞后弹射球反弹的位置的调整。并对玩家当前的状态的分析:是否出局。另外关卡的切换也要考虑,每当某个关卡的任务完成后,对新局的重新初始化,在新局的基础上游戏循环再运行一次即可。3.5.2 软件属性需求 一个优秀的游戏软件,必须有一个正确的设计思想,通过合理地选择数据结构、操作系统以及开发环境,构成一个完善的体系结构,才能充分发挥计算机应用的优势。根据游戏玩家的实际需求,本系统的设计按照下述原则进行。(1)实用性:系统以用户需求为目标,以方便用户为原则,同时融
39、入先进的设计思想。根据用户实际的需求情况,量身制作一个功能齐全、操作简单、实用性强的游戏软件。充分满足游戏玩家的需求,真正成为为玩家提供轻松、娱乐、休闲的工具。(2)先进性:本软件将充分应用现有成熟的计算机技术、软件开发技术,为用户提供高性能的系统,可以方便的实现玩家的需要。(3)高可靠性:一个实用的系统同时必须是可靠的,本系统通过合理而先进的结构设计以及软、硬件的优化选型,可保证系统的可靠性与容错性。(4)可维护性:系统的设计要求方便维护,包括硬件的维护,软件的维护(更改,升级等)。(5)可扩展性及灵活性:系统的设计以方便未来业务的扩展和系统扩充为目标,系统要求能够方便的升级,充分保护系统的
40、投资。玩家可以根据自己的需要,灵活设置自己的游戏。3.6 本章小结本章中主要对弹力球游戏进行了可行性分析、算法分析以及需求分析。我在设计的时候除了实现游戏的基本功能以外,主要目的是加强界面等于用户体验息息相关的方面,增强游戏可玩性。太 原 理 工 大 学 毕 业 设 计 (论 文 )用 纸124 程序设计4.1 游戏逻辑设计(1)墙的设计规则 墙的形状设计可根据游戏关卡的需要而设计,其位置应该在游戏界面的偏上方的位置。可以随机摆放,但不能摆放所谓的死局,即若墙的位置距离档板太近,使玩家在没有反应过来弹射球就落地的状态。 (2)游戏胜负判定 游戏者用弹力球将墙上所有的砖块击碎,游戏直接进入下一关
41、,若将所有关卡墙上的砖块都击碎,则游戏胜利;而如果玩家在没有击碎游戏界面上所有砖块时弹射球就落地,且机会数为 0 则被判定为游戏失败。 (3)游戏玩法 游戏者使用键盘上左右键控制档板左右移动,将弹射球反弹出去,攻击被弹射的砖块。4.2 概要设计概要设计是从需求分析过渡到详细设计的桥梁和纽带,在这里程序员需要确定项目的实现方法和模块划分。由于此项目规模较小,我们决定将整个项目分成三个部分,分别是界面初始化、游戏主循环、游戏逻辑。其中图形初始化负责将图形文件加载到程序当中;游戏主循环是每个游戏必不可少的部分,游戏从开始到结束的所有步骤都要通过循环来处理;游戏逻辑当然也是该项目的关键部分,游戏获胜或
42、者失败,游戏者的每一动作是否合法,都在此模块中进行判断和处理。这一阶段中还定义了供游戏引擎算法使用的数据结构,在弹力球游戏中,我们需要对被弹射砖块的 X、Y 坐标和被弹射砖块的状态进行初始化,砖块的设置是从界面的左上角开始,确定左上角X、Y 坐标,然后固定好每块砖的长和宽,根据需要设置所需砖的个数。如下为被弹射转块的初始化常量:初始化被弹射转块左上角 X 坐标:const int DEFAULT_BRICK_START_X= 28;初始化被弹射转块左上角 X 坐标:const int DEFAULT_BRICK_START_Y= 79;初始化每个被弹射转块的宽度:const int DEFAU
43、LT_BRICK_WIDTH = 60;太 原 理 工 大 学 毕 业 设 计 (论 文 )用 纸13初始化每个被弹射转块的高度:const int DEFAULT_BRICK_HEIGHT= 25;初始化每行转块的水平间距:const int DEFAULT_BRICK_HOR_SPACE = 2;初始化每列转块的垂直间距:const int DEFAULT_BRICK_VER_SPACE = 2;初始化被弹射转块的总行数:const int DEFAULT_BRICK_ROWS = 8; 初始化被弹射转块的总列数:const int DEFAULT_BRICK_COLS = 12;4.3
44、游戏操作设计 (1)一指导航键键盘上、下、左、右键,按回车(或小键盘上的回车键)用于确定,ESC 键为取消键(返回游戏关卡选择界面)或退出键。 (2)游戏操作:进入游戏界面后,用上、下键来选择一个游戏难度,按下键回车键用于确定,选定某关。确定后便可以用左、右键来控制档板,反弹小球,用来打碎被弹射的砖块。在游戏中按 ESC 键为退出游戏,返回游戏选择界面。在游戏胜利或失败后均返回关卡选择界面。选择退出将看到游戏结束界面然后退出。4.4 功能模块设计4.4.1 系统流程图设计程序流程图又称为方框图。表示方法简明直观,是用来描述程序执行的逻辑过程的。它把程序的基本步骤归纳为:处理、判断、输入/ 输出
45、、开始和结束等几个基本功能,并用不同的记号加以表示,从而描述程序的执行过程。弹力球游戏的流程图如图4-1 所示:太 原 理 工 大 学 毕 业 设 计 (论 文 )用 纸14开 始游戏等级选择控制小球进行游戏判断撞击判断 turn 数=0YN结 束图 4-1 系统流程图4.4.2 类的主要功能本系统共包括 9 个类文件。它们分别是CBall、 CBricks、CDirectDrawGame、CPaddle、CSuperBrickBreaker、WinMain、TBallCorner、TBrick 、Global 。用九个类完成了我的弹力球游戏程序的全部功能,这些类在弹力球游戏的程序当中分别负责
46、了不同的功能模块,有着不同的功能和含义,在这里,我用表格的形式将它们展示了出来,并且在其中详细的介绍了它们每一个类的用法和功能。详细情况见表 4-1。太 原 理 工 大 学 毕 业 设 计 (论 文 )用 纸15表 4-1 类的主要功能文件名 主要功能WinMain 应用程序入口点和主方法类CBall 表示在游戏的生命周期期间球的运动状态CBricks 此类表示的砖块,用来绘制墙面上砖的位置CDirectDrawGame 构建一个简单的基于 DirectX 游戏的 DirectX 组件CSuperBrickBreaker 此类表示应用程序的主类,实现菜单功能CPaddle 此类表示要反映球的游
47、戏区域底部的可移动挡板。TBallCorner 初始化小球的位置TBrick 实现砖类的结构体Global 该文件为工具类,实现一些配置4.4.3 关系依赖图本游戏设计中的主程序为 WinMain,它通过类 CDirectDrawGame 和类CSuperBrickBreaker 来控制游戏的运行。其中 CBall、CBricks、和 CPaddle 类实现了游戏中最基础的三种角色小球、砖块和挡板,可以说这各类也是最重要的,如果没有其他类只会影响游戏的可玩性,而没有这三个类的话,游戏的基本功能就不能实现。详细的类间关系依赖图如图 4-2 所示。太 原 理 工 大 学 毕 业 设 计 (论 文
48、)用 纸16图 4-2 类间关系依赖图4.5 类的详细设计4.5.1 主类 CSuperBrickBreaker(1)CSuperBrickBreaker 类,此类表示应用程序的主类,实现菜单功能,也就是包含主方法的类。开始运行此程序。(2)成员变量:成员变量包括EGameState、 EGameType、EPausedMenuState、EGameOverMenuState、EIntersect 等变量,利用这些变量,调用其他类中的各种方法,才能完美实现程序中的各项功能。详细情况见表 4-2。太 原 理 工 大 学 毕 业 设 计 (论 文 )用 纸17表 4-2 CSuperBrickBr
49、eaker 类成员变量成员变量描述 变量类型 名称游戏的当前状态 enum EGameState正在玩的游戏等级 enum EGameType目前暂停菜单上的选项 enum EPausedMenuState、当前游戏在菜单上选择选项 enum EGameOverMenuState球相交游戏对象 enum EIntersect4.5.2 类 CBallCBall 类,主要包含了在游戏中小球的功能。包括小球的当前位置、小球的运动范围、小球的弹射速度,还有针对小球的各种控制的实现所需的变量,具体成员变量详细功能见表 4-3。表 4-3 CBall 类的主要成员变量成员变量描述 变量类型 名称当前的球的 X 位置 int m_x_pos当前的球的 Y 位置 int m_y_pos球在 X 坐标上的弹射范围 int m_x_vel球在 Y 坐标上的弹射范围 int m_y_vel速度 int m_vel_multi球的当前状态 EBallState m_state设置球的当前状态为掉落的 RECT m_captive_rect太 原 理 工 大 学 毕 业 设