写一个扫雷代码

发布时间:2026/10/27 18:59:28

写一个扫雷代码 第一步先将菜单以及选项给呈现出来使用do....while来实现选项因为只需要执行此选项即可因此设置返回值为void#includestdio.h static void menu() { printf(****************\n); printf(***1.开始游戏***\n); printf(***0.退出游戏***\n); printf(****************\n); } int main() { int input 0; srand((unsigned int)time(NULL)); do { menu(); printf(请选择); int i scanf(%d, input); switch (input) { case 1: game(); //这个game函数实现整个游戏的运作 case 0: printf(退出游戏\n); break; default: printf(输入错误请重新输入\n); break; } } while (input); return 0; }此时实现game这个函数因为只需要它执行不需要返回类型同理设置为voidstatic void game() { char mine[ROWS][COLS] { 0 }; char show[ROWS][COLS] { 0 }; InitBoard(mine, ROWS, COLS, 0); InitBoard(show, ROWS, COLS, *); SetMine(mine, ROW, COL);//埋雷 //DisplayBoard(mine, ROW, COL); DisplayBoard(show, ROW, COL);//打印棋盘 FindMine(mine, show, ROW, COL); }逐条分析这两条是创键棋盘一个用来安置一个用来查看char mine[ROWS][COLS] { 0 }; char show[ROWS][COLS] { 0 };这两条是用来初始化棋盘InitBoard(mine, ROWS, COLS, 0); InitBoard(show, ROWS, COLS, *);这是InitBoard函数的实现第一条是初始化棋盘在此棋盘内埋雷第二条则是隐藏棋盘来猜雷在哪里void InitBoard(char board[ROWS][COLS], int r, int c, char set)//初始化棋盘 { int i 0; for (i 0; i r; i) { int j 0; for (j 0; j c; j) { board[i][j] set; } } }定义棋盘的大小#define ROW 9 #define COL 9当排雷时会不可避免的越界因此可以再加上一圈棋盘来防止越界#define ROWS ROW2 #define COLS COL2设置雷的个数#define EASY_COUNT 10埋雷SetMine(mine, ROW, COL);//埋雷实现如下void SetMine(char mine[ROWS][COLS], int r, int c)//埋雷 { int count EASY_COUNT; while (count) { int x rand() % r 1;//将x的值限定在9之内 int y rand() % c 1;//将y的值限定在9之内 if (mine[x][y] 0)//如果值为0就将其设置为“雷” { mine[x][y] 1;//如果值为1“雷”的个数减去一个 count--; } } }srand((unsigned int)time(NULL));这条主要使rand函数生成的为随机值包含的“time”就是一个一直在改变的值从而可实现随机的效果此函数用来排查雷int GetMineCount(char mine[ROWS][COLS], int x, int y)实现如下int GetMineCount(char mine[ROWS][COLS], int x, int y)//判断每个坐标周围雷的个数 { int i 0; int j 0; int c 0; for (i -1; i 1; i) { for (j -1; j 1; j) { if (mine[x i][y j] 1) c; } } return c; }以下为找雷的代码void FindMine(char mine[ROWS][COLS],char show[ROWS][COLS],int r, int c)//找雷 { int x 0; int y 0; int win 0; while (winr*c-EASY_COUNT) { int f scanf(%d %d, x, y); if (x 1 x r y 1 y c) { if (mine[x][y] 1) { printf(很遗憾游戏结束\n); DisplayBoard(mine, r, c); break; } else { if (show[x][y] *) { int c GetMineCount(mine, x, y); show[x][y] c 0; DisplayBoard(show, ROW, COL); win; } else { printf(该坐标已经被排查过请重新输入坐标\n); } } } else { printf(输入的坐标非法请重新输入\n); } } if (winr*c-EASY_COUNT) { printf(排雷成功\n); DisplayBoard(mine, ROW, COL); } }完整代码实现如下game.h#includestdio.h #includestdlib.h #includetime.h #define ROW 9 #define COL 9 #define ROWS ROW2 #define COLS COL2 #define EASY_COUNT 10 void InitBoard(char board[ROWS][COLS], int r, int c, char set); void DisplayBoard(char board[ROWS][COLS], int r, int c); void SetMine(char mine[ROWS][COLS], int r, int c); void FindMine(char mine[ROWS][COLSgame.c//函数定义 #define _CRT_SECURE_NO_WARNINGS #includegame.h void InitBoard(char board[ROWS][COLS], int r, int c, char set)//初始化棋盘 { int i 0; for (i 0; i r; i) { int j 0; for (j 0; j c; j) { board[i][j] set; } } } void DisplayBoard(char board[ROWS][COLS], int r, int c)//打印棋盘 { int i 0; printf(----扫雷----\n); for (i 0; i c; i) { printf(%d , i); } printf(\n); for (i 1; i r; i) { int j 0; printf(%d , i); for (j 1; j c; j) { printf(%c , board[i][j]); } printf(\n); } } void SetMine(char mine[ROWS][COLS], int r, int c)//埋雷 { int count EASY_COUNT; while (count) { int x rand() % r 1; int y rand() % c 1; if (mine[x][y] 0) { mine[x][y] 1; count--; } } } static int GetMineCount(char mine[ROWS][COLS], int x, int y)//判断每个坐标周围雷的个数 { int i 0; int j 0; int c 0; for (i -1; i 1; i) { for (j -1; j 1; j) { if (mine[x i][y j] 1) c; } } return c; } void FindMine(char mine[ROWS][COLS],char show[ROWS][COLS],int r, int c)//找雷 { int x 0; int y 0; int win 0; while (winr*c-EASY_COUNT) { int f scanf(%d %d, x, y); if (x 1 x r y 1 y c) { if (mine[x][y] 1) { printf(很遗憾游戏结束\n); DisplayBoard(mine, r, c); break; } else { if (show[x][y] *) { int c GetMineCount(mine, x, y); show[x][y] c 0; DisplayBoard(show, ROW, COL); win; } else { printf(该坐标已经被排查过请重新输入坐标\n); } } } else { printf(输入的坐标非法请重新输入\n); } } if (winr*c-EASY_COUNT) { printf(排雷成功\n); DisplayBoard(mine, ROW, COL); } }text.h#define _CRT_SECURE_NO_WARNINGS #includestdio.h #includegame.h static void game() { char mine[ROWS][COLS] { 0 }; char show[ROWS][COLS] { 0 }; InitBoard(mine, ROWS, COLS, 0); InitBoard(show, ROWS, COLS, *); SetMine(mine, ROW, COL);//埋雷 //DisplayBoard(mine, ROW, COL); DisplayBoard(show, ROW, COL);//打印棋盘 FindMine(mine, show, ROW, COL); } static void menu() { printf(****************\n); printf(***1.开始游戏***\n); printf(***0.退出游戏***\n); printf(****************\n); } int main() { int input 0; srand((unsigned int)time(NULL)); do { menu(); printf(请选择); int i scanf(%d, input); switch (input) { case 1: game(); case 0: printf(退出游戏\n); break; default: printf(输入错误请重新输入\n); break; } } while (input); return 0; }
延伸阅读

