用c语言实现简易c语言扫雷游戏

void test(void)
{int input = 0;do{menu();printf("请选择: >");scanf("%d", &input);switch (input){menu();case 1:printf("扫雷\n");game();break;case 2:printf("退出游戏\n");break;default:printf("输入错误,请重新输入");break;}} while (input);//0退出游戏}
int main(void)
{test();return 0;
}

 1、主函数及游戏开始结束的界面设计

void menu()
{printf("*************************\n");printf("*******  1:开始游戏      *******\n");printf("*******  0:退出游戏      *******\n");printf("*************************\n");}

2、菜单函数

void game()
{char mine[ROWS][COLS] = { 0 };//存雷char show[ROWS][COLS] = { 0 };//存放排查出的雷的信息//初始化棋盘   尽量设计成一样的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);}

3、游戏模块

        头文件参数封装

#define ROW 9        //棋盘显示区域
#define COL 9#define ROWS ROW + 2//棋盘宽度
#define COLS COL + 2#define EASY_COUNT 20//雷的数量void InitBoard(char board[ROWS][COLS], int rows, int cols, char set);void DisplayBoard(char board[ROWS][COLS], int row, int col);//实际显示的棋盘区域void SetMine(char mine[ROWS][COLS],int row,int col);
void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS],int row,int col);

        初始化棋盘   尽量设计成一样的

void InitBoard(char board[ROWS][COLS], int rows, int cols, char set)
{int i = 0;for (i = 0;i < rows;i++){int j = 0;for (j = 0;j < cols;j++){board[i][j] = set;}}
}

        打印棋盘

