C语言——9*9扫雷

C语言的扫雷游戏可以细分为五个部分,初始化、打印棋盘、放置雷、排查雷、主函数。

 1、创建数组以及前期准备

这是进行初始化前的一个步骤。

在进行一个9*9的扫雷游戏之前,我们需要思考一些问题。

1、如何建立一个9*9的棋盘。

2、若要建立一个9*9的扫雷游戏,那么将如何区分雷和非雷地区。

3、扫雷游戏原理如何表达。

扫雷游戏的原理:若选中了一块格子,格子上摆放的是雷,那么会被炸死,以至于游戏结束。

但若并不是雷,那么则会观察这块格子周边的八个格子,并且统计和显示出周边八个格子雷的数量。

而我们该如何解决这些问题?

1、我们将使用二维数组,利用二维数组的矩阵特性,打印出一个9*9的棋盘以供游戏。

2、我们可以使用‘1’和‘0’ 来解决雷和非雷地区的问题,原理是‘1’- ‘0’=1 这样以便于后面统计周边八个格子的雷的数量。

3、选中格子的问题,我们可以采取坐标的原理,以及使用rand函数的方法进行随机埋伏雷,而确认是否是雷,我们可以取坐标号,放入数组中进行判断,是否是雷。

4、由于数组是9*9的数组,但是当我们选中角落时,我们无法判定和统计周边八个格子中雷的个数,因为我们遇到了数组的越界,于是乎,我们选则了将棋盘扩大一圈,且为了显示出9*9的棋盘,我们只打印中间9*9的部分。

5、我们在完扫雷游戏的时候,是看不见雷的放置位置,所以,为了体现玩家的游戏效果,我们将准备两个棋盘,一个是专门放置雷的棋盘,而另一个则是专门放置排查出雷的信息的棋盘。

2、数据的定义

 2、文件的说明

main.c 进行主函数部分和调用部分以及游戏的逻辑部分

play.c进行的是函数的实现部分

game.h放置的是函数声明

4、初始化

 

 我们使用自定义函数IB进行一个二维数组的函数调用,而为了函数的独立性和灵活性,我们采取了#define,对二维数组的行和列进行重新定义,将它们变成了ROWS和COLS。

且,为了方便,我们将两种棋盘用同一个自定义函数进行调用。

5、 打印棋盘

 由于我们需要打印的部分只有9*9,而且,打印出的棋盘是为了展示给玩家看的,所以含有雷的部分,我们将进行隐藏,且为了棋盘的美观,我们将在棋盘的左边和上边打上序号,以便接下来的游玩操作。

 6、布置雷

对于布置雷,首先我们需要在9*9的范围内进行雷的布置,其次雷的布置是随机的,所以我们采用了rand函数和srand函数的协助,采取rand()%+1的方法,在9*9的范围内将雷布下。

而雷,对于玩家而言是看不见的,所以需要在mine棋盘上进行。

 7、排雷

 在排雷之前,我们先要知道,一个未埋藏雷的格子,它周边八个格子的坐标是什么?

假设,这个格子的坐标是(x,y)

那么它周边的八个格子则如下图所示:

且根据 ‘1’ - ‘0’ =1的原理 

我们可以先写出以下函数:

 随后,我们在进行分析。

一个9*9 八十一个格子,有十颗雷,想要完成游戏,那么我们需要进行71次的排雷,而在71次的排雷过程中,若选中了埋藏有雷的格子,则会游戏结束,且根据扫雷游戏的特性,不论是赢了游戏,抑或是被雷炸死,我们都会把所有的雷展示给玩家看,而若是没有选中雷,我们则需要继续进行游戏,且排雷的次数将会减少,直到排满七十一次雷,直到游戏结束。

void FM(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col)
{
	int win = 0;
	int x = 0;
	int y = 0;
	while(win < row* col - EY)
	{
		printf("请输入坐标;>");
		scanf("%d %d", &x, &y);
		if ((x >= 1 && x <= row) && (y >= 1 && y <= col))
		{
			if (mine[x][y] == '1')
			{
				printf("抱歉你被炸死了!\n");
				DP(mine,ROW,COL);
				break;
			}
			else
			{
				int ret = GA(mine,x,y);
				show[x][y] = ret + '0';
				DP(show, ROW, COL);
				win++;

			}
		}
		else 
		{
			printf("坐标错误!\n");
		}
		if (win == row * col - EY)
		{
			printf("恭喜你排雷成功!\n");
			DP(mine, ROW, COL);
		}
	}
}

8、主函数

动物目标检测数据集 一、基础信息 数据集名称:动物目标检测数据集 图片数量: - 训练集:9,134张图片 - 验证集:1,529张图片 - 测试集:1,519张图片 总计:12,182张图片 分类类别: Bear(熊)、Cat(猫)、Cattle(牛)、Chicken(鸡)、Deer(鹿)、Dog(狗)、Elephant(大象)、Horse(马)、Monkey(猴子)、Sheep(绵羊) 标注格式: YOLO格式,包含归一化坐标的边界框和数字编码类别标签,支持目标检测模型开发。 数据特性: 涵盖俯拍视角、地面视角等多角度动物影像,适用于复杂环境下的动物识别需求。 二、适用场景 农业智能监测: 支持畜牧管理系统开发,自动识别牲畜种类并统计数量,提升养殖场管理效率。 野生动物保护: 应用于自然保护区监控系统,实时检测特定动物物种,辅助生态研究和盗猎预警。 智能养殖设备: 为自动饲喂系统、健康监测设备等提供视觉识别能力,实现精准个体识别。 教育研究工具: 适用于动物行为学研究和计算机视觉教学,提供标准化的多物种检测数据集。 遥感图像分析: 支持航拍图像中的动物种群分布分析,适用于生态调查和栖息地研究。 三、数据集优势 多物种覆盖: 包含10类常见经济动物和野生动物,覆盖陆生哺乳动物与家禽类别,满足跨场景需求。 高密度标注: 支持单图多目标检测,部分样本包含重叠目标标注,模拟真实场景下的复杂检测需求。 数据平衡性: 经分层抽样保证各类别均衡分布,避免模型训练时的类别偏差问题。 工业级适用性: 标注数据兼容YOLO系列模型框架,支持快速迁移学习和生产环境部署。 场景多样性: 包含白天/夜间、近距离/远距离、单体/群体等多种拍摄条件,增强模型鲁棒性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值