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

【C语言】扫雷游戏

Hi~!这里是奋斗的小羊,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~
💥💥个人主页:奋斗的小羊
💥💥所属专栏:C语言

🚀本系列文章为个人学习笔记,在这里撰写成文一为巩固知识,二为展示我的学习过程及理解。文笔、排版拙劣,望见谅。


目录

    • C语言实现扫雷游戏教程
      • 简介
      • 步骤
      • 示例代码
      • 总结

C语言实现扫雷游戏教程

简介

扫雷游戏是一款经典的电脑游戏,玩家需要点击方块来揭开数字,避免踩到雷。通过C语言编程实现扫雷游戏可以锻炼自己的编程能力和逻辑思维能力。

步骤

  1. 创建一个二维数组作为游戏地图,将雷和数字分别用不同的数值表示,例如雷可以用-1表示,数字可以用0表示。

  2. 随机在地图上放置一定数量的雷,可以使用rand函数生成随机数来实现。

  3. 遍历地图的每个格子,统计周围8个方向的雷的数量,将该数字填入当前格子。

  4. 编写函数来处理点击事件,当玩家点击某个方块时,根据方块的数值判断是揭开数字还是触发雷。

  5. 当玩家触发雷时,游戏结束,显示游戏结束提示信息。

  6. 当玩家没有触发雷且揭开所有数字时,游戏胜利,显示胜利提示信息。

示例代码

