毕业论文基于Visual C++ 6.0的扫雷游戏设计11326.doc
《毕业论文基于Visual C++ 6.0的扫雷游戏设计11326.doc》由会员分享,可在线阅读,更多相关《毕业论文基于Visual C++ 6.0的扫雷游戏设计11326.doc(22页珍藏版)》请在三一办公上搜索。
1、摘 要扫雷游戏是 Windows 操作系统自带的一个小游戏,过去的几年里 Windows 操作系统历经数次换代,变得越来越庞大、复杂,但这个小游戏在任何版本的 Windows 操作系统里去却依然保持着原貌。扫雷游戏是比较经典的一款小游戏,实现它的方法很多,可以用很多不同算法和语言实现,如 C,C+,VB,JAVA 等。本论文研究的是以 Visual C+ 6.0 为开发环境,设计并开发一款扫雷游戏,其功能类似于 Windows 操作系统自带的扫雷游戏。关键字:扫雷游戏;Visual C+;面向对象程序设计目录第一章 引言61.1 课题背景及意义61.2 Visual C+ 发展概况61.3 关
2、于本课程设计7第二章 游戏的总体分析与设计82.1 游戏功能简介82.2 设计构想82.3 流程规划9第三章 扫雷游戏的具体实现过程103.1 设计方法和内容103.1.1详细设计内容与流程:103.2设计流程图113.3设计创新与关键技术11第四章 源程序及运行结果134.1部分源代码134.2运行结果20参考文献22第一章 引言1.1 课题背景及意义当前随着计算机的深入普及,越来越多的人有了个人电脑,人们运用计算 机完成许多重要的工作,计算机在人们的生活中变的越来越来重要。随着计算机 的应用和发展计算机已经不单纯是一个工作工具,人们越来越重视计算机的娱乐 性了,近年来游戏产业规模持续成长,
3、全球每年游戏业总产值已经突破 200 亿美金,远远超越好莱坞电影产业以及音乐娱乐事业, 而成为目前娱乐事业的最大主流。不过游戏产业光 鲜亮丽的背后,却也隐含着高风险、高成本的危机,显示游戏产业慢慢步入“微利时代”。目前整个游戏产业的运作模式已经跟好莱坞电影产业的运作模式相同, 电影 产业有制片、发行、宣传等分工,游戏产业亦同,由专业的游戏研发小组负责研 发游戏,也有如微软这类国际级大厂负责游戏发行,甚至连“游戏制作人”也被 培养成明星一样成为一种招牌.明确的游戏产业分工的确有助于游戏产业的规模 发展与进化,但也无形中让游戏开发成本大增。为了降低游戏开发成本,开发娱 乐性强成本低的游戏就成为当前
4、的主要课题, 在这种趋势下各种小型的低成本的 游戏软件应运而生。在这其中,系统自带的小游戏也占据了相当重要的地位,与它有编写简单容易上手等特点,非常适合人们在完 那些网络游戏和 3D 游戏相比,成工作的时候适当的娱乐要求。这些小游戏大都是以益智和娱乐为目的,不仅给 紧张工作的人们以放松,还可以让人们的大脑得到开发。这些小游戏包括扫雷,弹球,纸牌等等。而本课题就是扫雷游戏的设计。1.2 Visual C+ 发展概况Visual C+ 是一个功能强大的可视化软件开发工具。自1993年 Microsoft 公司推出 Visual C+1.0 后,随着其新版本的不断问世,Visual C+ 已成为专业
5、程序员进行软件开发的首选工具。虽然微软公司推出了 Visual C+.NET(Visual C+7.0), 但它的应用的很 大的局限性,只适用于 Windows 2000,Windows XP 和 Windows NT4.0。所 以实际中,更多的是以 Visual C+6.0 为平台。Visual C+6.0 不仅是一个 C+编译器,而且是一个基于 Windows 操作 系统的可视化集成开发环境(integrated development environment,IDE)。 Visual C+6.0由许多组件组成 ,包括编辑器、调试器以及程序向导 AppWizard、 类向导 Class W
6、izard 等开发工具。这些组件通过一个名为 Developer Studio 的组件集成为和谐的开发环境。 Visual C+ 之所以具有如此广泛的用途是因为它具有以下的特点: (1) 真正的面向对象编程,使开发人员不用加入太多的代码,加快了系统开 发的速度。 (2) 可视化的编程方法以及向导的功能,使开发人员不用加入太多的代码就 可以开发出标准的 Windows 程序。 (3) 数据访问的特性, 允许对包括 Microsoft SQL Server 和其他企业数据库在 内的大部分数据库格式建立数据库和前端应用程序, 以及可调整的服务器端部件 等。 (4) 通过 ActiveX 技术可使用其
7、他应用程序提供的功能, 例如 Microsoft Word 字处理器、Microsoft Excel 电子数据表及其他 Windows 应用程序,甚至可直接使 用 Visual Basic 创建的应用程序和对象。 (5) Internet 功能强大,使用户很容易在应用程序内通过 Internet 或企业内部 网(Intranet)访问文档和应用程序,或者创建 Internet 服务器应用程序。 (6) 已完成的应用程序是真正的.exe 文件,您可以自由发布。1.3 关于本课程设计随着世界经济的长足发展和计算机技术的日益成熟, 计算机被应用到人类活 动的各个领域,各种应用软件也相继问世,这其中有
8、相当一部分是游戏软件。使 用游戏软件自然是为了满足人们对娱乐性的要求,而有些软件大都采用 3D 设计 对系统配置的要求较高。在众多游戏软件中, 也不乏一些小游戏的身影, 它们对系统的配置要求较低。能够满足人们对娱乐性的需求,是人们在完成工作娱乐时候的最好选择。现在越 来越多的人投入到这种小游戏的开发当中,它已经成为一类必不可少的游戏软件。在各种操作系统中都附带了一些小的游戏,而这些游戏也成为电脑用户软件 中不可或缺的一部分。作为本系统的开发工具,Microsoft Visual C+ 6.0 成为首选。它具有可视化的编程界面、详细的提示、以及完善的帮助文档,使得软件开发人员感到无比的亲切感。第
9、二章 游戏的总体分析与设计2.1 游戏功能简介当前各种游戏软件层出不穷。因为游戏的开发成本非常大,所以游戏的开发 具有一定的风险性,但是一些小游戏的开发具有成本小,编写简单的优势,所以 这些小游戏在游戏开发中也占有一席之地。在这类小游戏中包括益智类游戏,它 以画面精美游戏方法简单等特点得到大家的认可。 成为人们在工作之余不可或缺 的好伙伴。针对真种情况我用 VC 编写了扫雷这款小游戏。下面对该游戏的功能 做个简单的介绍。扫雷游戏的基本功能:点击鼠标左键于未知区域,如果未知区域有雷,游戏停止,显示所有的地雷。 如果没雷,则显示周围雷数,如果周围没雷,则再查看周围 八个区域是否有雷直到有雷为止并显
10、示,这其实是一个递归过程。点击鼠标右键于未知区域,则将其置为有雷而不管是否真的有雷。可选择初、中、高三级并可自定义雷数和区域大小。雷区右下角显示总雷数减去被标明有雷区域的数目。雷区右下角显示扫雷的时间。将雷全部扫清后或失败后显示一对话框。2.2 设计构想相信大多数使用 Windows 操作系统的使用者,对这款游戏都不陌生。这款游 戏不止操作简单,规则也不难,再加上游戏速度的控制机制得宜,让整个游戏在 操作过程中充满了快乐与紧张的气氛。除了游乐当中能带给使用者快乐之外,游 戏的设计内容无形中也不断训练使用者的逻辑思考能力, 对于依靠高度脑力工作的现代人,都可以通过这个游戏,不时的检验一下自己,所
11、以我们不难发现,在各种可携带的电子产品上都有这款游戏的踪影。在设计之前,我们先来了解这款游戏的规则:在不掀开任何藏有地雷的方块情况下,以最快的速度找出所有的地雷。如果在掀开方块的过程中,不小心翻开(踩到)藏有地雷的方块,则宣告失败(游戏 结束),惟有将所有不含地雷的方块掀开,游戏才算成功。游戏者可以通过地雷区内的数字提示了解以数字为中心的其周边八个方格内所含的地雷数,假若翻开的方块显示数字“3”,则表示以其为中心的周边方块内藏有3个地雷。当按下的方块不是地雷,且周边八个方块也都没有地雷时,方块会以被翻开方块 的八个方向将空白方块翻开。2.3 流程规划流程规划大致上可以分为三个部分,分别为:画面
12、初始、游戏者按下第一个方块和为非地雷方块时展开。 画面初始时,以游戏者最后一次设定的地雷区大小为范围画出地雷区,当游戏者按下第一个方块时产开始计时,接着就是如何判断按下的方块是非地雷时的 处理,这也是整个游戏的技术核心,我们可以通过递归的观念来检查周边的方块 是否含有地雷及是否继续往外翻开,直到踩到雷或者游戏胜利为止。第三章 扫雷游戏的具体实现过程3.1 设计方法和内容3.1.1详细设计内容与流程:整个程序完成后,要使操作界面出现一个9*9的棋盘格式,所以想到应该用到数组,设置一个a11113的三维数组,虽然地图是 9*9的 ,但数组申明是却是a11113,a0表示有无雷,a1表示周围雷的个数
13、,a2表示是否打开,前面的11是因为某块没有雷的时候计算周围地雷的数量的时候,如果这块是(1,1)这样的边或角的时候考虑起来就特别麻烦所以就在9*9外面再围一圈(外面这圈全部数据定义为0)这样9*9的数据都可以用相同的方式计算了不需要考虑其他的情况了,这样就使问题变得简单化,然后将其设置为静态的,这样的好处是静态数据成员只分配一次内存,供所有对象共用,并且能将变量的值保存至下一次调用时,提高了系统的运行速度1。利用for循环,if循环的嵌套依次扫描棋盘上的坐标,如果选择将该块打开,并且该块周围没有雷的话,则将其余8块打开,并记录打开的雷的数量,直到所有坐标被打开,或踩到雷时游戏结束,具体步骤如
14、下:(1) 从头到尾扫描并计数打开的数量 : 利用for循环扫描所有满足条件的数组,再利用if循环,如果该块打开且周围没有雷,则周围8块全部打开 ,并统计打开的块数。(2) 屏幕输出:利用for循环,if循环的嵌套依次扫描棋盘上的坐标,如果选择将打开该块,并且该块周围没有雷的话,则将其余8块打开 ,输出为空格。如果该块不打开,而是做标记即if(aij2 = 2)时,就输出,未打开或标记的仍然输出。(3) 输入坐标操作:设置三个参数x,y,choice,利用cout在屏幕上输出输入坐标x=,输入坐标y=,使用while语句,如果输入的坐标值已经被打开,则利用cout输出已经打开,请重新输入!,然
15、后执行上一步操作。接着用cout输出“选择操作(打开:1,标记:2):”如果该坐标未被打开,跳过while语句往下执行if语句,当choice被赋值为1时,(即打开操作)此块打开没有雷且周围8块雷数为0的时候,程序按步骤(1)继续进行,若打开有雷的话,则利用cout输出“ 很遗憾! 踩到地雷了! GameOver!”游戏至此结束,当choice被赋值为2时,按(2)中操作输出2 .(4) 设置地雷:利用srand函数和rand函数设置随机的种子。利用系统的时间参数,使time(NULL)返回一个表示当前系统时间的整数,把这个数作为种子,以此保证程序结果的随机性3.3.2设计流程图设置静态数据成
16、员a11113以及地雷总数,打开数等变量利用if循环,for循环的套用,当条件aij2 = 1成立,则该块打开 利用if循环,for循环的套用,当条件aij2 = 2成立,则该块以标记如果左边不成立,即为踩到雷,则输出 很遗憾! 踩到地雷了! GameOver!如果aij1 = 0,表示此块周围没有雷,周围8块以“ ”输出将打开的雷数进行自加并输出,以num变量表示 图3-1 设计流程图3.3设计创新与关键技术设计的难点在于如何产生随机数的问题,要解决这个问题,需要在每次产生随机序列前,先指定不同的种子,这样计算出来的随机序列就不会完全相同了,在这里需要用到两个生成随机数的函数,一个是sran
17、d(),一个是rand(),首先给srand()提供一个种子,unsigned int类型,其取值范围从065535,srand()根据这个种子会由一个特定的公式生成一个随机数序列;然后调用rand(),它会依次从这个序列中返回一个数(在0到32767之间),这里在调用rand()函数之前调用srand( (unsigned)time( NULL ) ),这样以time函数值(即当前时间)作为种子数,因为两次调用rand函数的时间通常是不同的,这样就可以保证随机性了。地图是 9*9的 数组申明是却是a11113 后面的3前面已经做过声明,a0表示有无雷,a1表示周围雷的个数,a2表示是否打开,
18、前面的11是因为某块没有雷的时候计算周围地雷的数量的时候,如果这块是(1,1)这样的边或角的时候考虑起来就特别麻烦所以就在9*9外面再围一圈(外面这圈全部数据定义为0)这样9*9的数据都可以用相同的方式计算了不需要考虑其他的情况了。第四章 源程序及运行结果4.1部分源代码#include #include #include /时间库,要用到里面的时间来做随机数的种子#include /标准工具库,要用到其中的rand()static int a11113; /a0 有无雷 a1周围雷的个数 a2 打开没有;int gameflag = 1; /游戏是否继续进行 ,=0就是结束游戏(gamefl
19、ag为一个变量)int flag = 0; /完成游戏后gameflag = 0 , flag区分是否完成游戏 int num = 0; /打开几块 int _num; / 地雷总数 int play(void) int i,j; /*重头到尾的扫描*/ for(i=1;i=9;i+) for(j=1;j=1;i-) for(j=9;j=1;j-) if(aij2 = 1) /如果该块打开 if(aij1 = 0) /如果某块上面没有雷,周围全部打开 (2) ai-1j+12 = 1; ai-1j2 = 1; ai-1j-12 = 1; aij+12 = 1; aij-12 = 1; ai+1
20、j-12 = 1; ai+1j2 = 1; ai+1j+12 = 1; num += aij2; /等价于num=num+aij2if(num = (81 -_num) /如果完成了游戏推出 flag = 1 gameflag = 0; flag = 1; return 1; /*屏幕输出*/ cout 你已经打开了num块 地雷总数:_numendl; for(i=1;i=9;i+) for(j=1;j=9;j+) if(aij2 = 1) if(aij1 = 0) cout ; else cout aij1 ; else if(aij2 = 2) /标记就输出 cout ; else co
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业论文基于Visual C+ 6.0的扫雷游戏设计11326 毕业论文 基于 Visual 6.0 扫雷 游戏 设计 11326
链接地址:https://www.31ppt.com/p-2385375.html