当前位置: 首页 > article >正文

【C语言极简自学笔记】项目开发——扫雷游戏

一、项目概述

1.项目背景

扫雷是一款经典的益智游戏,由于它简单而富有挑战性的玩法深受人们喜爱。在 C 语言学习过程中,开发扫雷游戏是一个非常合适的实践项目,它能够综合运用 C 语言的多种基础知识,如数组、函数、循环、条件判断等,有助于提升编程能力和逻辑思维能力。

2.项目目标

本次项目旨在使用 C 语言开发一个控制台版本的扫雷游戏,实现以下基本功能:

  1. 初始化游戏棋盘,包括雷区的布置和非雷区域周围雷数的计算。
  2. 玩家通过输入坐标来翻开棋盘格子,若翻开雷则游戏失败,若翻开所有非雷格子则游戏胜利。
  3. 提供标记雷的功能,方便玩家识别可能有雷的区域。
  4. 具备良好的用户交互界面,显示棋盘状态和游戏提示信息。

二.游戏设计 

 1.界面设置

由于进入游戏之后首先需要显示选择是否进行游戏的界面,因此需要利用do...while循环至少执行一次的特点来显示界面,并根据用户的选择来决定是否进入游戏,对主函数的编码如下所示:

int main()
{int input = 0;do{menu();printf("请选择:>");scanf("%d",&input);switch (input){case 1:printf("开始游戏\n");break;case 0:printf("退出游戏\n");break;default:printf("选择错误请重新选择\n");break;}} while (input);return 0;
}

通过switch语句,根据输入的值来选择是否进入游戏,若输入0,则退出游戏;若输入1,则开始游戏;若输入其他数字,提醒选择错误请重新输入。

菜单函数编辑如下:

void menu()
{printf("******************************\n");printf("********    1.play    ********\n");printf("********    0.exit    ********\n");printf("******************************\n");
}

2.游戏环节设置

当用户选择开始游戏后,需要进入游戏,因此需要创建一个函数来实现游戏的过程。由于需要同时布置雷和排查雷,因此需要创建两个二维数组来实现对雷的布置与排查。

(1)初始化棋盘

void Initboard(char board[ROWS][COLS], int row, int col, char ret)
{int i = 0;int j = 0;for (i = 0; i < row; i++){for (j = 0; j < col; j++){board[i][j] = ret;}}
}

将布置雷的数组的所有元素初始化0,将排查雷的数组的所有元素初始化为*,因此需要一个字符变量来传递参数。

(2)打印棋盘

void Displayboard(char board[ROWS][COLS], int row, int col)
{int i = 0;int j = 0;printf("-------------------扫雷-----------------------\n");for (j = 0; j <= col; j++){printf("%d ",j);}printf("\n");for (i = 1; i <= row; i++){printf("%d ",i);for (j = 1; j <= col; j++){printf("%c ",board[i][j]);}printf("\n");}printf("-------------------扫雷-----------------------\n");
}

为了更好的识别数组中的哪一个元素,增加了打印行和列的部分

(3)设置雷

void Setmine(char board[ROWS][COLS], int row, int col)
{int count = EASY_COUNT;while (count){int x = rand() % row + 1;int y = rand() % col + 1;if (board[x][y] == '0'){board[x][y] = '1';count--;}}
}

通过调用srand函数生成随机数的生成起点,然后通过取模运算即可随机设置雷的位置。

此时游戏函数的代码如下:

void game()
{char mine[ROWS][COLS] = { 0 };char show[ROWS][COLS] = { 0 };Initboard(mine, ROWS, COLS,'0');Setmine(mine, ROW, COL);//Displayboard(mine, ROW, COL);//为了展示设置雷和初始化后的结果,正式游戏不用打印Initboard(show, ROWS, COLS,'*');Displayboard(show, ROW, COL);
}

 代码整体运行结果如下:

 可以看到,已经随机设置了十个雷,而且排查雷的数组所有元素被初始化为*。

欲知后事如何,且看下篇文章!!!!!

相关文章:

