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 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 用C轻松实现扫雷,简单,普通,困难模式快来学学吧 -> 正文阅读

[C++知识库]用C轻松实现扫雷,简单,普通,困难模式快来学学吧

还是我,今天给大家带来一个关于扫雷的代码实现过程,别的不说先上图!先赞后看好习惯!!!

?而要实现这样的过程并不难!

首先先来看看我们的头文件下的目录吧!

?要扫雷首先则需要给你的雷布置一个边界,我这里选的是9*9外加2个防溢出空间!

首先是对于二维数组的一个初始化,即界面的初始话和菜单的一个功能实现!

1:菜单的实现!

#include"game.h"

void menu()
{
	printf("----------------------------------\n");
	printf("*********1:开始你的旅途***********\n");
	printf("*********0:结束你的征程***********\n");
	printf("----------------------------------\n");
}

int main()
{
	int input = 0;
	while (1)
	{
		srand((unsigned int)time(NULL));
		menu();
		printf("请选择->");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			printf("开始你的游戏,勇士\n");
			printf("游戏说明:输入要扫的坐标(行+空格+列),若该坐标不是雷,则会显示以它为中心九宫格剩余8个位置的雷数\n祝您好运!\n");
			game();
			break;
		case 0:
			printf("已退出游戏,懦夫\n");
			exit(0);
			break;
		default:
			printf("选择错误,重新选择\n");
			break;
		}
	}
}

2:界面的初始化!和显示操作,这里太简单了就不多说了,注意这里的雷用字符‘1’表示

而传参时注意匹配,别将9传到11的数组里面即可!

void Init(char a[HS][LS], int h, int l, char set)
{
	int i = 0, j = 0;
	for (i = 0; i <h; i++)
	{
		for (j = 0; j <l; j++)
		{
			a[i][j] = set;
		}
	}
}
void Display(char a[HS][LS], int h, int l)
{
	int i = 0, j = 0;
	printf("行/列 ");
	for (i = 1; i <=l; i++)
	{
		printf("%d ", i);
	}
	printf("\n");
	printf("\n");
	for (i = 1; i <= h; i++)
	{
		printf("%d->   ", i);
		for (j = 1; j <=l; j++)
		{
			printf("%c ", a[i][j]);
		}
		printf("\n");
	}
}

3:布置雷,因为是要随机布置即用到time.h头文件,这样是一个随机布置雷的过程!而前面初始话因为不布置雷的时候是是字符‘0’而这个时候我们布置雷则只需要判等‘0’变为‘1’即可

void setlei(char a[HS][LS], int h, int l,int set)
{
	int count = set;
	while (count)
	{
       int x = rand() % h + 1;
	   int y = rand() % l + 1;
	   if (a[x][y] == '0')
	   {
		a[x][y] = '1';
		count--;
	   }
	}
}

4玩家下坐标的位置实现和输赢的实现,众所周知扫雷的游戏规则就是以扫的位置为中心并以九宫格的形式展开,并提示你的周围有几颗雷,因此前面字符‘1’-0‘得到的数字便是有几颗雷的数量

int get(char a[HS][LS], int x, int y)
{
	return a[x - 1][y] + a[x - 1][y - 1] +
		a[x][y - 1] + a[x + 1][y - 1] +
		a[x + 1][y] + a[x + 1][y + 1] +
		a[x][y + 1] + a[x - 1][y + 1] - 8 * '0';
}

而下坐标则简单的许多,判定9*9=81再减去雷的数量给予一个判等的条件便可以知道输赢!

具体操作看我下面的实现!这种方法还有待提高但我觉得对于小白来讲是最为简单明了的了

void find(char a[HS][LS],char a2[HS][LS], int h, int l,int set)
{
	int x = 0, y = 0,win=0;
	while (win< h*l - set)
	{
        printf("要侦测的坐标为->\n");
	    scanf("%d %d", &x,&y);
	 if (x >= 1 && x <= h && y >= 1 && y <= l)
	 {
		if (a[x][y] == '1')
		{
			printf("很遗憾,腿都炸没了\n");
			printf("\n");
			printf("你已经失败了呢!下面数字1为埋雷的位置\n");
			Display(a, h, l);
			break;
		}
		else
		{
			int n = get(a, x, y);
			a2[x][y] = n + '0';
			Display(a2, h, l);
		}
	 }
	 else
	 {
		printf("输入坐标无效\n");
	 }
	}
	if (win == h * l - set)
	{
		printf("恭喜你,走出了战壕\n");
		Display(a, h, l);
	}
}

最后则是相当于一个传参的game()实现功能,这个是写在最后的,只要注意传参不要失误那么这个扫雷游戏是没有那么复杂的!

当然这里我自己加了个游戏难度模式的设定,如果觉得没必要的也可以忽略!总之我也只是小白,欢迎各位大神的指点!

void game()
{
	char lei[HS][LS];
	char show[HS][LS];
	Init(lei, HS, LS, '0');
	Init(show, HS, LS, '*');
	printf("请选择你的难度:\n1:简单模式5颗雷\n2:普通模式10颗雷\n3:困难模式20颗雷\n4:地狱模式80颗雷,ps:对了就去买彩票吧!\n");
	int o;
	scanf("%d", &o);
	switch (o)
	{
	case 1:printf("已选择简单模式\n");
		setlei(lei, H, L, 5);
		Display(show, H, L);
		find(lei, show, H, L,20);
		break;
	case 2:printf("已选择普通模式\n");
		setlei(lei, H, L, 10);
		Display(show, H, L);
		find(lei, show, H, L,20);
		break;
	case 3:printf("已选择困难模式\n");
		setlei(lei, H, L, 20);
		Display(show, H, L);
		find(lei, show, H, L,20);
		break;
	case 4:printf("已选择地狱模式\n");

		setlei(lei, H, L, 80);
		Display(show, H, L);
		find(lei, show, H, L,80);
		break;
	default:
		printf("选择错误,重新选择!\n");
		break;
    }
}

感谢观看,记得点个赞哦!

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-11-11 12:32:24  更:2021-11-11 12:32:33 
 
开发: 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/24 5:35:53-

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