扫雷(C语言实现简易版)

扫雷

一、问题前述。
二、基本流程。
三、具体步骤。
1.创建菜单。
2.创建地图。
3.初始化地图。
4.打印地图。
5.玩家输入坐标进行翻开。
6.判断是否踩到地雷。
7.更新地图。
8.判定胜负。
四、实现代码。

一、问题前述。

手机偶遇许久未见的扫雷,就用C语言实现一下简易版扫雷。

二、基本流程。

1.创建菜单界面。
2.创建地图 (两个地图,一个玩家可见地图,一个地雷分布图)。
3.初始化地图(随机分布地雷在地图上)。
4.打印地图。
5.程序读取玩家输入的要翻开位置的坐标,并校验。
6.如果不是地雷,统计当前位置周围雷的个数, 并显示到地图上.。
7.判定游戏是否胜利。

三、具体步骤。

1.创建菜单。

int menu() {
   
	printf("················\n");
	printf("················\n");
	printf("·····1.开始游戏······\n");
	printf("·····0.退出游戏······\n");
	printf("················\n");
	printf("················\n");
	int choice = 0;
	printf("请选择\n");
	scanf("%d", &choice);
	return choice;
}

2.创建地图。

我们需要两张地图,所以需要创建两个二维数组。
第一个二维数组,表示玩家看到的地图。(show)
第二个二维数组,表示当前位置是不是地雷(1表示是地雷,0表示不是地雷)。(mine)

此处使用宏定义:
目的是
1.推高代码可读性,后续代码中遇到9,方便理解含义。
2.提高扩展性,如果将来要修改棋盘尺寸,代码修改会很方便。

#define MAX_ROW 9
#define MAX_COL 9
char show[MAX_ROW][MAX_COL] = {
    0 };
	char mine[MAX_ROW][MAX_COL] = {
    0 };

3.初始化地图。

用 ‘*’ 表示未翻开的地方。
show刚开始全是 * 。
mine由0,1组成。0表示此处没地雷,1表示此处是地雷。
电脑随机生成地雷。此处地雷使用宏定义,方便更改和表示。

#define MINE_COUNT 10
void init(char show[MAX_ROW][MAX_COL],
	char mine[MAX_ROW][MAX_COL]) {
   
	for (int row = 0; row < MAX_ROW; row++) {
   
		for (int col = 0; col < MAX_COL; col++) {
   
			show[row][col] = '*';
			//初始化为0,之后随机生成1.
			mine[row][col] = '0';
		}
	}
	//使用当前时间作为随机种子。
	srand((unsigned int)time(0));
	int n = MINE_COUNT;
	while (n > 0) {
   
	//生成随机地雷。
		int row = rand() % MAX_ROW;
		int col = rand() % MAX_COL;
		if (mine[row][col] == '1') {
   
			continue;
		}
		mine[row][col] = '1';
		n--;
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值