【C语言极简自学笔记】项目开发——扫雷游戏

一、项目概述 1.项目背景 扫雷是一款经典的益智游戏&#xff0c;由于它简单而富有挑战性的玩法深受人们喜爱。在 C 语言学习过程中&#xff0c;开发扫雷游戏是一个非常合适的实践项目&#xff0c;它能够综合运用 C 语言的多种基础知识&#xff0c;如数组、函数、循环、条件判…...

Global Security Markets 第5章知识点总结

一、章节核心内容概述 《Global Securities Markets》第五章聚焦全球主要证券交易所、关联存管机构及跨境交易实务&#xff0c;重点解析“乘客市场&#xff08;Passenger Markets&#xff09;”概念与合规风险&#xff0c;同时涵盖交易费用、监管规则等实操要点。考虑到市场的…...

电子电路:4017计数器工作原理解析

4017是CMOS十进制计数器/分频器,它属于CD4000系列,工作电压范围比较宽,可能3V到15V。我记得它有10个译码输出端,每个输出端依次在高电平和低电平之间循环,可能用于时序控制或者LED显示什么的。 4017内部应该由计数器和译码器两部分组成。计数器部分可能是一个约翰逊计数器…...

Vim 中设置插入模式下输入中文

在 Vim 中设置插入模式下输入中文需要配置输入法切换和 Vim 的相关设置。以下是详细步骤&#xff1a; 1. 确保系统已安装中文输入法 在 Linux 系统中&#xff0c;常用的中文输入法有&#xff1a; IBus&#xff08;推荐&#xff09;&#xff1a;支持拼音、五笔等Fcitx&#xf…...

