小工具知识网

当前位置: 首页 > 行业知识 > 扫雷c++分板块详解(附源代码及图片素材)

行业知识

扫雷c++分板块详解(附源代码及图片素材)

2026-10-23 23:24:52 来源:互联网转载

���雷想必是大家小时候玩过的很经典的一款游戏,今天我就将其源代码及图片素材分享出来,供大家学习和参考,如若文案有错落的地方,还望大家指正。

目录

一.准备工作:

二.数组:初始化数表

1.用memset函数先全部初始化为0

2.布置雷

3.统计有多少个雷

4.“加密”处理

三.图像准备

四.数据的接收与处理

1.数据的接收与“打印”

2.数据处理

五.判断输赢与对话框

1.输赢

2.输赢之后的对话框

六.插入背景音乐

七.完整代码分享


一.准备工作:

(1)由于要包含头文件,在c++环境下,检查自己有没有下载EasyX,没有则需到官网进行下载:EasyX Graphics Library for C++

(2)vs环境下,  E0167    "const char *" 类型的实参与 "LPCWSTR" 类型的形参不兼容   , C2664    “MCIERROR mciSendStringW(LPCWSTR,LPWSTR,UINT,HWND)”: 无法将参数 1 从“const char [35]”转换为“LPCWSTR”    等问题可以通过修改项目属性解决。

1.项目-->属性-->配置属性-->高级-->字符集改成使用多字节字符集

2.项目-->属性-->C/C++ --> 语言-->符合模式改成否

(3)扫雷也肯定需要图片贴纸,下面是我为大家提供的图片素材,至于背景音乐,自己准备。   

https://pan.baidu.com/s/1eUqI1q81Etqf75U_eRG4RA 

提取码:ux3c

//先提前定义常量#define ROW 9#define COL 9#define mine 10    //雷的数量#define imgw 40    //图像的尺寸

二.数组:初始化数表

我们想要什么形式的数表?不同的集合的值应对应不同的对象。

首先是雷与不是雷必须区分开。如果-1表示雷,其他数字就必须代表不是雷。

其次,由于游戏规则,我们还要统计格子周围有几个雷,最好0表示周围没有雷,1表示周围有1个雷,2表示有两个……以此类推,方便后续的贴图。我们当然也不是一定需要数表上的数字这么显示,只需要雷的返回值与贴图的下标一一对应即可。

1.用memset函数先全部初始化为0

memset(map, 0, sizeof(int) * ROW * COL);

2.布置雷

我们将雷设置为-1,不是雷设置为0,这样统计雷的个数时,只用在雷的九宫格外围都+1:

srand((unsigned int)time(NULL));  for (int k = 1; k = 0 && map[i][j] = 19 && map[i][j] = 39){putimage(j * imgw, i * imgw, &images[11]);}}}}

四.数据的接收与处理

1.数据的接收与“打印”

接收--》处理---》打印

while (true){ExMessage msg;while (peekmessage(&msg, EM_MOUSE))  //不断接收数据{switch (msg.message)    //处理鼠标传来的数据{case WM_LBUTTONDOWN:case WM_RBUTTONDOWN:mouseMsg(&msg, map);   //具体如何处理break;}}draw(map);     //最后还是要展现出来,才看得见的。}

2.数据处理

draw(),只是描述了什么时候什么样的值贴什么样的图,只是静态的,数据处理,将值的大小发生改变,贴什么样的图随之改变就实现了将这个过程动起来。

操作对应值的变换,进而对应贴图变换,游戏往前推进。

左键:格子打开,19到28的数,跑到-1到8上对应的数上,贴图随之而变,并且还要实现,如果周围也没有雷,则炸开一片的功能。

右键:插小红旗,19到28的数,跑到29到48上,图由格子变成小红旗

void mouseMsg(ExMessage* msg, int map[][COL]){intc =msg->x / imgw;int r =msg->y / imgw;if (msg->message == WM_LBUTTONDOWN){if (map[r][c] >= 19 && map[r][c] message == WM_RBUTTONDOWN){if (map[r][c] >= 19 && map[r][c] = 39){map[r][c] -= 20;//system("cls");//show(map);}}}void boomblank(int map[][COL], int row, int col){if (map[row][col] == 0){for (int i = row - 1; i = 0 && j = 19 && map[i][j] message == WM_LBUTTONDOWN){if (map[r][c] >= 19 && map[r][c] message == WM_RBUTTONDOWN){if (map[r][c] >= 19 && map[r][c] = 39){map[r][c] -= 20;//system("cls");//show(map);}}}void boomblank(int map[][COL], int row, int col){if (map[row][col] == 0){for (int i = row - 1; i = 0 && j = 19 && map[i][j] 

上一篇:桌面服务器怎么安装?

下一篇:Win10缓存清理秘籍,轻松解决堆积问题,一键操作全攻略!