小新加工升级过的C语言扫雷小程序

text.c

#define _CRT_SECURE_NO_WARNINGS 1

#include"game.h"


//游戏菜单
void mune()
{
	printf("                                             游戏要开始了,准备好了吗?\n");
	printf("           游戏说明:  ①字符‘1’代表雷,‘0’代表无雷;     ②输入排雷坐标后显示的数字是周围8个格子,雷的总数\n");
	printf("                                           按1->勇者准备进入   按2->太菜了不敢玩\n");
	
}
void game1()
{
	//创建雷区
	char mine1[a][b] = { '0' };
	//创建可视雷区
	char show1[a][b] = { '0' };
	//初始化棋盘
	initboard1(mine1,a , b, '0');
	initboard1(show1, a, b, '*');
	//打印棋盘
	displayboard1(show1, A, B);
	//布置雷
	setmine1(mine1, A, B);
	displayboard1(mine1, A, B);//开挂
	//扫雷
	findmine1(mine1, show1, A, B);

}
void game2()
{
	//创建雷区
	char mine2[c][d] = { '0' };
	//创建可视雷区
	char show2[c][d] = { '0' };
	//初始化棋盘
	initboard2(mine2, c, d, '0');
	initboard2(show2, c, d, '*');
	//打印棋盘
	displayboard2(show2, C, D);
	//布置雷
	setmine2(mine2, C, D);
	//displayboard2(mine2, C, D);//开挂
	//扫雷
	findmine2(mine2, show2, C, D);

}
void game3()
{
	//创建雷区
	char mine3[e][f] = { '0' };
	//创建可视雷区
	char show3[e][f] = { '0' };
	//初始化棋盘
	initboard3(mine3, e, f, '0');
	initboard3(show3, e, f, '*');
	//打印棋盘
	displayboard3(show3, E, F);
	//布置雷
	setmine3(mine3, E, F);
	//displayboard3(mine3, E, F);//开挂
	//扫雷
	findmine3(mine3, show3, E, F);
}
void game4()
{
	//创建雷区
	char mine4[g][h] = { '0' };
	//创建可视雷区
	char show4[g][h] = { '0' };
	//初始化棋盘
	initboard4(mine4, g, h, '0');
	initboard4(show4, g, h, '*');
	//打印棋盘
	displayboard4(show4, G, H);
	//布置雷
	setmine4(mine4, G, H);
	//displayboard4(mine4, G, H);//开挂
	//扫雷
	findmine4(mine4, show4, G, H);
}
//循环
void cyclic()
{
	int input4 = 6;
	do{
		scanf("%d", &input4);
		switch (input4)
		{
		case 1:
			game1();
			break;
		case 2:
			game2();
			break;
		case 3:
			game3();
			break;
		case 4:
			game4();
			break;
		default:
			printf("看清楚了!输入1-4!哥们儿!请重新选择!\n");
			input4 = 5;
			break;
		}
	} while (input4);
}


//主函数
int main()
{
	int input1 = 0;
	int input2 = 0;
	int input3 = 0;
	int input6 = 1;
	srand((unsigned int)time(NULL));
	//菜单
	mune();
	scanf("%d", &input1);
	if (input1 == 1)
	{
		printf("						请选择你想挑战的难度->\n");
		printf("                                   1-我想养生     2-上点难度    3-我想好好玩     4-别选这个\n");

		scanf("%d", &input2);
		switch (input2)
		{
		case 1:
			game1();
			break;
		case 2:
			game2();
			break;
		case 3:
			game3();
			break;
		case 4:
			game4();
			break;
		default:
			printf("看清楚了!输入1-4!哥们儿!请重新选择!\n");
			cyclic();
			break;
		}

		do
		{

			printf("                                                 是否还想玩一局?\n");
			printf("                                                 1-来      2-不了\n");
			scanf("%d", &input3);
			if (input3 == 1)
			{
				int input5 = 0;
				printf("						请选择你想挑战的难度->\n");
				printf("                                   1-我想养生     2-上点难度    3-我想好好玩     4-别选这个\n");
				scanf("%d", &input5);
				switch (input5)
				{
				case 1:
					game1();
					break;
				case 2:
					game2();
					break;
				case 3:
					game3();
					break;
				case 4:
					game4();
					break;
				default:
					printf("看清楚了!输入1-4!哥们儿!请重新选择!\n");
					cyclic();
					break;
				}
			}
			else
			{
				input6--;
			}
		} while (input6);
		
		



		return 0;
	}
}

game.c

#define _CRT_SECURE_NO_WARNINGS 1

#include "game.h"


