C++ 扫雷程序输出报告

C++ 扫雷程序输出报告

ID:45096869

大小:133.01 KB

页数:14页

时间:2019-11-09

C++ 扫雷程序输出报告_第1页
C++ 扫雷程序输出报告_第2页
C++ 扫雷程序输出报告_第3页
C++ 扫雷程序输出报告_第4页
C++ 扫雷程序输出报告_第5页
资源描述:

《C++ 扫雷程序输出报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、程序输出报告程序设计时使用环境----Win10VS20151程序设计思路模块化设计一个扫雷游戏。要实现埋雷,计算一个格子周围雷数,打开雷位,显示雷区几个功能.需要以下几个主要数据,判断雷位的雷是否存在,雷位周围的雷数,是否已经被打开,游戏是否结束,雷区大小,布雷量(本程序中非必须保存于类中数据)2功能的具体实现为了方便计算和理解先分出类classOneMine{OneMine();//雷位构造函数voidInitOneMine();//初始化一个雷位boolIsMine;//是否是雷boolOpened;//是否已经打开shortA

2、roundMines;//周边的雷数friendclassOperation;friendclassMines;};classMines//创建雷区类{boolGameOver;//扫雷是否结束shortRows;//雷区的行数shortCols;//雷区的列数shortMinesCount;//布设雷的数量OneMine*pos[50][50];//存放雷对象的数组指针public:Mines();//雷区类构造函数~Mines();//析构函数friendclassOperation;};classOperation:public

3、Mines//操作类{public:voidReInitMine(shortrow,shortcol,shortmines);//重新初始化雷区voidLayOneMines();//布置一个地雷voidCalculateAroundMine(intx,inty);//计算每个雷周边的雷数voidShowOneMine(intx,inty);//触雷时的执行函数voidShowMine();//显示未触雷时的雷区情况voidShowAllMine();//触雷时的触发函数voidOpenOneMine(intx,inty);//打开一

4、个雷位};实现埋雷//布一个地雷voidOperation::LayOneMines()//布一个地雷{intm,n;do{m=rand()%Cols+1;n=rand()%Rows+1;//随机产生雷位坐标}while(pos[m][n]->IsMine);pos[m][n]->IsMine=true;}PS:rand()函数的输出是依赖于默认输入数据的,需要使用windows.h中的GetTickCount()函数来初始化实现计算格子周围雷数voidOperation::CalculateAroundMine(intx,inty)

5、//计算雷位周边雷数{intmines=0;for(inti=x-1;i<=x+1;i++)for(intj=y-1;j<=y+1;j++)mines=mines+pos[i][j]->IsMine;//利用IsMine数据的特性计算周围雷数pos[x][y]->AroundMines=mines;}实现打开雷位voidOperation::OpenOneMine(intx,inty)//打开一个雷位{if(x>Cols

6、

7、x<1

8、

9、y>Rows

10、

11、y<1)return;//如果点的位置不在雷区,则返回if(GameOver)retu

12、rn;//如果扫雷结束,则返回if(pos[x][y]->Opened)return;//如果该位置已经打开,则返回if(pos[x][y]->IsMine)//如果该雷位是地雷{ShowAllMine();//找出所有的地雷,并显示出来cout<<"BOOM!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!";GameOver=true;return;}else//如果该雷位不是地雷{pos[x][y]->Opened=true;if(pos[x][y]->AroundMines==0)//如果该雷位周边的雷数为零,打

13、开周边的雷位,采用递归调用的方法{if(x!=1)OpenOneMine(x-1,y);//打开左边if(x!=Cols)OpenOneMine(x+1,y);//打开右边if(y!=1)OpenOneMine(x,y-1);//打开上边if(y!=Rows)OpenOneMine(x,y+1);//打开下边if(x!=1&&y!=1)OpenOneMine(x-1,y-1);//打开左上if(x!=1&&y!=Rows)OpenOneMine(x-1,y+1);//打开左下if(x!=Cols&&y!=1)OpenOneMine(x

14、+1,y-1);//打开右上if(x!=Cols&&y!=Rows)OpenOneMine(x+1,y+1);//打开右下}}}}实现输出未触雷的雷区voidOperation::ShowMine()//显示雷区{int

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

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

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