




已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘 要扫雷游戏是 Windows 操作系统自带的一个小游戏,过去的几年里 Windows 操作系统历经数次换代,变得越来越庞大、复杂,但这个小游戏在任何版本的 Windows 操作系统里去却依然保持着原貌。扫雷游戏是比较经典的一款小游戏,实现它的方法很多,可以用很多不同算法和语言实现,如 C,C+,VB,JAVA 等。本论文研究的是以 Visual C+ 6.0 为开发环境,设计并开发一款扫雷游戏,其功能类似于 Windows 操作系统自带的扫雷游戏。关键字:扫雷游戏;Visual C+;面向对象程序设计目录第一章 引言61.1 课题背景及意义61.2 Visual C+ 发展概况61.3 关于本课程设计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 课题背景及意义当前随着计算机的深入普及,越来越多的人有了个人电脑,人们运用计算 机完成许多重要的工作,计算机在人们的生活中变的越来越来重要。随着计算机 的应用和发展计算机已经不单纯是一个工作工具,人们越来越重视计算机的娱乐 性了,近年来游戏产业规模持续成长,全球每年游戏业总产值已经突破 200 亿美金,远远超越好莱坞电影产业以及音乐娱乐事业, 而成为目前娱乐事业的最大主流。不过游戏产业光 鲜亮丽的背后,却也隐含着高风险、高成本的危机,显示游戏产业慢慢步入“微利时代”。目前整个游戏产业的运作模式已经跟好莱坞电影产业的运作模式相同, 电影 产业有制片、发行、宣传等分工,游戏产业亦同,由专业的游戏研发小组负责研 发游戏,也有如微软这类国际级大厂负责游戏发行,甚至连“游戏制作人”也被 培养成明星一样成为一种招牌.明确的游戏产业分工的确有助于游戏产业的规模 发展与进化,但也无形中让游戏开发成本大增。为了降低游戏开发成本,开发娱 乐性强成本低的游戏就成为当前的主要课题, 在这种趋势下各种小型的低成本的 游戏软件应运而生。在这其中,系统自带的小游戏也占据了相当重要的地位,与它有编写简单容易上手等特点,非常适合人们在完 那些网络游戏和 3D 游戏相比,成工作的时候适当的娱乐要求。这些小游戏大都是以益智和娱乐为目的,不仅给 紧张工作的人们以放松,还可以让人们的大脑得到开发。这些小游戏包括扫雷,弹球,纸牌等等。而本课题就是扫雷游戏的设计。1.2 Visual C+ 发展概况Visual C+ 是一个功能强大的可视化软件开发工具。自1993年 Microsoft 公司推出 Visual C+1.0 后,随着其新版本的不断问世,Visual C+ 已成为专业程序员进行软件开发的首选工具。虽然微软公司推出了 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 Wizard 等开发工具。这些组件通过一个名为 Developer Studio 的组件集成为和谐的开发环境。 Visual C+ 之所以具有如此广泛的用途是因为它具有以下的特点: (1) 真正的面向对象编程,使开发人员不用加入太多的代码,加快了系统开 发的速度。 (2) 可视化的编程方法以及向导的功能,使开发人员不用加入太多的代码就 可以开发出标准的 Windows 程序。 (3) 数据访问的特性, 允许对包括 Microsoft SQL Server 和其他企业数据库在 内的大部分数据库格式建立数据库和前端应用程序, 以及可调整的服务器端部件 等。 (4) 通过 ActiveX 技术可使用其他应用程序提供的功能, 例如 Microsoft Word 字处理器、Microsoft Excel 电子数据表及其他 Windows 应用程序,甚至可直接使 用 Visual Basic 创建的应用程序和对象。 (5) Internet 功能强大,使用户很容易在应用程序内通过 Internet 或企业内部 网(Intranet)访问文档和应用程序,或者创建 Internet 服务器应用程序。 (6) 已完成的应用程序是真正的.exe 文件,您可以自由发布。1.3 关于本课程设计随着世界经济的长足发展和计算机技术的日益成熟, 计算机被应用到人类活 动的各个领域,各种应用软件也相继问世,这其中有相当一部分是游戏软件。使 用游戏软件自然是为了满足人们对娱乐性的要求,而有些软件大都采用 3D 设计 对系统配置的要求较高。在众多游戏软件中, 也不乏一些小游戏的身影, 它们对系统的配置要求较低。能够满足人们对娱乐性的需求,是人们在完成工作娱乐时候的最好选择。现在越 来越多的人投入到这种小游戏的开发当中,它已经成为一类必不可少的游戏软件。在各种操作系统中都附带了一些小的游戏,而这些游戏也成为电脑用户软件 中不可或缺的一部分。作为本系统的开发工具,Microsoft Visual C+ 6.0 成为首选。它具有可视化的编程界面、详细的提示、以及完善的帮助文档,使得软件开发人员感到无比的亲切感。第二章 游戏的总体分析与设计2.1 游戏功能简介当前各种游戏软件层出不穷。因为游戏的开发成本非常大,所以游戏的开发 具有一定的风险性,但是一些小游戏的开发具有成本小,编写简单的优势,所以 这些小游戏在游戏开发中也占有一席之地。在这类小游戏中包括益智类游戏,它 以画面精美游戏方法简单等特点得到大家的认可。 成为人们在工作之余不可或缺 的好伙伴。针对真种情况我用 VC 编写了扫雷这款小游戏。下面对该游戏的功能 做个简单的介绍。扫雷游戏的基本功能:点击鼠标左键于未知区域,如果未知区域有雷,游戏停止,显示所有的地雷。 如果没雷,则显示周围雷数,如果周围没雷,则再查看周围 八个区域是否有雷直到有雷为止并显示,这其实是一个递归过程。点击鼠标右键于未知区域,则将其置为有雷而不管是否真的有雷。可选择初、中、高三级并可自定义雷数和区域大小。雷区右下角显示总雷数减去被标明有雷区域的数目。雷区右下角显示扫雷的时间。将雷全部扫清后或失败后显示一对话框。2.2 设计构想相信大多数使用 Windows 操作系统的使用者,对这款游戏都不陌生。这款游 戏不止操作简单,规则也不难,再加上游戏速度的控制机制得宜,让整个游戏在 操作过程中充满了快乐与紧张的气氛。除了游乐当中能带给使用者快乐之外,游 戏的设计内容无形中也不断训练使用者的逻辑思考能力, 对于依靠高度脑力工作的现代人,都可以通过这个游戏,不时的检验一下自己,所以我们不难发现,在各种可携带的电子产品上都有这款游戏的踪影。在设计之前,我们先来了解这款游戏的规则:在不掀开任何藏有地雷的方块情况下,以最快的速度找出所有的地雷。如果在掀开方块的过程中,不小心翻开(踩到)藏有地雷的方块,则宣告失败(游戏 结束),惟有将所有不含地雷的方块掀开,游戏才算成功。游戏者可以通过地雷区内的数字提示了解以数字为中心的其周边八个方格内所含的地雷数,假若翻开的方块显示数字“3”,则表示以其为中心的周边方块内藏有3个地雷。当按下的方块不是地雷,且周边八个方块也都没有地雷时,方块会以被翻开方块 的八个方向将空白方块翻开。2.3 流程规划流程规划大致上可以分为三个部分,分别为:画面初始、游戏者按下第一个方块和为非地雷方块时展开。 画面初始时,以游戏者最后一次设定的地雷区大小为范围画出地雷区,当游戏者按下第一个方块时产开始计时,接着就是如何判断按下的方块是非地雷时的 处理,这也是整个游戏的技术核心,我们可以通过递归的观念来检查周边的方块 是否含有地雷及是否继续往外翻开,直到踩到雷或者游戏胜利为止。第三章 扫雷游戏的具体实现过程3.1 设计方法和内容3.1.1详细设计内容与流程:整个程序完成后,要使操作界面出现一个9*9的棋盘格式,所以想到应该用到数组,设置一个a11113的三维数组,虽然地图是 9*9的 ,但数组申明是却是a11113,a0表示有无雷,a1表示周围雷的个数,a2表示是否打开,前面的11是因为某块没有雷的时候计算周围地雷的数量的时候,如果这块是(1,1)这样的边或角的时候考虑起来就特别麻烦所以就在9*9外面再围一圈(外面这圈全部数据定义为0)这样9*9的数据都可以用相同的方式计算了不需要考虑其他的情况了,这样就使问题变得简单化,然后将其设置为静态的,这样的好处是静态数据成员只分配一次内存,供所有对象共用,并且能将变量的值保存至下一次调用时,提高了系统的运行速度1。利用for循环,if循环的嵌套依次扫描棋盘上的坐标,如果选择将该块打开,并且该块周围没有雷的话,则将其余8块打开,并记录打开的雷的数量,直到所有坐标被打开,或踩到雷时游戏结束,具体步骤如下:(1) 从头到尾扫描并计数打开的数量 : 利用for循环扫描所有满足条件的数组,再利用if循环,如果该块打开且周围没有雷,则周围8块全部打开 ,并统计打开的块数。(2) 屏幕输出:利用for循环,if循环的嵌套依次扫描棋盘上的坐标,如果选择将打开该块,并且该块周围没有雷的话,则将其余8块打开 ,输出为空格。如果该块不打开,而是做标记即if(aij2 = 2)时,就输出,未打开或标记的仍然输出。(3) 输入坐标操作:设置三个参数x,y,choice,利用cout在屏幕上输出输入坐标x=,输入坐标y=,使用while语句,如果输入的坐标值已经被打开,则利用cout输出已经打开,请重新输入!,然后执行上一步操作。接着用cout输出“选择操作(打开:1,标记:2):”如果该坐标未被打开,跳过while语句往下执行if语句,当choice被赋值为1时,(即打开操作)此块打开没有雷且周围8块雷数为0的时候,程序按步骤(1)继续进行,若打开有雷的话,则利用cout输出“ 很遗憾! 踩到地雷了! GameOver!”游戏至此结束,当choice被赋值为2时,按(2)中操作输出2 .(4) 设置地雷:利用srand函数和rand函数设置随机的种子。利用系统的时间参数,使time(NULL)返回一个表示当前系统时间的整数,把这个数作为种子,以此保证程序结果的随机性3.3.2设计流程图设置静态数据成员a11113以及地雷总数,打开数等变量利用if循环,for循环的套用,当条件aij2 = 1成立,则该块打开 利用if循环,for循环的套用,当条件aij2 = 2成立,则该块以标记如果左边不成立,即为踩到雷,则输出 很遗憾! 踩到地雷了! GameOver!如果aij1 = 0,表示此块周围没有雷,周围8块以“ ”输出将打开的雷数进行自加并输出,以num变量表示 图3-1 设计流程图3.3设计创新与关键技术设计的难点在于如何产生随机数的问题,要解决这个问题,需要在每次产生随机序列前,先指定不同的种子,这样计算出来的随机序列就不会完全相同了,在这里需要用到两个生成随机数的函数,一个是srand(),一个是rand(),首先给srand()提供一个种子,unsigned int类型,其取值范围从065535,srand()根据这个种子会由一个特定的公式生成一个随机数序列;然后调用rand(),它会依次从这个序列中返回一个数(在0到32767之间),这里在调用rand()函数之前调用srand( (unsigned)time( NULL ) ),这样以time函数值(即当前时间)作为种子数,因为两次调用rand函数的时间通常是不同的,这样就可以保证随机性了。地图是 9*9的 数组申明是却是a11113 后面的3前面已经做过声明,a0表示有无雷,a1表示周围雷的个数,a2表示是否打开,前面的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就是结束游戏(gameflag为一个变量)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+1j-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 cout ; /没有打开的输出 if(j = 9) coutendl; for(j=1;j=9;j+) / 内嵌循环2 if(aij2 = 1) cout ; else cout i,j ; if(j = 9) coutendl; /*输入坐标操作*/ int x,y,choice; coutx; couty; while(axy2 = 1) /如果该块已经打开,则执行括号内语句,否则 coutx,y已经打开,请重新输入!endl; coutx; couty; coutchoice; if(choice = 1) if(axy0 = 0) axy2 = 1; num+; else cout 很遗憾! 踩到地雷了! GameOver!endl; system(pause); /system是一个系统调用;pause是一个系统操作;目的是为了不让运行窗口一闪而过,让你看清楚运行的结果。gameflag = 0;/游戏结束 return 0; if(choice = 2) axy2 = 2; return 0; int main(void) int n = 10; coutn; if(n = 30) n = 30; _num = n; system(cls); /调用清屏命令/*初始化*/ int i,j; for(i=0;i11;i+) for(j=0;j11;j+) aij0=0; aij1=0; aij2=0; /*设置地雷*/ srand( (unsigned)time( NULL ) ); /随机的种子 (srand是设计随机数的种子,作用是使每次产生的随机数不一样,time(NULL)会返回一个表示当前系统时间的整数,把这个数作为种子就能保证程序每次运行结果都不一样了)int n1,n2; for(i= 0;i=n;) n1 = rand()%9 + 1; n2 = rand()%9 + 1; if(an1n20 != 1) an1n20 = 1; i+; else continue; /*计算某块周围有几颗地雷*/ for(i=1;i=9;i+) for(j=1;j=9;j+) if(aij-10 = 1) aij1+; if(aij+10 = 1) aij1+; if(ai-1j0 = 1) aij1+; if(ai-1j-10 = 1) aij1+; if(ai-1j+10 = 1) aij1+; if(ai+1j0 = 1) aij1+; if(ai+1j+10 = 1) aij1+; if(ai+1j-10 = 1) aij1+; while(gameflag) play(); system(cls); if(flag) coutendl; coutendl; coutendl;4.2运行结果(1)程序运行刚开始会出现一个“设置地雷数(10-30,不足10按10算,超过30按30算)n=”的界面,便可输入用户想要选择的数值,回车然后进入如(图4-1)的界面。 设置雷数 图4-1(2)接着根据提示输出X,Y,的坐标以及打开的操作,如(图4-2)界面 。 打开操作 图4-2(3)继续根据提示输入x,y的坐标以及标记的操作,标记后将出现图案,如(图4-3)。标记操作 图4-3(4)重复步骤(2)或(3),直至游戏结束。游戏失败 图4-4参考文献1郑莉,董渊,何江舟.C+语言程序设计M.第4版.清华大学出版.2010.72Stanley B.Lippman,Jose LaJoie,Barbara E.Moo.C+ Primer(中文版) M.第四版.人民邮电出版社.20063 Walter Savitch. C+面向对象程序设计基础、数据结构与编程思想M.第4版.清华大学出版社.20034钱能.C+程序设计教程M.第2版.清华大学出版社.20055郑莉.C+语言程序设计案例教程M.第1版.清华大学出版社.20056韦朴,陈泰生. Visual C+通用范例开发金典M.电子工业出版社.20087詹发荣.C+语言程序设计M. 中国铁道工业出版社.2006 8尹季昆.C+语言程序设计M. 科学出版社.2005ag an employment tribunal clai Emloyment tribunals sort out disagreements between employers and employees. You may need to make a claim to an employment tribunal if: you dont agree with the disciplinary action your employer has taken against you your employer dismisses you and you think that you have been dismissed unfairly. For more informu, take advice from one of the organisations listed underFur ther help. Employment tribunals are less formal than some other courts, but it is still a legal process and you will need to give evidence under an oath or affirmation. Most people find making a claim to an employment tribunal challenging. If you are thinking about making a claim to an employment tribunal, you should get help straight away from one of the organisations listed underFurther help. ation about dismissal and unfair dismissal, seeDismissal. You can make a claim to an employment tribunal, even if you haventappealedagainst the disciplinary action your employer has taken against you. However, if you win your case, the tribunal may reduce any compensation awarded to you as a result of your failure to appeal. Remember that in most cases you must make an application to an employment tribunal within three months of the date when the event you are complaining about happened. If your application is received after this time limit, the tribunal will not usually accept i. If you are worried about how the time limits apply to you If you are being represented by a solicitor at the tribunal, they may ask you to sign an agreement where you pay their fee out of your compensation if you win the case. This is known as adamages-based agreement. In England and Wales, your solicitor cant charge you more than 35% of your compensationif you win the case. You are clear about the terms of the agreement. It might be best to get advice from an experienced adviser, for example, at a Citizens Advice Bureau. To find your nearest CAB, including those that give advice by e-mail, click onnearest CAB. For more information about making a claim to an employment tribunal, seeEmployment tribunals. The (lack of) air up there Watch m Cay man Islands-based Webb, the head of Fifas anti-racism taskforce, is in London for the Football Associations 150th anniversary celebrations and will attend Citys Premier League match at Chelsea on Sunday. I am going to be at the match tomorrow and I have asked to meet Ya ya Toure, he told BBC Sport. For me its about how he felt and I would like to speak to him first to find out what his experience was. Uefa hasopened disciplinary proceedings against CSKAfor the racist behaviour of their fans duringCitys 2-1 win. Michel Platini, president of European footballs governing body, has also ordered an immediate investigation into the referees actions. CSKA said they were surprised and disappointed by Toures complaint. In a statement the Russian side added: We found no racist insults from fans of CSKA. Age has reached the end of the beginning of a word. May be guilty in his seems to passing a lot of different life became the appearance of the same day; May be back in the past, to oneself the paranoid weird belief disillusionment, these days, my mind has been very messy, in my mind constantly. Always feel oneself should go to do something, or write something. Twenty years of life trajectory deeply shallow, suddenly feel something, do it.一字开头的年龄已经到了尾声。或许是愧疚于自己似乎把转瞬即逝的很多个不同的日子过成了同一天的样子;或许是追溯过去,对自己那些近乎偏执的怪异信念的醒悟,这些天以来,思绪一直很凌乱,在脑海中不断纠缠。总觉得自己似乎应该去做点什么,或者写点什么。二十年的人生轨迹深深浅浅,突然就感觉到有些事情,非做不可了。The end of our life, and can meet many things really do?而穷尽我们的一生,又能遇到多少事情是真正地非做不可? During my childhood, think lucky money and new clothes are necessary for New Year, but as the advance of the age, will be more and more found that those things are optional; Junior high school, thought to have a crush on just means that the real growth, but over the past three years later, his writing of alumni in peace, suddenly found that isnt really grow up, it seems is not so important; Then in high school, think dont want to give vent to out your inner voice can be in the high school children of the feelings in a period, but was eventually infarction when graduation party in the throat, later again stood on the pitch he has sweat profusely, looked at his thrown a basketball hoops, suddenly found himself has already cant remember his appearance. Baumgartner the disappointing news: Mission aborted. r plays an important role in this mission. Starting at the ground, conditions have to be very calm - winds less than 2 mph, with no precipitation or humidity and limited cloud cover. The balloon, with capsule attached, will move through the lower level of the atmosphere (the troposphere) where our day-to-day weather lives. It will climb higher than the tip of Mount Everest (5.5 miles/8.85 kilometers), drifting even higher than the cruising altitude of commercial airliners (5.6 miles/9.17 kilometers) and into the stratosphere. As he crosses the boundary layer (called the tropopause),e can expect a lot of turbulence. We often close ourselves off when traumatic events happen in our lives; instead of letting the world soften us, we let it drive us deeper into ourselves. We try to deflect the hurt and pain by pretending it doesnt exist, but although we can try this all we want, in the end, we cant hide from ourselves. We need to learn to open our hearts to the potentials of life and let the world soften us.生活发生不幸时,我们常常会关上心门;世界不仅没能慰藉我们,反倒使我们更加消沉。我们假装一切仿佛都不曾发生,以此试图忘却伤痛,可就算隐藏得再好,最终也还是骗不了自己。既然如此,何不尝试打开心门,拥抱生活中的各种可能,让世界感化我们呢? Whenever we start to let our fears and seriousness get the best of us, we should take a step back and re-evaluate our behavior. The items listed below are six ways you can open your heart more fully and completely.当恐惧与焦虑来袭时,我们应该退后一步,重新反思自己的言行。下面六个方法有助于你更完满透彻地敞开心扉。Whenever a painful situation arises in your life, try to embrace it
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 汽轮机模拟与仿真技术考核试卷
- 起重机械产业链延伸与价值链提升考核试卷
- 镍氢电池在太阳能光伏储能中的应用考核试卷
- 西药批发企业运营管理效率改进考核试卷
- 小学生冬季疾病预防
- Mal-Cyclohexyl-PEG3-Biotin-生命科学试剂-MCE
- 邮轮旅游市场旅游住宿报告:2025年舱位类型与旅客选择分析
- 2025新媒体新闻传播真实性与公信力现状与趋势报告
- 2025年康复医疗器械市场前景预测:需求演变与产品创新技术分析报告
- 汽车行业供应链风险管理与供应链风险管理标准化研究
- 柜员外汇考试试题及答案
- 二年级下册数学-认识钟表练习题合集
- 11《大家排好队》(教学设计)2023-2024学年统编版道德与法治二年级上册
- 新供应商引入基本门槛标准
- 房车租赁合同协议
- 变电站事故安全教育培训
- 婚礼司仪主持培训
- 新工科背景下大学化学课程的创新与实践探索
- 万科集团财务管理制度手册2024
- 光学工程师试题及答案
- 基于AI的年度营销策略创新
评论
0/150
提交评论