//棋盘1
//初始化---覆盖
void initboard1(char board[a][b], int rows, int cols, char set)
{
	int i, j = 0;
	for (i = 0; i < rows; i++)
	{
		for (j = 0; j < cols; j++)
		{
			board[i][j] = set;
		}
	}
}
//棋盘打印
void displayboard1(char board[a][b], int row, int col)
{
	int i = 0;
	int j = 0;
	for (i = 0; i <= col; i++)
	{
		printf("%d ", i);
	}
	printf("\n");
	for (i = 1; i <= row; i++)
	{
		printf("%d ", i);
		for (j = 1; j <= col; j++)
		{
			printf("%c ", board[i][j]);

		}
		printf("\n");
	}
}
//布置雷区
void setmine1(char board[a][b], int row, int col)
{
	int count = AA;
	while (count)
	{
		int x = rand() % row + 1;
		int y = rand() % col + 1;
		if (board[x][y] == '0')
		{
			board[x][y] = '1';
			count--;
		}
	}
}
//扫雷
int getminecount1(char mine[a][b], int x, int y)
{
	return mine[x - 1][y] + mine[x - 1][y - 1] + mine[x][y - 1] + mine[x + 1][y - 1] + mine[x + 1][y] + mine[x + 1][y + 1] + mine[x][y + 1] + mine[x - 1][y + 1] - 8 * '0';
}
void findmine1(char mine[a][b], char show[a][b], int row, int col)
{
	int x = 0;
	int y = 0;
	while (1)
	{
		printf("请输入排查雷的坐标:》用空格隔开->");

		scanf("%d%d", &x, &y);
		if (x >= 1 && x <= row&&y >= 1 && y <= col)
		{
			if (mine[x][y] == '1')
			{
				printf("BOOM!!!!YOU DIE!!!\n");
				displayboard1(mine, row, col);
				break;
			}
			else
			{
				int count = getminecount1(mine, x, y);
				show[x][y] = count + '0';
				displayboard1(show, row, col);
				printf("不错嘛!再来!/n");
			}
		}
		else
		{
			printf("看清楚坐标,再输入!\n");
		}

	}
}


//棋盘2
//初始化---覆盖
void initboard2(char board[c][d], int rows, int cols, char set)
{
	int i, j = 0;
	for (i = 0; i < rows; i++)
	{
		for (j = 0; j < cols; j++)
		{
			board[i][j] = set;
		}
	}
}
//棋盘打印
void displayboard2(char board[c][d], int row, int col)
{
	int i = 0;
	int j = 0;
	for (i = 0; i <= col; i++)
	{
		printf("%d ", i);
	}
	printf("\n");
	for (i = 1; i <= row; i++)
	{
		printf("%d ", i);
		for (j = 1; j <= col; j++)
		{
			printf("%c ", board[i][j]);

		}
		printf("\n");
	}
}
//布置雷区
void setmine2(char board[c][d], int row, int col)
{
	int count = CC;
	while (count)
	{
		int x = rand() % row + 1;
		int y = rand() % col + 1;
		if (board[x][y] == '0')
		{
			board[x][y] = '1';
			count--;
		}
	}
}
//扫雷
int getminecount2(char mine[c][d], int x, int y)
{
	return mine[x - 1][y] + mine[x - 1][y - 1] + mine[x][y - 1] + mine[x + 1][y - 1] + mine[x + 1][y] + mine[x + 1][y + 1] + mine[x][y + 1] + mine[x - 1][y + 1] - 8 * '0';
}
void findmine2(char mine[c][d], char show[c][d], int row, int col)
{
	int x = 0;
	int y = 0;
	while (1)
	{
		printf("请输入排查雷的坐标:》用空格隔开->");

		scanf("%d%d", &x, &y);
		if (x >= 1 && x <= row&&y >= 1 && y <= col)
		{
			if (mine[x][y] == '1')
			{
				printf("BOOM!!!!YOU DIE!!!\n");
				displayboard2(mine, row, col);
				break;
			}
			else
			{
				int count = getminecount2(mine, x, y);
				show[x][y] = count + '0';
				displayboard2(show, row, col);
				printf("不错嘛!再来!/n");
			}
		}
		else
		{
			printf("看清楚坐标,再输入!\n");
		}

	}
}

