C语言————实战项目“扫雷游戏”(完整代码)

        无论是找工作面试,还是课设大作业、考研,都离不开实战项目的积累,如果你能把一个项目搞明白,并且给别人熟练的讲出来,即使你没有过项目经历,也可以说是非常加分的,下面来沉浸式体验一下这款扫雷游戏吧!!下载可玩!!

neverfadeaway2/saolei: 扫雷游戏体验https://github.com/neverfadeaway2/saolei

这是小博自己写的扫雷游戏,下面由我来为大家讲解一下主要的代码和原理。

该扫雷游戏主要是由数组和函数的知识编写的,雷区为9*9的正方形棋盘,主要有初始化棋盘,打印棋盘,布置雷,排查雷等步骤。具体详情可看下列代码:

test.c

#include "game.h"void meun()
{printf("********************\n");printf("********play********\n");printf("******>>0***>>1*****\n");printf("********************\n");printf("********************\n");
}void game()
{char mine[ROWS][COLS] = { 0 };char show[ROWS][COLS] = { 0 };//初始化棋盘InitBoard(mine, ROWS, COLS, '0');InitBoard(show, ROWS, COLS, '*');//打印棋盘//DisplayBoard(mine, ROW, COL);//DisplayBoard(show, ROW, COL);//布置雷SetMine(mine, ROW, COL);//排查雷FindMine(mine, show, ROW, COL);}int main()
{int input = 0;srand((unsigned int)time(NULL));//生成随机坐标,用于布置雷,保证每次雷的位置都不同do{meun();printf("请输入>");scanf("%d", &input);switch (input){case 0:printf("游戏结束\n");break;case 1:game();break;default:printf("输入错误,请重新输入\n");break;}} while (input);return 0;
}

game.c

#include "game.h"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 <= row; i++){printf("%d ", i);}.......
}void SetMine(char Board[ROWS][COLS], int row, int col)
{int count = COUNT;while (count){int x = rand() % row + 1;int y = rand() % col + 1;.......}
}void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col)
{int x = 0;int y = 0;int win = 0;while (win < row * col - COUNT){printf("请输入要排查的坐标:>");scanf("%d %d", &x, &y);if (x > 0 && y > 0 && x <= row && y <= col){.......}}elseprintf("输入坐标非法,请重新输入\n");}if (win == row * col - COUNT){printf("恭喜你,闯关成功\n");DisplayBoard(mine, ROW, COL);}}int GetMine(char mine[ROWS][COLS], int x, int y)
{int i = 0;int j = 0;char sum='0';for (i = x - 1; i <= x + 1; i++){for (j = y - 1; j <= y + 1; j++){sum += mine[i][j];}}return sum - 9 * '0';
}

game.h

#include <stdio.h>
#include <stdlib.h>
#include <time.h>#define ROW 9
#define COL 9
#define ROWS ROW+2
#define COLS COL+2#define COUNT 10
//初始化棋盘
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 Board[ROWS][COLS], int row, int col);
//排查雷
void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS],int row,int col);
//排查周围雷个数
int GetMine(char mine[ROWS][COLS], int x, int y); 

想要完整源代码文件可到小博的Gitee仓库下,自行查看下载。登录 - Gitee.comhttps://gitee.com/never-fade-away/test.c1/commit/e664a4818825894db76ca91816d867eaca8c6749

小博这里就说这么多了,大家有不懂的地方可以随时问我!!

这里小博送给大家自己喜欢的一句话:“放弃去寻找标准答案,你的选择就是答案!”加油!!

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

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

相关文章

数据结构之加餐篇 -顺序表和链表加餐

目录一、链表分割二、随机链表的复制总结一、链表分割 链表分割 题目描述的意思就如下图&#xff1a; 也就是把1&#xff0c;2挪到前面&#xff0c;6&#xff0c;3&#xff0c;5挪到后面&#xff0c;前者的相对顺序不发生改变 这里要想往后挪就要先遍历&#xff0c;遍历到6…

JSP与Servlet整合数据库开发:构建Java Web应用的全栈指南

