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

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

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

2026/7/19 22:18:49阅读更多 →
MicroBlaze核SPI与UART串行接口实现指南

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

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

2026/7/19 22:18:49阅读更多 →
世界杯裁判摄像头视角获赞,智能眼镜隐私防护为何成难题?

世界杯裁判摄像头视角获赞,智能眼镜隐私防护为何成难题?

世界杯裁判摄像头带来新体验本届世界杯,主裁头上微型摄像头视角让无数球迷大呼过瘾。FIFA给每位主裁的耳麦侧面装了一枚微型稳定摄像机,画面实时无线回传,经AI消抖处理后直接进入直播信号。观众能够以裁判的第一视角观看进球回放,…

2026/7/20 12:42:13阅读更多 →
玩转 DeepSeek TUI:CodeWhale 从入门到实战完全指南

玩转 DeepSeek TUI:CodeWhale 从入门到实战完全指南

前言:在 AI 编程辅助工具层出不穷的今天,如何在命令行中获得高效、直观且费用透明的交互体验?CodeWhale 作为一款专为 DeepSeek 设计的 TUI(终端用户界面)客户端,凭借其强大的项目管理、技能拓展和实时费用…

2026/7/20 12:42:13阅读更多 →
【每周分享】AW313A蓝牙芯片开发平台API说明

【每周分享】AW313A蓝牙芯片开发平台API说明

简介这里用的低功耗蓝牙芯片是AW313A,针对这款BLE芯片开发有一个原厂的软件平台,平台不是直接拿来就能用的,很多的API函数没有功能描述,也没有相关的函数介绍文档说明,也没有例程参考。所以,需要对平台运行…

2026/7/20 12:42:13阅读更多 →
笔记本电脑选购指南:5 项值得花钱、3 项可跳过的功能,助你选到最佳平衡款

笔记本电脑选购指南:5 项值得花钱、3 项可跳过的功能,助你选到最佳平衡款

选购要点选购笔记本电脑时,只需为能提升使用体验的升级配置付费。更好的显示屏、额外的内存(RAM)和独立显卡(GPU)值得多花钱;而像触摸屏这类功能,可能就不值得投入资金。买笔记本电脑并非易事&a…

2026/7/20 12:42:13阅读更多 →
微信聊天记录提取终极指南:三步打造个人AI数据宝库

微信聊天记录提取终极指南:三步打造个人AI数据宝库

微信聊天记录提取终极指南:三步打造个人AI数据宝库 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeChatMs…

2026/7/20 12:42:13阅读更多 →
深入解析CLB_XBAR_REGS:嵌入式硬件信号路由与配置实战

深入解析CLB_XBAR_REGS:嵌入式硬件信号路由与配置实战

1. 理解CLB_XBAR_REGS:嵌入式系统中的硬件信号路由枢纽在嵌入式系统开发,尤其是基于德州仪器(TI)C2000系列微控制器(如TMS320F28002x)进行实时控制或数字信号处理时,我们常常需要将芯片内部不同…

2026/7/20 12:40:12阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/20 0:50:54阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/20 0:50:54阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/20 0:50:54阅读更多 →
2026 WAIC:努比亚二代“豆包手机”NaviX Ultra亮相,智能体验全面升级!

2026 WAIC:努比亚二代“豆包手机”NaviX Ultra亮相,智能体验全面升级!

7月18日智东西消息,在2026 WAIC期间,努比亚联合字节豆包打造的二代“豆包手机”努比亚NaviX Ultra首次亮相,相比一代有诸多升级。智能体手机理念中兴通讯终端事业部总裁、努比亚总裁倪飞表示,智能体手机要从人操作手机变为手机帮人…

2026/7/20 0:01:04阅读更多 →
努比亚NaviX Ultra亮相WAIC,智能体手机能否让用户生活更简单?

努比亚NaviX Ultra亮相WAIC,智能体手机能否让用户生活更简单?

努比亚NaviX Ultra:外观与功能双升级在2026 WAIC期间,首次亮相的努比亚NaviX Ultra吸引了众多目光。它是努比亚联合字节豆包打造的二代“豆包手机”,与一代努比亚M153相比,外观设计变化较大。其机身背部搭载横向排布的大尺寸影像模…

2026/7/20 0:01:04阅读更多 →
C# 将逗号分割的字符串转换为long,并添加到List<long>

C# 将逗号分割的字符串转换为long,并添加到List<long>

目录 方法1:使用Split和Convert.ToInt64 方法2:使用LINQ的Select和ToList 方法3:使用TryParse进行异常安全转换(推荐) 如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天…

2026/7/20 0:01:04阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/19 22:50:49阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/19 14:50:26阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/19 18:50:36阅读更多 →