扫雷小程序(C语言)
大家还记得学校上机课无聊时玩过的扫雷吗?扫雷是我们这些90年代的青年们玩过最经典的小游戏了吧?大家有木有常对他的工作原理疑惑,那么今天我们来用我们学过的C语言实现一个简单的扫雷小游戏。
还记的扫雷的规则吗?
当你第一次点击时,永远不会踩到雷(小伙伴们有木有发现呢)
以后点击的时候,如果以点击位置为中心的3*3的格子里有雷,则显示3*3格子里的雷数;
雷盘(实在想不出点击的n*n的格子叫啥,就叫雷盘吧 /手动滑稽 )
若没有雷则会递归的帮你把周围的也全部展开,如果设置的雷比较少而雷盘比较大时,是不是差不多会给你把大部分的都展开呢?
那么,如何实现呢?
1、雷盘的设计(分析)
比如我们要做一个雷盘大小为10 * 10的一个扫雷游戏,理论上我们需要一个10 * 10 的数组,那么问题来了,那么边缘的雷数怎么算呢?所以我们需要一个比雷盘大小要大2的一个数组,比如10*10的扫雷就需要一个12*12的数组;这样一来,本来数组列是从 0~11 但是我们只用 1~10,这样用户在输入的时候好输入,我们在计算边缘雷数的时候也非常好判断,一举两得。大致的结构是这样的。
但是就仅仅一个雷盘够吗?答案是当然不够的,总不可能把雷盘直接显示给用户,这里我们还需要一个显示数组,大小和雷盘数组一样大。
我们先定义出棋盘大小和雷的个数
#define ROW 12
#define COL 12
#define MINE_NUM 20
2、主函数的实现
直接让主函数调用实现扫雷的函数 Mine();
#include "mine.h"
void menu(){
printf("******************************\n");
printf("***** 1、扫雷 *****\n");
printf("***** 2、退出 *****\n");
printf("******************************\n");
printf("请输入选项<1/2>:");
}
int main(){
int select = 0;
menu();
scanf("%d", &select);
switch (select){
case 1: Mine();
break;
case 2:exit(0);
break;
default:
break;
}
system("pause");
return 0;