函数加数组实践——排雷
一.实现排雷分为四个步骤1.初始化棋盘分为一个mine数组一个show数组用show输出打印游戏雷的数组用mine来排雷。其中ROWS为行数COLS为列数char mine[ROWS][COLS];//存放的是雷的信息 char show[ROWS][COLS];//存放的是排查出的雷的信号2.打印棋盘DisplayBoard(show,ROW,COL);3.布置雷setMine(mine, ROW, COL);4.检查雷FindMine(mine,show,ROW,COL);//从mine数组排雷放到show数组里2.详细步骤先建立三个文件一个test.c文件来存放测试游戏的整体逻辑一个game.c文件用来完成游戏的实现一个game.h文件用来进行游戏函数声明。2.1在test.c文件中创建main函数流程步骤首先使用dowhile循环让游戏一直循环进行。intmain() { int input 0; srand((unsigned int)time(NULL)); do { menu(); printf(请输入); scanf(%d,input); switch (input) { case 1: game(); break; case 0: printf(退出游戏\n); break; default: printf(选择错误重新选择\n); break; } } while (input); return 0; }在main函数中通过调用menu菜单打印状态voidmenu() { printf(------------------------------\n); printf(------- 1.play ----------\n); printf(------- 0.exit ----------\n); printf(------------------------------\n); }在main函数中通过调用game函数实现游戏功能voidgame() { char mine[ROWS][COLS];//存放的是雷的信息 char show[ROWS][COLS];//存放的是排查出的雷的信号 //初始化棋盘 InitBoard(mine,ROWS,COLS,0); InitBoard(show,ROWS,COLS, *); //打印棋盘 DisplayBoard(show,ROW,COL); //设置雷 setMine(mine, ROW, COL); //DisplayBoard(mine, ROW, COL); //排雷 FindMine(mine,show,ROW,COL);//从mine数组排雷放到show数组里 }2.2在game.h文件中配置步骤在这里有一个define写法很好可以省去改写数据的麻烦如果你需要修改数据直接在define定义后面修改数据即可不需要修改很多地方的参数define定义的格式#define 标识符 替换文本规则#define、标识符、替换文本之间空格分隔不能用末尾不加分号加分号会把分号一并替换进代码引发语法错误仅简单文本替换无类型检查代码 #define _CRT_SECURE_NO_WARNINGS #include stdio.h #include stdlib.h #include time.h #define EASY_COUNT 10 //定义雷的个数 #define ROW 9 //定义数组中的行数 #define COL 9 //定义数组中的列数 #define ROWS ROW2 #define COLS COL2 //初始化棋盘 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 board[ROWS][COLS], int r, int c); //排查雷 void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS], int r, int c);2.3在game.c文件中的配置步骤#define _CRT_SECURE_NO_WARNINGS #include game.h #include stdio.h void InitBoard(char board[ROWS][COLS], int r, int c, char set) { int i 0; int j 0; for (i 0; i r;i) { for (j 0;j c;j) { board[i][j] set; } } } void DisplayBoard(char board[ROWS][COLS], int r, int c) { int i 0; int j 0; //打印列序号 for (j 0;j c;j) { printf(%d ,j); } printf(\n);//打印完列号换行 //打印set for (i 1;i r;i) { printf(%d ,i);//打印行号 for (j 1;j c;j) { printf(%c ,board[i][j]); } printf(\n);//每打印完一行换行 } printf(\n);//结束换行 } void setMine(char board[ROWS][COLS], int r, int c) { int count EASY_COUNT; //布雷 while (count) { int x rand() % r 1; int y rand() % c 1; if(board[x][y] 0)//判断是否为0是0就布雷 { board[x][y] 1; count--; } } } static size_t GetMineCount(char mine[ROWS][COLS], int x, int y)//使用static是为了只在这个文件里使用这个函数这个函数主要是计算你输入数组里的雷的个数 { 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;//计算雷的数量0! 0;用0 - 0 0, } //排雷 void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS], int r, int c) { int x 0; int y 0; int win 0; while (win r*c - EASY_COUNT)//通过判断win减去雷的个数看是否超过总次数去实现函数 { printf(请输入要排查的坐标); scanf(%d%d, x, y); if (x 1 x r y 1 y c)//判断坐标不要超出范围 { if (show[x][y] *) { if (mine[x][y] 1) { printf(很遗憾你被炸死了\n); DisplayBoard(mine, ROW, COL); break; } else//如果没被炸输出这个数据周围有几个雷 { size_t count GetMineCount(mine, x, y);//计算mine数组里有几个雷 show[x][y] (char)count 0; DisplayBoard(show, ROW, COL); win; } } else { printf(该坐标已经被排查过不用重复排查\n); } } else { printf(输入的坐标非法重新输入\n); } } if (win r * c - EASY_COUNT)//判断是否找到了没有埋雷的所有格子 { printf(恭喜你排雷成功\n); DisplayBoard(mine, ROW, COL); } }运行截图拓展1.是否可以选择游戏难度简单9*9棋盘10个雷中等16*16棋盘40个雷困难30*16棋盘99个雷2.如果排查位置不是雷周围也没有雷可以展开周围一片3.是否可以标记雷4.是否可以加上排雷的时间显示

相关新闻

TMS320F2838x I2C模块深度解析:从协议基础到高级功能实战

TMS320F2838x I2C模块深度解析:从协议基础到高级功能实战

1. 项目概述与I2C协议核心思想在嵌入式系统开发中,设备间的通信是构建复杂功能的基础。面对众多传感器、存储器和协处理器,如何用最少的硬件资源实现可靠的数据交换,是每个工程师都要面对的挑战。I2C(Inter-Integrated Circuit&am…

2026/10/28 8:56:06 阅读更多 →
C71x DSP流引擎:数据提升与转置的硬件机制与编程实战

C71x DSP流引擎:数据提升与转置的硬件机制与编程实战

1. 流引擎核心概念与C71x实现定位在嵌入式高性能计算,尤其是数字信号处理领域,数据搬运的效率往往是决定整体性能的瓶颈。CPU的算力再强,如果数据供给跟不上,也只能“空转”。传统上,程序员需要手动编写复杂的DMA配置或…

2026/10/28 8:55:32 阅读更多 →
MicroBlaze核SPI与UART串行接口实现指南

MicroBlaze核SPI与UART串行接口实现指南

1. MicroBlaze核串行接口实验概述在嵌入式系统开发中,MicroBlaze作为Xilinx FPGA平台上的软核处理器,其灵活性和可配置性使其成为许多通信接口实验的理想选择。这次我们要探讨的是MicroBlaze核上SPI和UART两种串行接口的实现与应用。这两种接口在工业控制…

2026/10/27 16:26:27 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/27 17:33:32 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/28 7:28:00 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/27 7:21:53 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/27 18:20:50 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/27 6:20:47 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/28 7:29:02 阅读更多 →

日新闻

周新闻

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/27 13:55:19 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/27 7:21:50 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/27 19:19:37 阅读更多 →