void DisplayBoard(char board[ROWS][COLS], int row, int col)//实际显示的棋盘区域
{int i = 0;for (i = 0;i <= col;i++){printf("%d ", i);//打印行列}printf("\n");for (i = 1;i <= row;i++){printf("%d ", i);int j = 0;for (j = 1;j <= col;j++){printf("%c ", board[i][j]);}printf("\n");}}

        布置雷

//布置雷是在棋盘上随机的找10个坐标
//x范围1~9
//y范围1~9
void SetMine(char mine[ROWS][COLS], int row, int col)
{ int count = EASY_COUNT;//80个雷int x = 0;int y = 0;srand((unsigned int)time(NULL));//随机数清空while (count){x = rand() % row + 1;//防止出界y = rand() % col + 1;if (mine[x][y] != '1'){mine[x][y] = '1';//判断是否有雷count--;}}
}

       

 排查雷

void FindMine(char mine[ROWS][COLS],char show[ROWS][COLS],int row,int col)
{int x = 0;int y = 0;int win = 1;while (1){printf("请输入要排查的坐标:");scanf("%d %d", &x, &y);if (x >= 1 && x <= row && y >= 1 && y <= col)//是雷{if (mine[x][y] == '1'){printf("很遗憾,你踩雷了,游戏结束\n");DisplayBoard(mine, ROW, COL);break;}else{int count = GetMineCount(mine, x, y);show[x][y] = count + '0';DisplayBoard(show, ROW, COL);}}else{printf("输入的坐标有误x(1~9),y(1~9) 请重新输入");}//游戏胜利if (win == row * col - EASY_COUNT){printf("恭喜你,排雷成功\n");break;}}
}
统计周围有几个雷

目录

 1、主函数及游戏开始结束的界面设计

2、菜单函数

3、游戏模块

        初始化棋盘   尽量设计成一样的

        打印棋盘

        布置雷

       

 排查雷

法2 统计周围有几个雷


int GetMineCount(char mine[ROWS][COLS], char x, char y)
{int i = 0;int count = 0;for(i = -1;i <= 1;i++){ int j = 0;for (j = -1;j <= 1;j++){count += mine[x + i][y + j] - '0';}}return count;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/web/83838.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

系统辨识的研究生水平读书报告期末作业参考

这是一份关于系统辨识的研究生水平读书报告&#xff0c;内容系统完整、逻辑性强&#xff0c;并深入探讨了理论、方法与实际应用。报告字数超过6000字 从理论到实践&#xff1a;系统辨识的核心思想、方法论与前沿挑战 摘要 系统辨识作为连接理论模型与客观世界的桥梁&#xff…

开源、免费、美观的 Vue 后台管理系统模板

随着前端技术的不断发展&#xff0c;Vue.js 凭借其轻量、高效、易上手的特性&#xff0c;成为国内外开发者最喜爱的前端框架之一。在构建后台管理系统时&#xff0c;Vue 提供了以下优势&#xff1a; 响应式数据绑定&#xff1a;让页面和数据保持同步&#xff0c;开发效率高。 …

适合 Acrobat DC 文件类型解析

文件类型 (File Type)ProgID (Continuous)ProgID (Classic)主要用途.pdfAcroExch.Document.DCAcroExch.Document.20XX (版本特定)Adobe PDF文档格式&#xff0c;用于存储文档内容和格式.pdfxmlAcroExch.pdfxmlAcroExch.pdfxmlPDF与XML结合的格式&#xff0c;可能用于结构化数据…

C/C++数据结构之漫谈

概述 在当今的数字化时代&#xff0c;无论是刷短视频、社交聊天&#xff0c;还是使用导航软件、网络购物&#xff0c;背后都离不开计算机技术的支持。但你是否想过&#xff1a;为什么同样的功能&#xff0c;有的软件运行得飞快&#xff0c;有的却严重卡顿&#xff0c;半天没有响…

4步使用 vue3 路由

路由的基本使用步骤分为以下4步 第一步&#xff1a;定义路由组件&#xff1a;略 第二步&#xff1a;定义路由链接和路由视图&#xff1a; <template><div class"app-container"><h1>App根组件</h1><router-link to"/home">…

VScode使用npm启动项目以及npm install ,npm start报错问题处理

安装启动步骤 打开cmd 输入指令 npm -v 查看npm是否安装&#xff0c;需要先安装node.js node.js安装&#xff1a;node.js安装 安装包下载后&#xff0c;一直点击next &#xff0c;安装完成&#xff0c;打开cmd 输入 node -v 查看安装是否成功 使用VScode 打开项目&#xf…

《仿盒马》app开发技术分享-- 回收金提现记录查询(端云一体)

开发准备 上一节我们实现了回收金提现的功能&#xff0c;并且成功展示了当前账户的支出列表&#xff0c;但是我们的提现相关的记录并没有很好的给用户做出展示&#xff0c;用户只知道当前账户提现扣款&#xff0c;并不知道回收金的去向&#xff0c;这一节我们就要实现回收金记…

芯片的起点——从硅到晶圆制造

第1篇&#xff1a;芯片的起点——从硅到晶圆制造 在讨论汽车芯片如何“上车”之前&#xff0c;我们必须先回到源头&#xff0c;从一颗芯片是如何从沙子一步步炼成讲起。很多人知道芯片很复杂&#xff0c;却未必清楚它的每一层结构、每一道工艺有何意义。本系列文章将从硅的提纯…

vscode python debugger 如何调试老版本python

找到老版本资源&#xff1a; 找到老版本python debugger插件&#xff0c;现在官方github 都是24之后的release 了&#xff0c;调不了3.6 老项目 pdb&#xff1a; 太麻烦 debugpy vscode python debugger 的底层实现&#xff0c;我们可以指定老版本的debugger 来调试&#…

MVCC 怎么实现的

✅ 什么是 MVCC?它是怎么实现的?(适合基础不牢固者) 一、MVCC 是什么? MVCC 全称是:Multi-Version Concurrency Control,中文叫:多版本并发控制。 主要用于解决数据库的读写并发冲突问题,它的作用是让读操作无需加锁,也能读到符合事务隔离要求的数据版本。 你可以…

深度解析企业风控API技术实践:构建全方位企业风险画像系统

引言 在当前的商业环境中&#xff0c;企业风险评估已成为各类商业决策的重要依据。本文将从技术实践的角度&#xff0c;详细介绍企业风控API的集成应用&#xff0c;重点关注API的调用方式、数据结构以及风险维度的划分&#xff0c;帮助开发者快速构建企业风险画像系统。 关键…

Mac 系统 Node.js 安装与版本管理指南

Mac 系统 Node.js 安装与版本管理指南 一、环境检查 在终端执行以下命令验证当前环境&#xff1a; node -v # 查看 Node.js 版本&#xff08;未安装会提示命令不存在&#xff09; npm -v # 查看 npm 版本&#xff08;需 Node.js 安装完成后生效&#xff09;二、安装方法 …

设备健康管理系统搭建全技术解析:从架构设计到智能运维实践

在工业 4.0 与智能制造深度融合的当下&#xff0c;设备健康管理系统已成为企业实现数字化转型的核心基础设施。据 Gartner 数据显示&#xff0c;采用智能设备健康管理系统的企业&#xff0c;平均可降低 30% 的非计划停机成本。如何基于现代技术栈构建一套高效、精准的设备健康管…

React-router 路由历史的模式和原理

在现代Web开发中,React Router已成为管理React应用程序中路由的流行工具。它不仅简化了在单页应用程序(SPA)中导航的过程,还提供了多种路由历史的模式来适应不同的开发需求和环境。了解这些模式及其背后的原理对于构建高效、可维护的Web应用程序至关重要。本文将深入探讨Re…

C++题解(35) 2025年顺德区中小学生程序设计展示活动(初中组C++) 换位(一)

题目描述 小明班上是n行m列的座位排列&#xff0c;座位按照行列顺序编号&#xff0c;如6行7列&#xff0c;那么第1行第1列座位号为1号、第1行第7列为7号、第3行第4列为18号&#xff0c;如此递推。 现在期中考刚结束要进行全班换座位。班主任刚刚公布了换位指令&#xff0c;指…

征程 6 Cache 使用场景

一、缓存机制基础 1.1 缓存类型对比 1.2 典型应用场景 缓存缓冲区 &#xff1a;适用于高频 CPU 访问场景&#xff08;如 AI 推理中间数据&#xff09; 非缓存缓冲区 &#xff1a;适用于设备直传场景&#xff08;如 DMA 数据流&#xff09; 二、数据一致性问题深度解析 2.1…

山东大学软件学院项目实训-基于大模型的模拟面试系统-个人博客(十)

开发博客&#xff1a;AI面试官个性化出题MCP功能最终完善 本周作为项目开发的最后冲刺阶段&#xff0c;我们致力于进一步增强AI面试官在个性化题目生成方面的能力。核心工作是新增和优化了一系列MCP&#xff08;Multi-turn Conversation Protocol&#xff09;工具&#xff0c;…

Rabbitmq后台无法登录问题解决

rabbitmq pod正常运行&#xff0c;查看pod日志也没有发现异常报错。 我们进入容器查看插件是否正常启用&#xff1a; $ kubectl exec -it rabbitmq-hitch-0 -n rabbitmq -- rabbitmq-plugins list Listing plugins with pattern ".*" ...Configured: E explicitly…

期权入门介绍

文章目录 1.基本概念2.期权损益图买入看涨期权卖出看涨期权买入看跌期权卖出看跌期权 3.买卖逻辑3.1 买卖逻辑买入看涨期权卖出看涨期权买入看跌期权卖出看跌期权 3.2 决策依据 4.行权方式美式期权 (American Style)欧式期权 (European Style)百慕大期权 (Bermudan Style)关键区…

useMemo vs useCallback:React 性能优化的两大利器

文章目录 什么是 useMemo&#xff1f;基本语法使用场景实际例子 什么是 useCallback&#xff1f;基本语法使用场景实际例子 核心区别对比什么时候使用它们&#xff1f;使用 useMemo 的时机使用 useCallback 的时机 常见误区和注意事项误区 1&#xff1a;过度使用误区 2&#xf…