IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 小型项目——扫雷游戏(模块化实现) -> 正文阅读

[数据结构与算法]小型项目——扫雷游戏(模块化实现)

完整代码

https://gitee.com/programmer-lego/c-language

视频,建议先看

扫雷游戏视频

打印菜单

void menu()
{
	printf("##############################################\n");
	printf("##################按1 玩游戏##################\n");
	printf("#################按0不玩游戏##################\n");
	printf("##############################################\n");
}

玩家做出选择

	do
	{
		printf("请做出选择->");
		scanf("%d", &n);
		switch (n)
		{
		case 1:
			game();
			break;
		case 0:
			printf("不玩游戏,退出程序\n");
			break;
		default:
			printf("选择错误,请从新输入");
			break;
		}
	} while (n);

创立雷盘,和展示给用户的雷盘

#define ROWS 11
#define COLS 11
#define ROW 9
#define COL 9
void game()
{
	char board[ROWS][COLS], show[ROWS][COLS];
	//初始化
}

初始化两个盘子

	init(board, ROWS, COLS, '0');
	init(show, ROWS, COLS, '*');
void init(char board[ROWS][COLS], int rows,int cols,char x)
{
	int a, b;
	for (a = 0; a < rows; a++)
	{
		for (b = 0; b < cols; b++)
		{
			board[a][b] = 'x';
		}
	}
}

打印盘子

void print(char board[ROWS][COLS], int row, int col)
{
	int a, b;
	for (b = 0; b <= col; b++)
	{
		printf("%d ", b);
	}
	printf("\n");
	for (a = 1; a <= row; a++)
	{
		printf("%d ", a);
		for (b = 1; b <=col; b++)
		{
			printf("%c ", board[a][b]);
		}
		printf("\n");
	}

}

放雷(电脑随机放雷)

void put(char board[ROWS][COLS], int row, int col)
{
	int sum = MINE;
	while (sum)
	{
		int x = rand() % row + 1;
		int y = rand() % col + 1;
		if (board[x][y] == '0')
		{
			board[x][y] = '1';
			sum--;
		}
	}
}

进行扫雷

int sweep_mine(char board[ROWS][COLS], char show[ROWS][COLS], int row, int col)
{
	int x, y;
	printf("请输入坐标->");
		scanf("%d%d", &x, &y);
		if (x > 0 && x <= row && y > 0 && y <= col)
		{
			s=judge(board, show, x, y);
		}
		else
		{
			printf("请输入正确的坐标->");
		}
		return s;
}
int judge(char board[ROWS][COLS], char show[ROWS][COLS], int x, int y)
{
	int a = 0, b = 0, sum = 0;
	if (x <= 0 || y <= 0 || x > 9 || y > 9||board[x][y]=='q')
	{
		return s;
	}
	else if (board[x][y] == '1')
	{
		return -1;
	}
	else
	{
		a = x - 1;
		b = y - 1;
		for (a=x-1; a <= x + 1; a++)
		{
			for (b=y-1; b <= y + 1; b++)
			{
				if (board[a][b] == '1')
				{
					sum++;
				}
			}
		}
		if (sum != 0)
		{
			show[x][y] = '0' + sum;
			s--;
		}
		else
		{
			show[x][y] = ' ';
			for (a = x - 1; a <= x + 1&&a<=ROW&&a>0; a++)
			{
				for (b=y-1; b <= y + 1&&b<=COL&&b>0; b++)
				{
					show[a][b] = ' ';
					s--;
					board[x][y] = 'q';
					judge(board, show, a, b);
				}
			}
		}
	}
}

判断是否成功

	while (s>0)
	{
		print(show, ROW, COL);
		s=sweep_mine(board, show, ROW, COL);//注意
		
	}
	if (s == 0)
	{
		printf("扫雷成功\n");
		//printf("下面是雷图\n");
		//print(board, ROW, COL);
	}
	else
	{
		printf("哈哈哈,你被炸死了\n");
		//printf("下面是雷图\n");
		//print(board, ROW, COL);
	}

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-01-25 10:49:54  更:2022-01-25 10:50:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 19:24:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码