c语言扫雷

本文介绍了如何使用C语言实现扫雷游戏,包括创建棋盘、初始化、生成雷、展示棋盘、玩家操作(标记和掀开)等步骤。在实现过程中,作者考虑了边界处理、雷的数量统计、玩家标记的胜利条件以及自动掀开周围无雷格子的递归逻辑。文章还分享了完整的代码结构,适合初学者参考学习。
摘要由CSDN通过智能技术生成

1,介绍

 如图,扫雷一开始会给我们一块充满方块的方形棋盘,里面埋了些雷。

玩家可以通过点击鼠标左键掀开棋盘的格子。若如果这个格子中没有雷,这个格子被掀开后会如图显示周围八格得地雷之和。

如图,便说明这个格子周围存在一个雷。

若这个格子中有雷,便会爆炸,判定玩家输掉游戏。

2,基本流程

1.创建棋盘

2.初始化棋盘

3.打印棋盘

4.让用户掀格子,或标记

5.判断输赢

3,实现

1.创建棋盘

创建两个二维数组

一个用来存放雷的位置

另一个用来展示棋盘上用户掀开后的数字及用户的标记

这里我考虑到以后需要计算一格中周围八格的地雷数量之和,而边界的一圈周围没有八格,若想避免越界就需要牺牲时间进行判断。所以我选择让棋盘数组的行列=棋盘真实行列+2然后在初始化时将雷盘四周行列初始化为无雷状态,并且在设置雷的时候避开四周行列,一次来规避届时的越界判断需求。

	#define RROW 9
    #define RCOL 9
    #define ROW RROW +2
    #define COL RCOL +2
    char ShowBoard[ROW][COL] = { 0 };
	char MineBoard[ROW][COL] = { 0 };

2.初始化棋盘

void InitBoard(char Board[ROW][COL],int row,int col,char inition)
{
	int i, j;
	for (i = 0; i < row; i++)
	{
		for (j = 0; j < col; j++)
		{
			Board[i][j] = inition;
		}
	}
}
	DisplayBoard(ShowBoard, RROW, RCOL);
	DisplayBoard(MineBoard, RROW, RCOL);

 3,生成雷

定义雷的数量,方便后期调试修改

#define MineNum 10
//雷的数量

4,展示棋盘

void DisplayBoard(char Board[ROW][COL], int row, int col)
{
	int i, j;
	printf("**********扫雷**********\n");
	for (j = 0; j <= col; j++)
	{
		printf(" %d ",j);
	}
	printf("\n");
	for (i = 1; i < row; i++)
	{

		printf("\n\n %d ",i);
		for (j = 1; j < col; j++)
		{
			printf(" %c ", Board[i][j]);
		}
	}
	printf("\n");
}
	DisplayBoard(ShowBoard, RROW, RCOL);
	DisplayBoard(MineBoard, RROW, RCOL);

5,玩家操作部分

普通扫雷中分为左右键让玩家选择标记或掀棋盘,这里用让玩家输入数字的方式进行代替。

printf("请选择您是要标记还是要排雷\n1.排雷\n2.标记或取消标记雷的位置\n");
		int input;
		scanf("%d", &input);
		switch (input)
		{
		case 1:
                    //掀开棋盘
                    break;
        case 2:
                    //标记
                    break;
         }

1)标记

当玩家标记满所有雷且无雷处未被标记时,游戏胜利。

为了便于在雷被标记后统计正确的被标记次数ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值