扫雷程序的实现

扫雷程序的实现

ID:36630089

大小:368.47 KB

页数:8页

时间:2019-05-13

扫雷程序的实现_第1页
扫雷程序的实现_第2页
扫雷程序的实现_第3页
扫雷程序的实现_第4页
扫雷程序的实现_第5页
资源描述:

《扫雷程序的实现》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、扫雷程序的实现2014年12月22日15:27一直说写个几百行的小项目,于是我写了一个控制台的扫雷,没有想到精简完了代码才200行左右,不过考虑到这是我精简过后的,浓缩才是精华嘛,我就发出来大家一起学习啦,看到程序跑起来能玩,感觉还是蛮有成就感的~哈哈扫雷应该属于一款大众游戏,从我初中使用计算机开始,它就被集成到了windows系统中,虽然他是这么经典,我还是要介绍一下他的玩法,然后再考虑在控制台中怎么实现它。(扫雷界面如图1)1游戏的主界面,是一个一个小方格,在小方格上单击左键,可以翻开小方格看看后面

2、有什么。2在这些小方格的背后隐藏着雷,如果不幸点中了雷,那么就GameOver了。2如果点中的不是一个雷,那么就是一块空地,这个时候会出现两种情况:1)用鼠标点中的空地周围八个点内有雷,那么就显示雷的个数分区游戏的第1页2)用鼠标点中的空地周围没有雷,这个时候就将周围的空地全部显示出来,遇到该显示数字的空地,就将数字显示出来。(仔细观察你会发现,数字会将空地围起来,这是一句废话,但是也值得想一想这是为什么)3在小方格上,点击鼠标的右键,可以将一个空地标记为雷,当然这个功能只是为了方便你记忆你之前确定是雷

3、的地方。(还有左右键都点,和点击右键出现?标记,这里就不谈啦)4当空地上剩余的格子数和雷的个数一样多,那么这个时候就应该算是胜利啦。OK~游戏流程说完了,这个时候该谈谈如何实现了。1首先需要一张地图,一般情况下我们都可以用一个二维数组表示一个地图,每一个元素代表着扫雷中的一个小方格。相应元素存储0,那么地图上的这个位置就是空地,相应元素存储1,那么就代表这个位置就一颗雷。2在控制台上依照二维数组长度和宽度,打印相应的小方块。3然后就用鼠标点击那些小方块,对于控制台来讲,在黑框框的区域中是有坐标的,可以使

4、用一些函数捕获到你点击了屏幕的哪一个坐标。4对于控制台来说,打印一个字符,有的字符横向占一个位置比如普通的字母数字,有的字符横向占两个位置比如一些图形字符:①②③■◆等等,这点在控制台编程的时候要注意。5当点击屏幕的时候,获取到点击的坐标后,去二维数组中查看相应的位置是雷还是空地,从而做相应的处理。1)假如点击到了雷,那么就控制游戏结束2)假如点击到了空地有两种情况1)点击的空地周围有雷,那么就将雷的个数显示出来2)假如点击的空地周围没有雷,那么就使用递归的方法去探测周围的点,探测出与其相连的所有周围有

5、雷的点。这个是我实现的效果:分区游戏的第2页下面就是代码啦://saolei.cpp:定义控制台应用程序的入口点。//#include"stdafx.h"#include#include#include#defineBoom10inta[10][10]={0};COORDTempPos[100]={0};intnSign=0;/************************************函数名:WriteWchar函数作用:在控制台相

6、应的坐标上显示一串字符返回值:void参数:intx横坐标参数:inty纵坐标参数:charszString[]要显示的字符串说明:************************************/voidWriteWchar(intx,inty,charszString[]){HANDLEhOut=GetStdHandle(STD_OUTPUT_HANDLE);COORDpos={x*2,y};SetConsoleCursorPosition(hOut,pos);printf("%s",szS

7、tring);}/************************************函数名:DrawNumber函数作用:在相应的坐标上,根据传入的数字,打印相应的数字字符返回值:void参数:COORDpos要打印的位置参数:intnNumber要打印的数字说明:************************************/voidDrawNumber(COORDpos,intnNumber){switch(nNumber){case1:WriteWchar(pos.X,pos.Y,

8、"①");break;case2:WriteWchar(pos.X,pos.Y,"②");分区游戏的第3页WriteWchar(pos.X,pos.Y,"②");break;case3:WriteWchar(pos.X,pos.Y,"③");break;case4:WriteWchar(pos.X,pos.Y,"④");break;case5:WriteWchar(pos.X,pos.Y,"⑤");break;case6:WriteWcha

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

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

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