
hi , I am 36.
代码来之不易👍👍👍

创建两个.c 一个.h
1:test.c
            
            
              cs
              
              
            
          
          #include"game.h"
void game()
{
	//创建数组
	char mine[ROWS][COLS] = { 0 };
	char show[ROWS][COLS] = { 0 };
	char temp[ROWS][COLS] = { 0 };
	//初始化数组
	Iniarr(mine, ROWS, COLS, '0');
	Iniarr(show, ROWS, COLS, '*');
	Iniarr(temp, ROWS, COLS, '0');
	//选择模式
	mold(mine, ROW, COL);
	//打印出来
	/*Minebord(mine, ROW, COL);*/
	Showbord(show, ROW, COL);
	//排查
	int flag = 1;
	while (flag)
	{
		/*Minebord(mine, ROW, COL);*/
		flag = Tell__count(mine, show, temp,ROWS, COLS);
		
		Showbord(show, ROW, COL);
		int x = 0;
		//判断胜利
		if (x = Iswin(mine, show, ROW, COL)) break;
		//是否标记
		if (flag) 	
		{
			Isflag(show, ROW, COL);
			Showbord(show, ROW, COL);
		}
		
	}
	if (flag == 0)
	{
		Minebord(mine, ROW, COL);
		printf("你输了\n\n\n");
		Sleep(2000);
	}
	else
	{
		printf("\nCongratulations!!!\a\a\n");
		printf("Congratulations!!!\a\a\n");
		printf("Congratulations!!!\a\a\n");
		printf("Congratulations!!!\a\a\n");
		printf("Congratulations!!!\a\a\n");
		printf("Congratulations!!!\a\a\n");
	}
}
int main()
{
	//设置种子值
	srand((unsigned int)time(NULL));
	Myintub();//介绍
	menu();//菜单
	int n = 0;
	do
	{
		scanf("%d", &n);
		switch (n)
		{
		case 1:game(); printf("请问是否继续?\n"); menu(); break;
		case 0:system("cls"); Myintuo(); break;
		default:system("cls"); printf("该值无效 请重新输入\n"); Sleep(1000); system("cls"); menu(); break;
		}
	} while (n);
	return 0;
}
        2: game.h
            
            
              cs
              
              
            
          
          #pragma once
#define _CRT_SECURE_NO_WARNINGS
#define ROW 9
#define COL 9
#define ROWS ROW + 2
#define COLS COL + 2
#include<stdio.h>
#include<windows.h>
#include<time.h>
void Myintub();
void Myintuo();
void menu();
void Iniarr(char arr[ROWS][COLS], int rows, int cols, int set);
void Minebord(char arr[ROWS][COLS], int row, int col);
void Showbord(char arr[ROWS][COLS], int row, int col);
void mold(char arr[ROWS][COLS], int row, int col);
void Ini__my__count(char arr[ROWS][COLS], int row, int col,int n);
int  Tell__count(char arr[ROWS][COLS], char show[ROWS][COLS], char temp[ROWS][COLS], int rows, int cols);
int  print(char mine[ROWS][COLS], char show[ROWS][COLS], char temp[ROWS][COLS], int rows, int cols,int x, int y);
int Iswin(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col);
void Isflag(char arr[ROWS][COLS], int row, int col);
void Flag1(char arr[ROWS][COLS], int row, int col);
void Flag2(char arr[ROWS][COLS], int row, int col);
void Flag3(char arr[ROWS][COLS], int row, int col);
        3:game.c
            
            
              cs
              
              
            
          
          #include"game.h"
