函数加数组实践——排雷
一.实现排雷分为四个步骤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/7/28 16:26:59 阅读更多 →
C71x DSP流引擎:数据提升与转置的硬件机制与编程实战

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

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

2026/7/28 16:25:36 阅读更多 →
MicroBlaze核SPI与UART串行接口实现指南

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

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

2026/7/26 14:01:26 阅读更多 →

最新新闻

B2B电子商务APP软件采购模块的功能设计

B2B电子商务APP软件采购模块的功能设计

在b2b电子商务app软件开发设计中采购中心这一控制模块,是app软件中管理方法购置的控制模块,购置控制模块通常包括供应商管理,采购单管理方法,购置产品管理。其采购单是采购中心的关键控制模块。经销商的管理方法,购置货…

2026/7/28 16:26:31 阅读更多 →
Wot Design Uni 中 ActionSheet 组件的点击关闭功能优化指南

Wot Design Uni 中 ActionSheet 组件的点击关闭功能优化指南

Wot Design Uni 中 ActionSheet 组件的点击关闭功能优化指南 【免费下载链接】wot-design-uni 一个基于Vue3TS开发的uni-app组件库,提供70高质量组件,支持暗黑模式、国际化和自定义主题。 项目地址: https://gitcode.com/gh_mirrors/wo/wot-design-uni…

2026/7/28 16:26:31 阅读更多 →
Obsidian加密终极指南:3步保护你的敏感笔记内容

Obsidian加密终极指南:3步保护你的敏感笔记内容

Obsidian加密终极指南:3步保护你的敏感笔记内容 【免费下载链接】obsidian-encrypt Hide secrets in your Obsidian.md vault 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-encrypt 你是否在Obsidian中记录财务数据、商业机密或私人日记时&#xf…

2026/7/28 16:26:31 阅读更多 →
从Java后端到大模型开发:工程师转型实战指南

从Java后端到大模型开发:工程师转型实战指南

1. 从传统开发到AI浪潮:我的大模型转型之路去年冬天,当我第N次在深夜调试某个业务系统的API接口时,突然意识到自己正站在职业生涯的十字路口。作为有8年经验的Java后端工程师,虽然薪资尚可,但技术栈的迭代速度让我感到…

2026/7/28 16:26:31 阅读更多 →
JavaScript中正则表达式简单应用

JavaScript中正则表达式简单应用

初学javascript,利用正则表达式实现简单的姓名与邮箱校验功能,然后提交 <html > <head> <script type"text/javascript">//姓名的方法function checkName(){var inputNode document.getElementById("userName");var spanNode document…

2026/7/28 16:26:31 阅读更多 →
09 | 容器编排实战:用 K3s 在华为云 FlexusX 搭建多节点 Kubernetes 集群

09 | 容器编排实战:用 K3s 在华为云 FlexusX 搭建多节点 Kubernetes 集群

09 | 容器编排实战&#xff1a;用 K3s 在华为云 FlexusX 搭建多节点 Kubernetes 集群 系列目录&#xff1a;《基于华为云 FlexusX 四节点集群的云计算全栈实操》PaaS 篇 本篇对应课程模块&#xff1a;容器 / 容器编排 / 云原生 引子 前面八篇我们把计算、网络、存储、数据库、…

2026/7/28 16:25:30 阅读更多 →

日新闻

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿&#xff01;3步让你的暗影精灵笔记本重获新生 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 你是否也曾为官方Om…

2026/7/28 0:00:43 阅读更多 →
RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

做 RAG 的人应该都踩过这个致命的坑&#xff1a;把几百页的财报、法规、技术手册扔给向量库&#xff0c;问一个具体问题&#xff0c;搜出来的全是沾边但没用的内容 —— 关键信息要么被硬切块拆碎了&#xff0c;要么藏在几十条结果的最下面。语义相似≠真正相关&#xff0c;这个…

2026/7/28 0:00:43 阅读更多 →
抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

2026年做短视频运营&#xff0c;从抖音上扒文案早就不是偷偷抄笔记的事了。我刚开始做内容的时候&#xff0c;每天刷半小时抖音&#xff0c;手动把爆款视频的口播敲进备忘录&#xff0c;一条2分钟的视频得花十来分钟&#xff0c;碰到语速快的还要反复回听。后来试了一圈工具&am…

2026/7/28 0:00:43 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档&#xff0c;可以直接使用&#xff01;系统支持图片、视频、摄像头等多种方式检测裂缝&#xff0c;功能强大实用。 1数据集6000张 8各类别

2026/7/28 12:04:22 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像&#xff01; pubg绝地求生目标检测数据集 1分类&#xff1a;e_body&#xff0c;14905个标签&#xff0c;txt格式 共计14244张图&#xff0c;99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/28 8:29:16 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别&#xff1a; allies enemy tag图片总量&#xff1a;7247张训练集&#xff1a;5139张验证集&#xff1a;1425张测试集&#xff1a;683张标注状态&#xff1a;全部已标注&#xff0c;即拿即用数据格式&#xff1a;支持YOLO格式及其他格式&#…

2026/7/28 5:03:42 阅读更多 →

月新闻