#include <stdio.h>
#include <stdlib.h>#define ROW 10
#define COL 10
#define MINE_NUM 10
#define MINE -1int map[ROW][COL];void initMap() {for(int i = 0; i < ROW; i++) {for(int j = 0; j < COL; j++) {map[i][j] = 0;}}for(int k = 0; k < MINE_NUM; k++) {int x = rand() % ROW;int y = rand() % COL;if(map[x][y] == MINE) {k--;} else {map[x][y] = MINE;}}for(int i = 0; i < ROW; i++) {for(int j = 0; j < COL; j++) {if(map[i][j] != MINE) {int count = 0;for(int m = -1; m <= 1; m++) {for(int n = -1; n <= 1; n++) {if(i+m >= 0 && i+m < ROW && j+n >= 0 && j+n < COL) {if(map[i+m][j+n] == MINE) count++;}}}map[i][j] = count;}}}
}void click(int x, int y) {if(map[x][y] == MINE) {printf("Game Over!\n");exit(1);} else {if(map[x][y] == 0) {// 扫描空白区域} else {// 揭开数字}}
}int main() {initMap();// 游戏主循环
}

总结

通过以上步骤,我们可以编写一个简单的扫雷游戏,玩家可以通过点击方块来揭开数字,获取游戏胜利。不过需要注意的是,以上代码只是一个简单示例,实际的扫雷游戏还需要更多功能,如计时、计分等。希望这篇教程能对您有所帮助!

相关文章:

【C语言】扫雷游戏

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f4a5;&#x1f4a5;个人主页&#xff1a;奋斗的小羊 &#x1f4a5;&#x1f4a5;所属专栏&#xff1a;C语言 &#x1f680;本系列文章为个人学习…...

逻辑蕴含、函数依赖集的闭包、Armstrong公理、属性集闭包

一、引言 Armstrong公理-从给定的函数依赖集得到关系模式的完整依赖集 二、逻辑蕴含 1、定义 设F是关系模式R上的函数依赖集&#xff0c;X、Y是R的属性子集&#xff0c;对于R的每个满足F的关系实例r&#xff0c;若函数 依赖都成立&#xff0c;则称F逻辑蕴含。 记为&#…...

macOS聚集搜索功能开启与关闭

按下command空格弹出 使用搜索 关闭搜索 sudo mdutil -a -i off 启用搜索 sudo mdutil -a -i on...

大模型“诸神之战”,落地才是赛点

ChatGPT 诞生已经快一年&#xff0c;你还在与它对话吗&#xff1f; 有的人用来写报告、改代码&#xff0c;让它成为得力帮手&#xff1b;有的人却只是“调戏”个两三回&#xff0c;让它创作诗歌或故事&#xff0c;便不再“宠幸”。 根据网站分析工具 SimilarWeb 的数据&#…...

接口重放攻击

如何保证接口安全&#xff0c;做到防篡改防重放&#xff1f;_接口防止串改-CSDN博客 接口安全设计之防篡改和防重放_接口防篡改机制-CSDN博客 基于nonce timestamp 的方案 nonce的意思是仅一次有效的随机字符串&#xff0c;要求每次请求时该参数要保证不同。实际使用用户信息…...

MySQL学习笔记-进阶篇-SQL优化

SQL优化 插入数据 insert优化 1&#xff09;批量插入 insert into tb_user values(1,Tom),(2,Cat),(3,Jerry); 2&#xff09;手动提交事务 mysql 默认是自动提交事务&#xff0c;这样会导致频繁的开启和提交事务&#xff0c;影响性能 start transaction insert into tb_us…...

【机器学习】第2章 线性回归及最大熵模型

一、概念 1.回归就是用一条曲线对数据点进行拟合&#xff0c;该曲线称为最佳拟合曲线&#xff0c;这个拟合过程称为回归。 2.一个自变量 叫 一元线性回归&#xff0c;大于一个自变量 叫 多元线性回归。 &#xff08;1&#xff09;多元回归&#xff1a;两个x&#xff0c;一个…...

科技创新对农业发展的影响

科技创新对农业发展的影响深远且广泛&#xff0c;主要体现在以下几个方面&#xff1a; 一、提高农业生产效率 引入先进的农业机械设备&#xff1a;新型农业机械设备如无人机、机器人等的应用&#xff0c;显著减轻了农民的劳动强度&#xff0c;提高了农作物的种植效率。利用精…...

Linux 常用命令 - rm 【删除文件或目录】

简介 rm 命令源于英文单词 “remove”&#xff0c;它用于删除文件或目录。rm 是 Linux 系统中最基本的命令之一&#xff0c;用于删除指定的文件或目录。默认情况下&#xff0c;rm 不会删除目录&#xff0c;但可以通过递归删除选项来实现。 使用方式 rm [选项]... [文件]...常…...

一血c++

题目描述 每一个竞赛选手都无法拒绝拿一血 "一血"其实就是同学们在榜单上看到的深绿色的标记&#xff0c;代表着某道题目&#xff0c;他是第一个通过的。 叶苡朋老师是一名资深信奥选手&#xff0c;在大学多次获奖&#xff0c;也是一个资深抢一血爱好者&#xff0…...

无问芯穹Qllm-Eval:制作多模型、多参数、多维度的量化方案

前言 近年来&#xff0c;大语言模型&#xff08;Large Models, LLMs&#xff09;受到学术界和工业界的广泛关注&#xff0c;得益于其在各种语言生成任务上的出色表现&#xff0c;大语言模型推动了各种人工智能应用&#xff08;例如ChatGPT、Copilot等&#xff09;的发展。然而…...

2024-05-31T08:36:09.000+00:00 转换 YYYY-MM-DD HH-MM-SS

function formatDate(date) {// 处理ISO 8601字符串if (typeof date string) {date new Date(date);}// 处理时间戳else if (typeof date number) {date new Date(date * 1000); // 假设后端时间戳为秒&#xff0c;需要乘以1000转换为毫秒}// 自定义格式化&#xff0c;例如…...

reason: the Java file contained parse errors

今天用Maven打包项目时发生一个错误&#xff1a; file: D:\workspace\echoo2.0-xxx-xxx-portal\src\main\java\com\echoo\service\impl\DecDataServiceImpl.java; reason: the Java file contained parse errors 打包报错显示这个类解析错误 在IDEA中没有任何错误提示 问题所…...

使用密钥对登录服务器

目录 1、使用密钥文件登录服务器 2、登录成功画面&#xff1a; 3、如若出现以下状况&#xff0c;则说明密钥文件登录失败 1、使用密钥文件登录服务器 首先需要上传pem文件 2、登录成功画面&#xff1a; 3、如若出现以下状况&#xff0c;则说明密钥文件登录失败 解决方法&…...

面试_多线程

线程池 线程池的参数有哪些 线程池七大参数分别是corePoolSize、maximumPoolSize、keepAliveTime、unit、workQueue、threadFactory、handler corePoolSize&#xff1a;线程池中常驻核心线程数maximumPoolSize&#xff1a;线程池能够容纳同时执行的最大线程数keepAliveTime&…...

跨境电商必备?揭秘原生IP的作用

一、什么是原生IP&#xff1f; 原生IP&#xff08;Native IP&#xff09;是指由互联网服务提供商&#xff08;ISP&#xff09;或服务器提供商直接分配给用户的IP地址&#xff0c;这种IP地址直接与用户设备或网络相连&#xff0c;也就是指这个IP的注册地址和服务器机房所在的国…...

mysql竖表变横表不含聚合

文章目录 前言一、vertical_table二、转换1.要将其转换为横表形式&#xff0c;例如&#xff1a;2.sql 总结 前言 在MySQL中将竖表转换为横表&#xff08;也称为行转列操作&#xff09;&#xff0c;不涉及聚合函数&#xff0c;通常可以通过使用条件判断和自连接来实现。假设有一…...

application/x-www-form-urlencoded和json的区别

application/x-www-form-urlencoded 和 application/json 是两种不同的数据格式&#xff0c;常用于HTTP请求中传递数据。 它们各自的特点和使用场景如下&#xff1a; 1. application/x-www-form-urlencoded •特点&#xff1a;这是一种传统的表单提交时采用的编码类型&#x…...

oracle数据库日常保养或巡检语句实践整理汇总

目录 1.目的 2.操作工具 3.实践说明 1.检查Oracle实例状态 2.检查Oracle在线日志状态 3.检查Oracle表空间状态 4.检查Oracle所有数据文件状态 5.检查Oracle数据库连接情况 6.检查Oracle表容量占用大小 7.检查Oracle备份 8.检查数据库表空间的使用情况 4.总结 1.目的 …...

Elasticsearch 第一期:基础的基础概念

前言 Elasticsearch&#xff08;弹性搜索&#xff09; &#xff0c;简称为ES&#xff0c; 它是一个开源的高扩展的分布式全文检索引擎&#xff0c;它提供的功能主要分为&#xff1a;实时存储&#xff0c;实时分析搜索&#xff1b;本身扩展性很好&#xff0c;可以扩展到上百台服…...

MySQL数据库笔记(二)

第一章 单行函数 1.1 什么是函数 函数的作用是把我们经常使用的代码封装起来,需要的时候直接调用即可。这样既提高了代码效率,又提高了可维护性。在SQL中使用函数,极大地提高了用户对数据库的管理效率。 1.2 定义 操作数据对象。 接受参数返回一个结果。 只对一行进行…...

谷歌邮箱:2024年最全使用指南及技巧

注册谷歌邮箱时遇到麻烦了吗&#xff1f;收件箱乱得让人头疼&#xff0c;找不到提升效率的方法&#xff1f;或者是在处理多个谷歌邮箱账户时感到手忙脚乱&#xff1f; 掌握Gmail邮箱的使用技巧是每个外贸人员都必须学会的&#xff0c;本文将提供一个实用的谷歌邮箱注册和使用指…...

工业设计初学者手册——第四部分:制造工艺

工业设计初学者手册 文章目录 工业设计初学者手册第四部分&#xff1a;制造工艺7. 常见制造工艺介绍7.1 传统制造工艺7.2 现代制造工艺 8. 材料选择与应用8.1 材料的基本分类与特性8.2 材料选择的原则8.3 环保材料的应用 总结 第四部分&#xff1a;制造工艺 7. 常见制造工艺介…...

Scala语言:大数据开发的未来之星 - 零基础到精通入门指南

前言 随着大数据时代的到来&#xff0c;数据量的急剧增长为软件开发带来了新的挑战和机遇。Scala语言因其函数式编程和面向对象的特性&#xff0c;以及与Apache Spark的完美协作&#xff0c;在大数据开发领域迅速崛起&#xff0c;成为该领域的新兴宠儿。本篇将从零基础开始&…...

Springboot整合Zookeeper分布式组件实例

一、Zookeeper概述 1.1 Zookeeper的定义 Zookeeper是一个开源的分布式协调服务&#xff0c;主要用于分布式应用程序中的协调管理。它由Apache软件基金会维护&#xff0c;是Hadoop生态系统中的重要成员。Zookeeper提供了一个高效且可靠的分布式锁服务&#xff0c;以及群集管理…...

Python | 使用Matplotlib生成子图的示例

数据可视化在分析和解释数据的过程中起着举足轻重的作用。Python中的Matplotlib库提供了一个强大的工具包&#xff0c;用于制作各种图表和图表。一个突出的功能是它能够在单个图中生成子图&#xff0c;为以组织良好和结构化的方式呈现数据提供了有价值的工具。使用子图可以同时…...

云原生巡检监控报告

一、巡检概述 本次云原生巡检工作主要围绕云原生平台的稳定性、安全性以及性能进行&#xff0c;通过对平台资源的监控、日志分析以及安全扫描&#xff0c;发现了一些潜在的问题和隐患。巡检工作采用了自动化工具和人工分析相结合的方式&#xff0c;确保了巡检结果的准确性和全…...

Linux系统编程——部分内容补充

回顾 进程 内核相关数据结构 代码和数据&#xff0c;一个可执行程序加载到内存变成进程&#xff0c;不仅仅是把代码和数据加载进去就完事了&#xff0c;得“先描述&#xff0c;再组织”&#xff0c;每个进程都有内核数据结构&#xff0c;地址空间&#xff0c;进程相关页表&a…...

数学建模基础:非线性模型

目录 前言 一、非线性方程组 二、非线性规划 三、微分方程模型 四、非线性模型的应用 五、实例示范&#xff1a;传染病传播模型 实例总结 五、总结 前言 非线性模型用于描述变量之间的非线性关系&#xff0c;相比线性模型&#xff0c;其数学形式更为复杂&#xff0c;但…...

Kotlin 语言基础学习

什么是Kotlin ? Kotiln翻译为中文是:靠他灵。它是由JetBrains 这家公司开发的,JetBrains 是一家编译器软件起家的,例如常用的WebStorm、IntelliJ IDEA等软件。 Kotlin官网 JetBrains 官网 Kotlin 语言目前的现状: 目前Android 已将Kotlin 作为官方开发语言。 Spring 框…...

WordPress好像微博一样插件/seo在线推广

本文为joshua317原创文章,转载请注明&#xff1a;转载自joshua317博客 Java中创建String对象的两种方式 - joshua317的博客 Java中创建String对象的两种方式 一、Java中创建String对象的两种方式 //方式一&#xff1a;通过字符串常量的方式 String str1 "joshua317&qu…...

怎么做网站站长/seo搜索引擎优化就业前景

现在主流的网站开发语言无外乎asp、php、asp.net、jsp等。 网页从开始简单的hmtl到复杂的服务语言&#xff0c;走过了10多个年头&#xff0c;各种技术层出不穷&#xff0c;单个的主流技术也在不断翻新的版本&#xff0c;现在分析下各种语言的区别、优势、劣势、开发注意事项&am…...

wordpress 流程/找资源

我在编写PHP时遇到麻烦.我有一个JavaScript / jQuery HTML5页面使用$.post与我的PHP脚本交互.但是,PHP面临着一个奇怪的问题,可能与编码有关.当我写作htmlentities("")我希望PHP输出& iacute;.然而,它输出& Atilde;& shy;一开始,我认为我在编码方面犯了一…...

wordpress首显示全文页/seo优化网站的手段

各位Gopher们&#xff0c;因疫情影响&#xff0c;北京不允许举办大型线下活动&#xff0c;我们在征询过部分Gopher的意见后&#xff0c;决定取消今年的线下大会。对此&#xff0c;我们感到非常遗憾&#xff01;但各位Gopher也别太过伤心和惋惜&#xff0c;好事多磨&#xff0c;…...

wordpress theme kerea/百度推广seo自学

从上家公司离职已经快半年了&#xff0c;与蓝牙打了一年的交道&#xff0c;从小白一个到略知一二。最近在整理上一家公司做的一些项目&#xff0c;突发奇想&#xff0c;自己封装一个蓝牙库&#xff0c;方便以后的使用。说干就干&#xff0c;如果需要项目代码&#xff0c;猛击这…...

需要建设网站的/产品推广策划书

西雅图IT圈&#xff1a;seattleit【今日作者】Dexter读书巨慢理事会会长即使放眼全球&#xff0c;Facebook可能也是2018年最不走运的公司。社交巨头Facebook在2018年成为科技圈最招黑的公司&#xff0c;没有之一。用“负面新闻缠身”已经不足以形容了。事实上&#xff0c;Faceb…...