更多相关文章

2026/10/27 18:59:28

从零到落地:基于 LangChain 的大模型应用开发全流程实战

从零到落地:基于 LangChain 的大模型应用开发全流程实战 很多人学习大模型开发时都会陷入一个误区:以为调用模型接口就是在做 AI 应用。实际接触过生产项目的人都知道,单纯调用 API 只能做出一个能对话的壳子,真正有价值的应用——…

2026/10/27 18:59:28

多智能体协作系统设计:编排模式、通信协议与工程落地

多智能体协作系统设计:编排模式、通信协议与工程落地 单个大模型智能体能力再强,也存在天然的边界:上下文窗口有限、无法同时胜任多个专业领域、单个智能体的决策链一旦出错就容易整体失败。多智能体协作系统的出现,正是为了用&qu…

2026/10/27 18:59:28

高职院校智慧体适能实训室建设

随着健康中国战略落地以及职业教育提质培优工作推进,运动健康指导、健身指导与管理、社会体育等专业,对理实一体化实训条件提出更高要求。传统体适能实训大多依靠常规健身器械,教学评价高度依赖授课教师经验判断,体测数据分散存储…

2026/10/27 19:40:03

AI代理如何重塑消费决策与商业生态

1. 当AI代理开始主导消费行为:一场静默的商业革命上周调试购物机器人时,我意外发现系统自动续费了三年份的猫粮——尽管我根本没有养猫。这个令人啼笑皆非的事件背后,隐藏着一个正在发生的重大转变:AI代理正在从服务提供者转变为具…

2026/10/27 19:40:03

CMake 3.10.0 for Windows:工业级构建的版本锚点与实战指南

简介:本资源为CMake 3.10.0官方Windows 64位安装包(RAR格式),专为Windows平台开发者、C项目构建初学者及跨平台工程实践者提供稳定可靠的构建工具支持,有效解决多编译器(如MSVC)、多IDE&#xf…

2026/10/27 19:40:03

n8n自动化工具核心概念与实战应用指南

1. 为什么需要理解n8n的核心概念? 第一次接触n8n时,我完全被它复杂的界面搞懵了。作为一个开源的自动化工具,n8n的强大之处在于它的灵活性,但这也意味着学习曲线相对陡峭。经过半年多的实际项目应用,我发现真正理解它…

2026/10/27 19:40:03

智元机器人技术演进与核心突破解析

1. 智元机器人技术演进全景图(2015-2025)2015年我在深圳科技园第一次见到实验室里的机械臂时,它还在用示教器进行点位编程。十年后的今天,当我看着搭载多模态感知系统的智元机器人自主完成精密装配任务时,不禁感慨技术…

2026/10/27 19:40:03

有机与无机的本质区别:从碳骨架、键合方式到生命系统

1. 从厨房灶台到显微镜下:为什么“有机”不等于“健康”,“无机”也不代表“危险”你有没有在超市买酱油时盯着配料表发过呆?看到“谷氨酸钠”就皱眉,看到“酵母提取物”却觉得天然;刷到短视频说“纯有机蔬菜不含农药”…

2026/10/27 19:35:02

AI技术变革中的资本博弈与创新路径

1. 技术变革中的资本力量博弈最近和几位做早期投资的朋友聊天,他们桌上摆着的BP(商业计划书)十份里有八份都带着"AI"这个标签。这让我想起2014年那波O2O创业潮,只不过这次的主角换成了大模型和生成式AI。作为经历过三波…

2026/10/27 14:24:03

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/27 9:34:54

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/27 0:59:21

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/27 0:02:28

WorkBuddy_新建任务与工作模式19_“模式选错”的典型代价

“模式选错”的典型代价 摘要 在软件工程中,设计模式、架构模式、并发模式乃至团队协作模式的选择,往往在项目早期就决定了后续的开发效率和维护成本。本文通过多个真实场景,剖析“模式选错”带来的典型代价——包括返工成本、技术债务累积、…

2026/10/27 0:02:28

WorkBuddy_新建任务与工作模式20_新手推荐路径

新手推荐路径 摘要 在 AI 辅助开发工具快速普及的今天,新手面对最多的困惑往往不是"工具够不够强",而是"我该从哪一步开始用"。本文提出一条经过实践验证的三阶段学习路径:先从 Ask(问答式交互)起…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