扫雷小游戏详解

个人主页:点我进入主页

专栏分类:C语言初阶      C语言程序设计————KTV       C语言小游戏     C语言进阶

欢迎大家点赞,评论,收藏。

一起努力,一起奔赴大厂。

目录

1.菜单函数

2.初始化数组

3.打印棋盘

4.埋雷

5.扫雷


        今天我主要讲的是关于扫雷小游戏的内容,我将代码分为三个文件来写game.h放头文件和函数声明,game.c放函数的定义,test.c放主函数。想要写出扫雷小游戏需要学会二维数组数组的内容。想要全部的代码可以点gitee---扫雷小程序获取。

1.菜单函数

void menu()
{
	printf("********************\n");
	printf("****   1.play   ****\n");
	printf("****   0.exit   ****\n");
	printf("********************\n");
}

扫雷小游戏详解_第1张图片

这就是简单的打印,这里不做具体解释。

2.初始化数组

void inboard(char arr[ROWS][COLS], int row, int col, char sets)
{
	int i, j;
	for (i = 0; i <= row; i++)
	{
		for (j = 0; j <= col; j++)
			arr[i][j] = sets;
	}
}

        由于扫雷需要用到两个二维数组,一个是为了让用户看到的,一个是为了埋雷的,我们想让用户看到的是*,由于两个数组初始化的过程相似,故我们想到可以使用同一个函数,但是埋雷我们用到的会是1 ,0两个数字,而*却是字符类型,故我们可以用字符类型的‘1’,‘0’代替,由于这是两个数组,初始化的内容不同,但都是字符类型,所以我们可以传入参数sets来代替。

3.打印棋盘

void pboard(char arr[ROWS][COLS], int row, int col)
{
	int i, j;
	for (i = 0; i <= row; i++)
		printf("%d ", i);
	printf("\n");
	for (i = 1; i <= row; i++)
	{
		printf("%d ", i);
		for (j = 1; j <= col; j++)
		{
			printf("%c ", arr[i][j]);
		}
		printf("\n");
	}
}

        这个函数主要用于打印用户看到的棋盘也就是打印******,我们先在第一行打印0 ,1,2,3,4...... 展示行数,最左边打印1,2,3,4.....展示列数,这也方便用户使用时给点坐标,此函数还可以帮助我们确定代码设计的是否争取,只需要改变一下传入的数组内容们就可以看到。

扫雷小游戏详解_第2张图片

4.埋雷

void flagboard(char arr[ROWS][COLS], int rol, int col)
{
	int x, y;
	int count = 0;
	do
	{
		x = rand() % 9 +1;
		y = rand() % 9 + 1;
		if (arr[x][y] == '0')
		{
			count++;
			arr[x][y] = '1';
		}
	} while (count < flag);
}

     扫雷小游戏详解_第3张图片  

         这里需要用到我们的随机数rand()的头文件时time.h,而随机数还需要我们在主函数中设立一个种子srand((unsigned int )time(NULL)),这个种子的头文件stdlinb.h,在埋雷的时候我们需要注意需要埋在没有雷的地方,因此需要我们进行一个判断,只有成功埋上雷才进行计数,直到埋够雷。

5.扫雷

void findboard(char arr[ROWS][COLS], char brr[ROWS][COLS], int row, int col)
{
	int x, y;
	int counts = ROW*COL-flag;
	do
	{
		printf("请输入你选择的坐标:");
		scanf("%d%d", &x, &y);
		if ((x >= 1 && x <= 9) && (y >= 1 && y <= 9))
		{
			if (arr[x][y] != '1'&&brr[x][y]=='*')
			{
				brr[x][y] = arr[x - 1][y] + arr[x - 1][y - 1] + arr[x - 1][y + 1] + arr[x][y - 1] + arr[x][y + 1] + arr[x + 1][y - 1] + arr[x + 1][y] + arr[x + 1][y + 1] - 7* '0';
				pboard(brr, ROW, COL);
				counts--;
			}
			else
			{
				printf("这是雷,游戏结束\n");
				break;
			}
		}
		else
		{
			printf("输入格式错误,请重新输入\n");
		}
	} while (counts);
	if(counts==0)
		printf("恭喜你,扫雷完成\n");
}

扫雷小游戏详解_第4张图片  

     扫雷时候需要用户自己输入坐标,当不是雷的时候会在全是*的数组上进行返回值返回附近有几颗雷,其中包含游戏结束,输入格式的正确性。

        到这里我们的扫雷小游戏就已经结束了,向往各位可以学到一些东西,最后希望大家可以一键三连。

你可能感兴趣的:(#,C语言小游戏,c#)