//棋盘3
//初始化---覆盖
void initboard3(char board[e][f], int rows, int cols, char set)
{
	int i, j = 0;
	for (i = 0; i < rows; i++)
	{
		for (j = 0; j < cols; j++)
		{
			board[i][j] = set;
		}
	}
}
//棋盘打印
void displayboard3(char board[e][f], int row, int col)
{
	int i = 0;
	int j = 0;
	for (i = 0; i <= col; i++)
	{
		printf("%d ", i);
	}
	printf("\n");
	for (i = 1; i <= row; i++)
	{
		printf("%d ", i);
		for (j = 1; j <= col; j++)
		{
			printf("%c ", board[i][j]);

		}
		printf("\n");
	}
}
//布置雷区
void setmine3(char board[e][f], int row, int col)
{
	int count = EE;
	while (count)
	{
		int x = rand() % row + 1;
		int y = rand() % col + 1;
		if (board[x][y] == '0')
		{
			board[x][y] = '1';
			count--;
		}
	}
}
//扫雷
int getminecount3(char mine[e][f], int x, int y)
{
	return mine[x - 1][y] + mine[x - 1][y - 1] + mine[x][y - 1] + mine[x + 1][y - 1] + mine[x + 1][y] + mine[x + 1][y + 1] + mine[x][y + 1] + mine[x - 1][y + 1] - 8 * '0';
}
void findmine3(char mine[e][f], char show[e][f], int row, int col)
{
	int x = 0;
	int y = 0;
	while (1)
	{
		printf("请输入排查雷的坐标:》用空格隔开->");

		scanf("%d%d", &x, &y);
		if (x >= 1 && x <= row&&y >= 1 && y <= col)
		{
			if (mine[x][y] == '1')
			{
				printf("BOOM!!!!YOU DIE!!!\n");
				displayboard3(mine, row, col);
				break;
			}
			else
			{
				int count = getminecount3(mine, x, y);
				show[x][y] = count + '0';
				displayboard3(show, row, col);
				printf("不错嘛!再来!/n");
			}
		}
		else
		{
			printf("看清楚坐标,再输入!\n");
		}

	}
}


//棋盘4
//初始化---覆盖
void initboard4(char board[g][h], int rows, int cols, char set)
{
	int i, j = 0;
	for (i = 0; i < rows; i++)
	{
		for (j = 0; j < cols; j++)
		{
			board[i][j] = set;
		}
	}
}
//棋盘打印
void displayboard4(char board[g][h], int row, int col)
{
	int i = 0;
	int j = 0;
	for (i = 0; i <= col; i++)
	{
		printf("%d ", i);
	}
	printf("\n");
	for (i = 1; i <= row; i++)
	{
		printf("%d ", i);
		for (j = 1; j <= col; j++)
		{
			printf("%c ", board[i][j]);

		}
		printf("\n");
	}
}
//布置雷区
void setmine4(char board[g][h], int row, int col)
{
	int count = GG;
	while (count)
	{
		int x = rand() % row + 1;
		int y = rand() % col + 1;
		if (board[x][y] == '0')
		{
			board[x][y] = '1';
			count--;
		}
	}
}
//扫雷
int getminecount4(char mine[g][h], int x, int y)
{
	return mine[x - 1][y] + mine[x - 1][y - 1] + mine[x][y - 1] + mine[x + 1][y - 1] + mine[x + 1][y] + mine[x + 1][y + 1] + mine[x][y + 1] + mine[x - 1][y + 1] - 8 * '0';
}
void findmine4(char mine[g][h], char show[g][h], int row, int col)
{
	int x = 0;
	int y = 0;
	while (1)
	{
		printf("请输入排查雷的坐标:》用空格隔开->");

		scanf("%d%d", &x, &y);
		if (x >= 1 && x <= row&&y >= 1 && y <= col)
		{
			if (mine[x][y] == '1')
			{
				printf("BOOM!!!!YOU DIE!!!\n");
				displayboard4(mine, row, col);
				break;
			}
			else
			{
				int count = getminecount4(mine, x, y);
				show[x][y] = count + '0';
				displayboard4(show, row, col);
				printf("不错嘛!再来!/n");
			}
		}
		else
		{
			printf("看清楚坐标,再输入!\n");
		}

	}
}

game.h

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

//棋盘1
#define A 3
#define B 3
#define a 5
#define b 5
#define AA 2
//棋盘2
#define C 6
#define D 6
#define c 8
#define d 8
#define CC 10

//棋盘3
#define E 9
#define F 9
#define e 11
#define f 11
#define EE 15
//棋盘4
#define G 11
#define H 11
#define g 13
#define h 13
#define GG 100
  
//1
void initboard1(char board[a][b], int rows, int cols, char set);
void displayboard1(char board[a][b], int row, int col); 
void setmine1(char board[a][b], int row, int col);
int getminecount1(char mine[a][b], int x, int y);
void findmine1(char mine[a][b], char show[a][b], int row, int col);
//2
void initboard2(char board[c][d], int rows, int cols, char set);
void displayboard2(char board[c][d], int row, int col);
void setmine2(char board[c][d], int row, int col);
int getminecount2(char mine[c][d], int x, int y);
void findmine2(char mine[c][d], char show[c][d], int row, int col);
//3
void initboard3(char board[e][f], int rows, int cols, char set);
void displayboard3(char board[e][f], int row, int col);
void setmine3(char board[e][f], int row, int col);
int getminecount3(char mine[e][f], int x, int y);
void findmine3(char mine[e][f], char show[e][f], int row, int col);
//4
void initboard4(char board[g][h], int rows, int cols, char set);
void displayboard4(char board[g][h], int row, int col);
void setmine4(char board[g][h], int row, int col);
int getminecount4(char mine[g][h], int x, int y);
void findmine4(char mine[g][h], char show[g][h], int row, int col);

给个支持吧~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值