void Myintub()
{
	printf("hi, I am 36\n");
	printf("let us begine \n");
	Sleep(1500);
	system("cls");
}
void Myintuo()
{
	printf("hi, I am 36.\n");
	printf("bye bye \n");
	Sleep(1500);
}
void menu()
{
	printf("**** 扫雷游戏 ****\n");
	printf("******************\n");
	printf("**** 1  play *****\n");
	printf("**** 0  exit *****\n");
	printf("**** 扫雷游戏 ****\n");
	printf("请选择:>");
}
void Iniarr(char arr[ROWS][COLS], int rows, int cols, int set)
{
	int i = 0;
	int j = 0;
	for (i = 0; i < rows; i++)
	{
		for (j = 0; j < cols; j++)
			arr[i][j] = set;
	}
}
void Minebord(char arr[ROWS][COLS], int row, int col)
{
	int i = 0;
	int j = 0;
	printf("*** 扫雷游戏 ******\n");
	for (j = 0; j <= row; j++)
	{
		printf("%d ", j);
	}
	printf("\n");
	for (i = 1; i <= row; i++)
	{
		printf("%d ", i);
		for (j = 1; j <= col; j++)
			printf("%c ", arr[i][j]);
		printf("\n");
	}
	printf("*** 扫雷游戏 ******\n");
}
void Showbord(char arr[ROWS][COLS], int row, int col)
{
	int i = 0;
	int j = 0;
	printf("\n*** 扫雷游戏 ******\n\n");
	for (j = 0; j <= row; j++)
	{
		printf("%d ", j);
	}
	printf("\n");
	
	for (i = 1; i <= row; i++)
	{
		printf("%d ", i);
		for (j = 1; j <= col; j++)
			printf("%c ", arr[i][j]);
		printf("\n");
	}
	printf("\n*** 扫雷游戏 ******\n");
}
void mold(char arr[ROWS][COLS], int row, int col)
{
	printf("**** 扫雷游戏 ****\n");
	printf("**** 0  简单 *****\n");
	printf("**** 1  中等 *****\n");
	printf("**** 2  困难 *****\n");
	printf("**** 扫雷游戏 ****\n");
	int n = 0;
	int flag = 0;
	do
	{
		flag = 0;
		printf("请选择难度:>");
		scanf("%d", &n);
		system("cls");
		switch (n)
		{
		case 0:Ini__my__count(arr, ROW, COL, n); break;
		case 1:Ini__my__count(arr, ROW, COL, n); break;
		case 2:Ini__my__count(arr, ROW, COL, n); break;
		default: printf("该值无效 请重新输入\n"); flag = 36; break;
		}
	} while (flag);
}
void Ini__my__count(char arr[ROWS][COLS], int row, int col,int n)
{
	//雷的个数
	int a = 0;
	a = (n + 1) * 10;
	//创建坐标
	int x = 0;
	int y = 0;
	while (a)
	{
		x = rand() % row  + 1;
		y = rand() % col  + 1;
		if (arr[x][y] == '0')
		{
			
			arr[x][y] = '1';
			
			a--;
		}
	}
	//判断
	/*for (x = 0; x < row + 2; x++)
	{
		for (y = 0; y < col + 2; y++)
			printf("%d %d %c\n",x, y, arr[x][y]);
	}*/
}
int Tell__count(char mine[ROWS][COLS], char show[ROWS][COLS], char temp[ROWS][COLS], int rows, int cols)
{
	int x = 0;
	int y = 0;
	int flag = 0;
	do
	{
		printf("请输入排查坐标:>");
		scanf("%d %d", &x, &y);
		if (x == 36 && y == 36)
		{
			flag = 1;
			Minebord(mine, ROW, COL);
		}
		else if (x < 1 || x>9 || y < 1 || y>9)
		{
			printf("请输入合法值\n");
			flag = 1;
		}
		else if (show[x][y] != '*'&& show[x][y] != '?'&& show[x][y] != '$')
		{
			printf("该坐标已被排查,请重新输入\n");
			flag = 1;
		}
		else
			flag = 0;
		
	} while (flag);
	 return print(mine, show,temp, rows, cols, x, y);
}
int  print(char mine[ROWS][COLS], char show[ROWS][COLS], char temp[ROWS][COLS], int rows, int cols, int x, int y)
{
	//若是雷返回0
	if (mine[x][y] == '1')		
		return 0;
	//不是雷返回1
	//打印个数
	else
	{
		int i = 0;
		int j = 0;
		temp[x][y] = '1';
		//创建计数变量
		int count = 0;
		for (i = -1; i <= 1; i++)
			for (j = -1; j <= 1; j++)
				if (mine[x + i][y + j] == '1')
					count++;
		if (count != 0)
		{
			show[x][y] = count + '0';
			return 1;
		}
		else
		{
			show[x][y] = ' ';
			for (i = -1; i <= 1; i++)
			{
				for (j = -1; j <= 1; j++)
				{
					if (x + i <= 9 && x + i >= 1 && y + j <= 9 && y + j >= 1 && temp[x + i][y + j] == '0')
					{
						print(mine, show, temp, rows, cols, x + i, y + j);
					}
				}
			}
			return 1;
		}
	}
}
int Iswin(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col)
{
	int i = 0;
	int j = 0;
	int a = 0;
	int b = 0;
	for (i = 1; i <= row; i++)
	{
		for (j = 1; j <= col; j++)
			if (mine[i][j] == '1')
				a++;
	}
	for (i = 1; i <= row; i++)
	{
		for (j = 1; j <= col; j++)
			if (show[i][j] == '*')
				b++;
	}
	if (a == b)
		return 36;
	else return 0;
}
void Isflag(char arr[ROWS][COLS], int row, int col)
{
	int n = 0;
	do
	{
		printf("\n*****************\n");
		printf("请问是否标记操作?\n");
		printf("***0   exit    **\n");
		printf("** 1   $       **\n");
		printf("** 2   ?       **\n");
		printf("** 3   *       **\n");
		printf("请选择:>");
		scanf("%d", &n);
		switch (n)
		{
		case 0:	system("cls");break;
		case 1:Flag1(arr, row, col); break;
		case 2:Flag2(arr, row, col); break;
		case 3:Flag3(arr, row, col); break;
		default:printf("该值无效\n请重新输入:>"); break;
		}
	} while (n);
}
void Flag1(char arr[ROWS][COLS], int row, int col)
{
	printf("请输入坐标:>");
	int x = 0;
	int y = 0;
	
		scanf("%d %d", &x, &y);
		if (arr[x][y] == '*')
		{
			arr[x][y] = '$';
			Showbord(arr, row, col);
		}
}
void Flag2(char arr[ROWS][COLS], int row, int col)
{
	printf("请输入坐标:>");
	int x = 0;
	int y = 0;
	scanf("%d %d", &x, &y);
	if (arr[x][y] == '*')
	{
		arr[x][y] = '?';
		Showbord(arr, row, col);
	}
}
void Flag3(char arr[ROWS][COLS], int row, int col)
{
	printf("请输入坐标:>");
	int x = 0;
	int y = 0;
	scanf("%d %d", &x, &y);
	if (arr[x][y] == '$' || arr[x][y] == '?')
	{
		arr[x][y] = '*';
		Showbord(arr, row, col);
	}
}