JSP与Servlet整合数据库开发&#xff1a;构建Java Web应用的全栈指南 概述 在Java Web开发领域&#xff0c;JSP&#xff08;JavaServer Pages&#xff09;与Servlet是构建动态Web应用的核心技术组合。Servlet作为Java EE的基础组件&#xff0c;负责处理客户端请求、执行业务逻…

设计五种算法精确的身份证号匹配

问题定义与数据准备 我们有两个Excel文件&#xff1a; small.xlsx: 包含约5,000条记录。large.xlsx: 包含约140,000条记录。 目标&#xff1a;快速、高效地从large.xlsx中找出所有其“身份证号”字段存在于small.xlsx“身份证号”字段中的记录&#xff0c;并将这些匹配的记录保…

Spring 框架(IoC、AOP、Spring Boot) 的必会知识点汇总

目录&#xff1a;&#x1f9e0; 一、Spring 框架概述1. Spring 的核心功能2. Spring 模块化结构&#x1f9e9; 二、IoC&#xff08;控制反转&#xff09;核心知识点1. IoC 的核心思想2. Bean 的定义与管理3. IoC 容器的核心接口4. Spring Bean 的创建方式&#x1f9f1; 三、AOP…

简单工厂模式(Simple Factory Pattern)​​ 详解

✅作者简介&#xff1a;大家好&#xff0c;我是 Meteors., 向往着更加简洁高效的代码写法与编程方式&#xff0c;持续分享Java技术内容。 &#x1f34e;个人主页&#xff1a; Meteors.的博客 &#x1f49e;当前专栏&#xff1a; 设计模式 ✨特色专栏&#xff1a; 知识分享 &…

新电脑硬盘如何分区?3个必知技巧避免“空间浪费症”!

刚到手的新电脑&#xff0c;硬盘就像一间空荡荡的大仓库&#xff0c;文件扔进去没多久就乱成一锅粥&#xff1f;别急&#xff0c;本文会告诉你新电脑硬盘如何分区&#xff0c;这些方法不仅可以帮你给硬盘分区&#xff0c;还可以调整/合并分区大小等。所以&#xff0c;本文的分区…

【微知】git submodule的一些用法总结(不断更新)

文章目录综述要点细节如何新增一个submodule&#xff1f;如何手动.gitmodules修改首次增加一个submodule&#xff1f;git submodule init&#xff0c;init子命令依据.gitmodules.gitmodules如何命令修改某个成员以及同步&#xff1f;如果submodule需要修改分支怎么办&#xff1…

【Spring Cloud微服务】9.一站式掌握 Seata:架构设计与 AT、TCC、Saga、XA 模式选型指南

文章目录一、Seata 框架概述二、核心功能特性三、整体架构与三大角色1. Transaction Coordinator (TC) - 事务协调器&#xff08;Seata Server&#xff09;2. Transaction Manager (TM) - 事务管理器&#xff08;集成在客户端&#xff09;3. Resource Manager (RM) - 资源管理器…

AI赋能!Playwright带飞UI自动化脚本维护

80%的自动化脚本因一次改版报废&#xff1f; 开发随意改动ID导致脚本集体崩溃&#xff1f;背景UI自动化在敏捷开发席卷行业的今天&#xff0c;UI自动化测试深陷一个尴尬困局&#xff1a;需求迭代速度&#xff08;平均2周1次&#xff09;&#xff1e; 脚本维护速度&#xff08;平…

Redis、Zookeeper 与关系型数据库分布式锁方案对比及性能优化实战指南

Redis、Zookeeper 与关系型数据库分布式锁方案对比及性能优化实战指南 1. 问题背景介绍 在分布式系统中&#xff0c;多节点并发访问共享资源时&#xff0c;如果不加锁或加锁不当&#xff0c;会导致数据不一致、超卖超买、竞态条件等问题。常见的分布式锁方案包括基于Redis、Zoo…

网络安全A模块专项练习任务十一解析

