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

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

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

要扫雷首先则需要给你的雷布置一个边界,我这里选的是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轻松实现扫雷,简单,普通,困难模式快来学学吧相关推荐

  1. 【C语言】升级版猜数字小游戏(含简单、中等、困难模式并且支持战绩查询以及界面美化)

    文章目录 游戏效果 游戏结构 代码实现 主函数 菜单函数 游戏函数 关于随机数 游戏模式函数 保存战绩函数 查询战绩函数 整体代码 动画演示 升级版 简单模式函数 普通模式函数 困难模式函数 添加游戏 ...

  2. 山山的数学(简单and困难and毒瘤)

    "飞雪连天射白鹿,笑书神侠倚碧鸳".作为一名碧血丹心的大侠,山山时常在江湖之上行侠仗义,惩恶扬善,而且江湖素有"神雕大侠杨过,走遍江南名扬天下:逍遥神侠山山,踏尽漠北誉满 ...

  3. 【Java设计模式】简单学外观模式——万能遥控器

    目录 说明 目标 实现方式 注意事项 其他链接 说明 结构型模式之一,其他还有适配器模式.桥接模式.组合模式.装饰模式.享元模式.代理模式 外观模式(Facade Pattern)通过定义一个一致的接 ...

  4. 【Java设计模式】简单学访问者模式——我的选择是,Yes

    目录 说明 实现方式 优点 缺点 应用场景 其他链接 说明 行为型模式之一,其他还有命令模式.模板方法模式.迭代器模式.观察者模式.中介者模式.备忘录模式.解释器模式(Interpreter模式).状 ...

  5. boos里的AHCI RAID_希洛克团本详解 DNF国服环境下Raid困难模式

    随着9月底的临近,大部分玩家都在期待着本月底的金秋版本更新,而全新的金秋版本给大家带来的主要内容之一当然还是大家期待了很久的全新团本希洛克Raid.那么国服里的希洛克具体是什么样的呢?快跟小编一起走进 ...

  6. 简单易懂 MVP 模式

    Android MVP 模式 [1] 也不是什么新鲜的东西了,我在自己的项目里也普遍地使用了这个设计模式.当项目越来越庞大.复杂,参与的研发人员越来越多的时候,MVP 模式 的优势就充分显示出来了. ...

  7. 大话设计模式之简单的工厂模式

    第一章:代码无错就是优-简单的工厂模式 先建立一个计算类Operation Operation.h文件 @interface Operation : NSObject@property(nonatom ...

  8. 用PHP代码实现简单的工厂模式,用PHP代码实现简单的工厂模式

    PHP代码实现简单的工厂模式方法 1.定义抽象基类 //家禽类 abstract class Fowl { abstract public function eat();//吃方法 } 2.定义子类 ...

  9. 简单工厂(SimpleFactory)模式简介

    简单工厂模式是最简单的模式了,也是我们打开教材的第一个模式. 一, 简单工厂模式的定义. 简单工厂模式是这样的: 建立1个工厂类, 这个类有1个静态方法, 根据条件(参数)的不同返回不同的同1个类族的 ...

最新文章

  1. 学习作用域中的“名词”
  2. 测试脚本的实用性(续)谈对编写脚本的几点规范
  3. 两款轻量级服务器 Http-server SimpleHTTPServer
  4. 分部类--重温篇[好处,示例]
  5. web developer tips (8):创建web用户控件并包含在web页面里
  6. Node.js模块化开发||Node.js中模块化开发规范
  7. 幼儿园体育游戏电子计算机教案,幼儿园大班体育游戏教案
  8. mysql从字符串中取子字符串_如何从开始于MySQL中特定位置的字符串中提取子字符串?...
  9. 华为鸿蒙os系统有哪些黑科技,华为首款搭载鸿蒙os智慧产品除了鸿蒙系统还有这黑科技...
  10. Round Numbers POJ - 3252(数位dp+判断前导零)
  11. 面试加分项!程序员工作2年月薪12K,附架构师必备技术详解
  12. sklearn 神经网络_DeepLearning学习(二):浅层神经网络
  13. android实现图片自动轮播代码,Android实现图片轮播切换实例代码
  14. 吉林大学计算机专业研究生导师,吉林大学计算机科学与技术学院导师教师简介-张晋东...
  15. 台式计算机驱动程序未被安装,计算机图形驱动程序安装失败的原因及其解决方法...
  16. 人人网登录并写留言板(Requests,js逆向)
  17. 简述Spring的详细工作原理
  18. 2022云南省职业院校技能大赛(高职组) Web技术(网站设计与开发)赛项规程
  19. Android仿微信气泡样式使用drawable实现
  20. 2019年8月10日工作总结

热门文章

  1. apache atlas 案例_元数据治理 Apache Atlas
  2. RTX2080+CUDA11.7+CUDNN8.6.0+ubuntu20.04+python3.8.10 部署和安装
  3. 频率域滤波matlab函数,6、频率域滤波
  4. 关于《Python黑帽子:黑客与渗透测试编程之道》的学习笔记
  5. 程序员成长记录(前端转后端)
  6. 统考英语计算机报名入口奥鹏,考试服务
  7. 一行代码解决 ThinkPHP5 压缩水印图片后透明背景变成白色背景的问题
  8. Socket 通信中read方法阻塞接收的问题
  9. 【安全】整合spring security
  10. Ceph RBD API librdb 读流程源码分析