扫雷游戏课程设计报告.docx

扫雷游戏课程设计报告.docx

ID:51014214

大小:364.13 KB

页数:16页

时间:2020-03-17

扫雷游戏课程设计报告.docx_第1页
扫雷游戏课程设计报告.docx_第2页
扫雷游戏课程设计报告.docx_第3页
扫雷游戏课程设计报告.docx_第4页
扫雷游戏课程设计报告.docx_第5页
资源描述:

《扫雷游戏课程设计报告.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、(一)需求分析题目:32、实现一个N*M的扫雷游戏设计要求:能够实现一个N*M的扫雷游戏a、能够打开一个方格(由于做的是静态显示,故在控制台上方格用‘—’代替),已打开的方格不能关闭b、能够标记一个方格,标记方格的含义是对该方格有雷的预测(并不表示真的一定有雷)c、能够给出游戏结果:输、赢d、N和M可由玩家自己设置系统功能需求分析:一个数字和一个雷(boom)。你可以打开(open)一个方格,如果你打开的是一个boom,那么就失败;否则就会打开一个数字,该数字是位于[0,8]的一个整数,该数字表示其所有邻居方格

2、所包含的雷数,应用该信息可以帮助你扫雷。点击到了某区域发现其周围没有雷,那么显而易见应该点开周围的区域,拓展空白区域(二)概要设计由于知识储备不足,VC中的MFC应用程序又过于复杂,故退而求其次,不再采用动态显示和界面图形化,采用静态显示来实现扫雷游戏中的主要功能。用键盘上的‘1’键代替鼠标左击,即打开一个方格查看其属性,已打开的方格不能在关闭;用键盘上的‘2’键代替鼠标右击,即标记一个方格,标记方格的含义是对该方格有雷的预测(并不表示真的一定有雷)用键盘上的‘↑’‘↓’‘←’‘→’四个键来实现光标在控制台上的

3、自由移动,相当于用鼠标实现光标在图形界面的移动游戏区域的高度与宽度及总雷数可由玩家自己设定应题目要求设计了一个基类:Base和一个继承类:Game。基类Base主要实现一些基本功能:游戏结束时输出游戏的结果:输赢;返回控制台上光标的位置返回按下键时所对应的按键控制符基类Base:类名成员类别类型成员名描述Base方法staticintOutput(constchar*)在当前位置上输出一串字符staticintGotoXY(int,int);取得控制台上光标的坐标位置并返回staticintGetKey();等

4、待按下键,并返回所对应的按键控制符继承类Game是本程序的主要内容,也是实现扫雷游戏的关键部分。主要实现的功能:初始化图形界面,把游戏区域在控制台上显示出来;利用随机函数进行随机布雷,以保证玩家每次玩游戏时雷的分布位置均不同;得到一个坐标位置周围的雷数,并把数值返回;在一个坐标点上(x,y)点击,在该位置上显示其周围的雷数或拓展空白区域或失败;如果一个坐标点的周围没有雷,则拓展空白区域,并递归拓展;其中saolei()函数是类Game里的关键函数体,用来判断玩家按下了哪个键,并作出相应反应(上下左右四个方向的移

5、动,打开一个方格,标记一个方格),并判断游戏的输与赢继承类Game:类名成员类别类型成员名描述Game属性intcurX,curY光标位置intpoolWidth,poolHeight游戏区域的高度与宽度intpool[GAME_MAX_HEIGHT+1][GAME_MAX_WIDTH+1]用二维数组来存储雷的相关属性conststaticintGMARK_BOOM;GMARK_EMPTYGMARK_MARK;雷的属性:雷(*),空,标记(#)方法intinitpool(int,int,int)初始布雷IntM

6、oveCursor()移动光标inthuatu(int)在控制台上把扫雷区域显示出来inttryopen(int,int)在一个坐标点上(x,y)点击,在该位置上显示其周围的雷数或拓展空白区域或失败intshownum(int,int)得到一个坐标位置周围的雷数,并把数值返回inttuozhan(int,int)如果一个坐标点的周围没有雷,则拓展空白区域,并递归拓展intsaolei()扫雷并判断输赢(三)详细设计核心算法:(1)布雷函数:初始化时把数组里的值全部置为0,然后利用srand(),rand()随机

7、机制产生随机数,分别对列和行取模,便产生了雷的随机位置。但是布雷前,先要判断此随机位置是否已经布上了雷。intGame::initpool(intwidth,intheight,intnum){poolWidth=width;poolHeight=height;if(num<0

8、

9、num>=width*height

10、

11、width>GAME_MAX_HEIGHT

12、

13、width<=0

14、

15、height<=0

16、

17、height>GAME_MAX_HEIGHT)return1;//初始是把游戏区域也即是数组里的值全都置为0

18、for(inty=0;y<=height+1;y++){for(intx=0;x<=width+1;x++){pool[y][x]=0;}}//利用伪随机函数进行随机布雷,以保证每次点击游戏时雷的分布位置不同srand(time(NULL));while(num!=0){intx=rand()%width+1;inty=rand()%height+1;if(pool[y][x]==0)

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。