任务十一&#xff1a;IP安全协议配置任务环境说明&#xff1a; (Windows 2008)系统&#xff1a;用户名Administrator&#xff0c;密码Pssw0rd1.指定触发SYN洪水攻击保护所必须超过的TCP连接请求数阈值为5&#xff1b;使用组合键winR&#xff0c;输入regedit打开注册表编辑器&am…

金蝶中间件适配HGDB

文章目录环境文档用途详细信息环境 系统平台&#xff1a;Microsoft Windows (64-bit) 10 版本&#xff1a;5.6.5 文档用途 本文章主要介绍金蝶中间件简单适配HGDB。 详细信息 一、金蝶中间件Apusic安装与配置 1.Apusic安装与配置 Windows和Linux下安装部署过程相同。 &…

使用a标签跳转之后,会刷新一次,这个a标签添加的样式就会消失

<ul class"header-link"><li><a href"storeActive.html">到店活动</a></li><li><a href"fuwu.html">服务</a></li><li><a href"store.html">门店</a></l…

线程池实现及参数详解

线程池概述 Java线程池是一种池化技术&#xff0c;用于管理和复用线程&#xff0c;减少线程创建和销毁的开销&#xff0c;提高系统性能。Java通过java.util.concurrent包提供了强大的线程池支持。 线程池参数详解 1. 核心参数 // 创建线程池的完整构造函数 ThreadPoolExecu…

K8S 部署 NFS Dynamic Provisioning(动态存储供应)

K8S 部署 NFS Dynamic Provisioning&#xff08;动态存储供应&#xff09; 本文档提供完整的 K8s NFS 动态存储部署流程&#xff0c;包含命名空间创建、RBAC 权限配置、Provisioner 部署、StorageClass 创建及验证步骤。 2. 部署步骤 2.1 创建命名空间 首先创建独立的命名空间 …

JavaEE 进阶第二期:开启前端入门之旅(二)

专栏&#xff1a;JavaEE 进阶跃迁营 个人主页&#xff1a;手握风云 目录 一、VS Code开发工具的搭建 1.1. 创建.html文件 1.2. 安装插件 1.3. 快速生成代码 二、HTML常见标签 2.1. 换行标签 2.2. 图片标签: img 2.3. 超链接 三、表格标签 四、表单标签 4.1. input标…

【RNN-LSTM-GRU】第二篇 序列模型原理深度剖析:从RNN到LSTM与GRU

本文将深入探讨循环神经网络&#xff08;RNN&#xff09;的核心原理、其面临的长期依赖问题&#xff0c;以及两大革命性解决方案——LSTM和GRU的门控机制&#xff0c;并通过实例和代码帮助读者彻底理解其工作细节。1. 引言&#xff1a;时序建模的数学本质在上一篇概述中&#x…

Qt---状态机框架QState

QState是Qt状态机框架&#xff08;Qt State Machine Framework&#xff09;的核心类&#xff0c;用于建模离散状态以及状态间的转换逻辑&#xff0c;广泛应用于UI交互流程、设备状态管理、工作流控制等场景。它基于UML状态图规范设计&#xff0c;支持层次化状态、并行状态、历史…

GitHub 热榜项目 - 日榜(2025-09-02)

GitHub 热榜项目 - 日榜(2025-09-02) 生成于&#xff1a;2025-09-02 统计摘要 共发现热门项目&#xff1a;14 个 榜单类型&#xff1a;日榜 本期热点趋势总结 本期GitHub热榜呈现AI Agent生态爆发趋势&#xff0c;Koog、Activepieces等项目推动多平台智能体开发框架成熟。语…

华为卫星对星引导技术深度解析:原理、实现与开源替代方案

利号&#xff1a;CNXXXXXX 涉及多传感器融合/自适应波束成形/轨道预测算法一、技术原理剖析&#xff1a;卫星间高精度指向的核心挑战在低轨卫星&#xff08;LEO&#xff09;星座中&#xff0c;卫星间链路&#xff08;ISL&#xff09;的建立面临三大技术难题&#xff1a;1. 动力…