GitHub 趋势日报 (2025年05月31日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 1153 prompt-eng-interactive-tutorial 509 BillionMail 435 ai-agents-for-begin…...

Maven概述,搭建,使用

一.Maven概述 Maven是Apache软件基金会的一个开源项目,是一个有优秀的项目构建(创建)工具,它用来帮助开发者管理项目中的jar,以及jar之间的依赖关系,完成项目的编译,测试,打包和发布等工作. 我在当前学习阶段遇到过的jar文件: MySQL官方提供的JDBC驱动文件,通常命名为mysql-…...

基于大模型的数据库MCP Server设计与实现

基于大模型的数据库MCP Server设计与实现 引言 随着大语言模型(LLM, Large Language Model)能力的不断提升,AI Agent(智能体)正在从简单的对话问答,向更复杂的自动化任务执行和业务流程管理演进。在企业和开发者的实际需求中,数据库操作是最常见、最核心的场景之一。如…...

【前端】macOS 的 Gatekeeper 安全机制阻止你加载 bcrypt_lib.node 文件 如何解决

这个弹窗是 macOS 的 Gatekeeper 安全机制阻止你加载 bcrypt_lib.node 文件&#xff0c;因为它不是 Apple 签名的文件。 你想 “忽视” 它&#xff0c;其实是让系统允许这个 .node 原生模块运行&#xff0c;解决方式如下&#xff1a; sudo xattr -d com.apple.quarantine nod…...

Unity 环境搭建

Unity是一款游戏引擎&#xff0c;可用于开发各种类型的游戏和交互式应用程序。它由Unity Technologies开发&#xff0c;并在多个平台上运行&#xff0c;包括Windows、macOS、Linux、iOS、Android和WebGL。Unity也支持虚拟现实(VR)和增强现实(AR)技术&#xff0c;允许用户构建逼…...

【入门】【练9.3】 加四密码

| 时间限制&#xff1a;C/C 1000MS&#xff0c;其他语言 2000MS 内存限制&#xff1a;C/C 64MB&#xff0c;其他语言 128MB 难度&#xff1a;中等 分数&#xff1a;100 OI排行榜得分&#xff1a;12(0.1*分数2*难度) 出题人&#xff1a;root | 描述 要将 China…...

使用 SASS 与 CSS Grid 实现鼠标悬停动态布局变换效果

最终效果概述 页面为 3x3 的彩色格子网格&#xff1b;当鼠标悬停任意格子&#xff0c;所在的行和列被放大&#xff1b;使用纯 CSS 实现&#xff0c;无需 JavaScript&#xff1b;利用 SASS 的模块能力大幅减少冗余代码。 HTML 结构 我们使用非常基础的结构&#xff0c;9 个 .i…...

Node.js 全栈开发方向常见面试题

Node.js 全栈开发”方向的面试题**&#xff0c;这类岗位通常包括&#xff1a; 后端&#xff1a;Node.js&#xff08;Express/Nest&#xff09;、数据库、REST API、安全、部署等 前端&#xff1a;React/Vue&#xff08;部分可能含 Next.js&#xff09;、API 调用、状态管理等 …...

Spring如何实现组件扫描与@Component注解原理

Spring如何实现组件扫描与Component注解原理 注解配置与包扫描的实现机制一、概述&#xff1a;什么是注解配置与包扫描&#xff1f;二、处理流程概览三、注解定义ComponentScope 四、核心代码结构1. ClassPathScanningCandidateComponentProvider2. ClassPathBeanDefinitionSca…...

历年四川大学计算机保研上机真题

2025四川大学计算机保研上机真题 2024四川大学计算机保研上机真题 2023四川大学计算机保研上机真题 在线测评链接&#xff1a;https://pgcode.cn/school 分数求和 题目描述 有一分数序列&#xff1a; 2 / 1 2/1 2/1, 3 / 2 3/2 3/2, 5 / 3 5/3 5/3, 8 / 5 8/5 8/5, 13 /…...

gcc符号表生成机制

符号表生成机制 我们以C语言的编译链接过程为例&#xff0c;详细讲解符号表&#xff08;Symbol Table&#xff09;的流程&#xff0c;涵盖编译和链接两个阶段。理解符号表是理解链接器如何解决符号引用&#xff08;如函数、变量&#xff09;的关键。 符号表分为两种&#xff…...

达梦数据库 Windows 系统安装教程

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家、CSDN平台优质创作者&#xff0c;高级开发工程师&#xff0c;数学专业&#xff0c;10年以上C/C, C#, Java等多种编程语言开发经验&#xff0c;拥有高级工程师证书&#xff1b;擅长C/C、C#等开发语言&#xff0c;熟悉Java常用开…...

unix/linux source 命令,其基本概念、定义、性质、定理

从计算机科学的角度,特别是形式语言、操作系统和编程语言设计的角度来看,source (或 .) 命令虽然看似简单,但其背后也蕴含着一些核心的概念、定义、性质和可以类比的“定理”(或者说,更准确地是“设计原则”或“行为模式”)。 让我们尝试从一个更理论和结构化的视角来剖…...

【Java EE初阶】计算机是如何⼯作的

计算机是如何⼯作的 计算机发展史冯诺依曼体系&#xff08;Von Neumann Architecture&#xff09;CPU指令&#xff08;Instruction&#xff09;CPU 是如何执行指令的&#xff08;重点&#xff09; 操作系统&#xff08;Operating System&#xff09;进程(process) 进程 PCB 中的…...

RAG理论基础总结

目录 概念 流程 文档收集和切割 读取文档 转换文档 写入文档 向量转换和存储 搜索请求构建 向量存储工作原理 向量数据库 文档过滤和检索 检索前 检索 检索后 查询增强和关联 QuestionAnswerAdvisor查询增强 高级RAG架构 自纠错 RAG&#xff08;C-RAG&#xf…...

列表推导式(Python)

[表达式 for 变量 in 列表] 注意&#xff1a;in后面不仅可以放列表&#xff0c;还可以放range ()可迭代对象 [表达式 for 变量 in 列表 if 条件]...

嵌入式RTC工作原理及应用场景

20ppm 是衡量 RTC&#xff08;实时时钟&#xff09;精度的关键指标&#xff0c;表示 每百万秒&#xff08;约11.57天&#xff09;的最大时间误差范围。以下是通俗易懂的解释&#xff1a; 1. ppm 的含义 ppm Parts Per Million&#xff08;百万分之一&#xff09; 1 ppm 1/1,…...

一天搞懂深度学习--李宏毅教程笔记

目录 1. Introduction of Deep Learning1.1. Neural Network - A Set of Function1.2. Learning Target - Define the goodness of a function1.3. Learn! - Pick the best functionLocal minimaBackpropagation 2. Tips for Training Deep Neural Network3. Variant of Neural…...

Go语言常见接口设计技巧-《Go语言实战指南》

在 Go 中&#xff0c;接口是连接代码组件的桥梁。合理设计接口可以大幅提升程序的可维护性、可扩展性和测试友好性。本章将分享 Go 开发中常见的接口设计技巧与最佳实践。 一、接口设计原则 1. 面向接口编程&#xff0c;而非面向实现编程 尽量使用接口类型作为函数参数或返回值…...

python打卡训练营打卡记录day43

复习日 作业&#xff1a; kaggle找到一个图像数据集&#xff0c;用cnn网络进行训练并且用grad-cam做可视化 进阶&#xff1a;并拆分成多个文件 数据集来源&#xff1a;Flowers Recognition 选择该数据集原因&#xff1a; 中等规模&#xff1a;4242张图片 - 训练快速但足够展示效…...

Camera相机人脸识别系列专题分析之十一:人脸特征检测FFD算法之低功耗libvega_face.so人脸属性(年龄,性别,肤色,微笑,种族等)检测流程详解

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:Camera相机人脸识别系列专题分析之十:人脸特征检测FFD算法之低功耗libvega_face.so人脸识别检测流程详解 这一篇我们开始讲: Camera相机人脸识别系列专题分析之十一:人脸特征检测FFD算法之低功耗lib…...

解决:输入SSH后,仍无法通过网址登录以及紧接着的新问题Permission denied(publickey,password).

现象&#xff1a; 管理员: Windows PowerShell输入SSH后&#xff0c;仍无法通过网址登录 例如输入你的ssh命令&#xff1a;ssh -CNg -L xxxx:127.0.0.1:xxxx rootaaaaaaaaa.com -p yyyyy 得到终端提示&#xff1a;ssh无法识别为 cmdlet、函数、脚本文件或可运行程序的名称。 解…...

【QT控件】QWidget 常用核心属性介绍 -- 万字详解

目录 一、控件概述 二、QWidget 核心属性 2.1 核心属性概览 2.2 enabled ​编辑 2.3 geometry 2.4 windowTitle 2.5 windowIcon 使用qrc文件管理资源 2.6 windowOpacity 2.7 cursor 2.8 font ​编辑 2.9 toolTip 2.10 focusPolicy 2.11 styleSheet QT专栏&…...

uniapp-商城-77-shop(8.2-商品列表,地址信息添加,级联选择器picker)

地址信息,在我们支付订单上有这样一个接口,就是物流方式,一个自提,我们就显示商家地址。一个是外送,就是用户自己填写的地址。 这里先说说用户的地址添加。需要使用到的一些方式方法,主要有关于地址选择器,就是uni-data-picker级联选择。 该文介绍了电商应用中地址信息处…...

HTTPS加密通信详解及在Spring Boot中的实现

HTTPS&#xff08;Hyper Text Transfer Protocol Secure&#xff09;是HTTP的安全版本&#xff0c;通过SSL/TLS协议为通讯提供加密、身份验证和数据完整性保护。 一、HTTPS核心原理 1.加密流程概述 客户端发起HTTPS请求&#xff08;连接到服务器443端口&#xff09;服务器返…...

如何让 Git 停止跟踪文件?停止后又如何恢复跟踪?

在使用 Git 管理代码时&#xff0c;有时我们希望某些文件不再被 Git 跟踪&#xff08;比如本地配置文件、临时文件等&#xff09;&#xff0c;但保留这些文件在本地&#xff1b;过了一段时间&#xff0c;可能又需要恢复跟踪这些文件。本文将用通俗易懂的语言&#xff0c;教你如…...