C——数组和函数实践:扫雷

news2025/5/10 19:00:51

此篇博客介绍用C语言写一个扫雷小游戏,所需要用到的知识有:函数、数组、选择结构、循环结构语句等。

所使用的编译器为:VS2022。

一、扫雷游戏是什么样的,如何玩扫雷游戏?

如图,是一个标准的扫雷游戏初始阶段。由此我们可以看出,开局,系统会给我们一个“雷区”,并展示给玩家们看。每一次“扫雷”,就是点击对应的方格。

若玩家点击的方格里没有埋雷,方格处就会显示它周围一圈方格(去心的3x3九宫格)的雷的数量,而当周围一圈方格里都没有埋雷,系统就会对更大的无雷范围进行清扫;

若玩家点击的地方有雷,则游戏失败。

从上面我们可以得到一下信息:

1.游戏开始,系统会布置好一个雷区并展示给玩家看。

2.玩家每点击一个方格就是排一次雷。

3.玩家点击某一出方格后,系统会自动判定此处有无雷。

4.如果没雷,则游戏继续,否则游戏失败。

5.排雷至整个雷区清空,则玩家胜利,游戏结束。

由这些信息我们可以得出相对应的流程:

1.创建雷区,初始化雷区。

2.布置好雷区并展示给玩家看。

3.玩家开始扫雷。

下面,我们来看看如何具体实现。

二、扫雷游戏的具体实现

1.准备工作

首先,我们需要创建一个test函数来实现游戏刚开始的进程,并在游戏开始的时候,打印一个游戏菜单,以便玩家操作。我们创建一个meun函数来实现菜单。

玩家输入1,即可开始游戏。然后我们创建一个game函数来实现游戏的进程。

2.创建和初始化雷区

因为玩家扫雷时有两种扫雷情况,一种是没扫到雷,游戏继续;一种是扫到雷,游戏失败。所以我们需要创建两个雷区,一个是用来布置真正的雷,另一个则是表面上没有雷。玩家在展示的雷区中选择扫雷的位置,而对扫雷的判断只需要核对另一个雷区的相应位置上是否有雷。

我们分别创建两个相同大小的9x9的二维数组当作雷区,并规定:在二维数组中字符“ * ”代表待排区域,字符“ 0 ”代表非雷,字符“ 1 ”代表雷。

我们用InitBoard函数来初始化雷区。

3.将布置好的雷区展示给玩家看

我们用SetMine函数来布置雷区。默认雷区共有十颗雷。

然后,我们创建一个DisplayBoard函数来打印雷区。

4.玩家扫雷

玩家扫雷的过程可分为:

  1. 玩家输入要在雷区中扫雷的坐标;

  2. 系统判断坐标处是否有雷;

  3. 有雷则游戏结束;无雷,则显示,周围清空=雷的数量。

我们创建一个test.c函数来实现扫雷。同时创建一个GetMineCoun含函数来计算雷的数量,再创建一个FindMine函数来排查雷区。

三、代码汇总

test.c文件 - 存放游戏的主体代码

game.h文件 - 存放所有头文件、宏定义和函数的声明

game.c文件 - 存放所有函数的本体

四、运行结果

以上就是扫雷游戏用C语言来实现的相关内容。

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

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

相关文章

sui在windows虚拟化子系统Ubuntu和纯windows下的安装和使用

一、sui在windows虚拟化子系统Ubuntu下的安装使用(WindowsWsl2Ubuntu24.04) 前言:解释一下WSL、Ubuntu的关系 WSL(Windows Subsystem for Linux)是微软推出的一项功能,允许用户在 Windows 系统中原生运行…

智能合约在去中心化金融(DeFi)中的核心地位与挑战

近年来,区块链技术凭借其去中心化、不可篡改等特性,在全球范围内掀起了技术革新浪潮。去中心化金融(DeFi)作为区块链技术在金融领域的重要应用,自 2018 年以来呈现出爆发式增长态势。据 DeFi Pulse 数据显示&#xff0…

有关SOA和SpringCloud的区别

目录 1. 定义 2. 架构风格 3. 技术栈 4. 服务交互 5. 适用场景 前言 面向服务架构(SOA)是一种软件设计风格,它将应用程序的功能划分为一系列松散耦合的服务。这些服务可以通过标准的通信协议进行交互,通常是HTTP或其他消息传…

学习搭子,秘塔AI搜索

什么是秘塔AI搜索 《秘塔AI搜索》的网址:https://metaso.cn/ 功能:AI搜索和知识学习,其中学习部分是亮点,也是主要推荐理由。对应的入口:https://metaso.cn/study 推荐理由 界面细节做工精良《今天学点啥》板块的知…

IBM BAW(原BPM升级版)使用教程第六讲

续前篇! 一、事件:Undercover Agent 在 IBM Business Automation Workflow (BAW) 中,Undercover Agent (UCA) 是一个非常独特和强大的概念,旨在实现跨流程或系统的事件处理和触发机制。Undercover Agent 主要用于 事件驱动的流程…

高并发PHP部署演进:从虚拟机到K8S的DevOps实践优化

一、虚拟机环境下的部署演进 1. 低并发场景&#xff08;QPS<10&#xff09;的简单模式 # 典型部署脚本示例 ssh userproduction "cd /var/www && git pull origin master" 技术痛点&#xff1a; 文件替换期间导致Nginx返回502错误&#xff08;统计显示…

VBA高级应用30例应用4:利用屏蔽事件来阻止自动运行事件

《VBA高级应用30例》&#xff08;版权10178985&#xff09;&#xff0c;是我推出的第十套教程&#xff0c;教程是专门针对高级学员在学习VBA过程中提高路途上的案例展开&#xff0c;这套教程案例与理论结合&#xff0c;紧贴“实战”&#xff0c;并做“战术总结”&#xff0c;以…

Centos 7.6 安装 Node.js 20 的环境配置记录

Centos 7.6 安装 Node.js 20 的环境配置记录 Centos 7在 2024 年的 6 月 30 号已经停止维护了&#xff0c;但是由于时代原因&#xff0c;很多服务还是跑在这个系统上。本篇博文记录如何在 Centos 7.6 上安装 Node20。 初步安装 node 下载 node.js 的 Linux 版本 cd ~ curl -O h…

springboot3 + mybatis-plus3 创建web项目实现表增删改查

Idea创建项目 环境配置说明 在现代化的企业级应用开发中&#xff0c;合适的开发环境配置能够极大提升开发效率和应用性能。本文介绍的环境配置为&#xff1a; 操作系统&#xff1a;Windows 11JDK&#xff1a;JDK 21Maven&#xff1a;Maven 3.9.xIDE&#xff1a;IntelliJ IDEA…

【人工智能学习之动作识别TSM训练与部署】

【人工智能学习之动作识别TSM训练与部署】 基于MMAction2动作识别项目的开发一、MMAction2的安装二、数据集制作三、模型训练1. 配置文件准备2. 关键参数修改3. 启动训练4. 启动成功 ONNX模型部署方案一、环境准备二、执行转换命令 基于MMAction2动作识别项目的开发 一、MMAct…

sqli-labs靶场18-22关(http头)

目录 less18&#xff08;user-agent&#xff09; less19&#xff08;referer&#xff09; less20&#xff08;cookie&#xff09; less21&#xff08;cookie&#xff09; less22&#xff08;cookie&#xff09; less18&#xff08;user-agent&#xff09; 这里尝试了多次…

Android系统架构模式分析

本文系统梳理Android系统架构模式的演进路径与设计哲学&#xff0c;希望能够借此探索未来系统的发展方向。有想法的同学可以留言讨论。 1 Android层次化架构体系 1.1 整体分层架构 Android系统采用五层垂直架构&#xff0c;各层之间通过严格接口定义实现解耦&#xff1a; 应用…

Web前端VSCode如何解决打开html页面中文乱码的问题(方法2)

Web前端—VSCode如何解决打开html页面中文乱码的问题&#xff08;方法2&#xff09; 1.打开VScode后&#xff0c;依次点击 文件 >> 首选项 >> 设置 2.打开设置后&#xff0c;依次点击 文本编辑器 >> 文件&#xff08;或在搜索框直接搜索“files.autoGuessEnc…

单调栈模版型题目(3)

单调栈型题目贡献法 基本模版 这是数组a中的 首先我们要明白什么叫做贡献&#xff0c;在一个数组b{1,3,5}中&#xff0c;连续包含1的连续子数组为{1}&#xff0c;{1,3}&#xff0c;{1,3,5}&#xff0c;一共有三个&#xff0c;这三个数一共能组成6个连续子数组&#xff0c;而其…

ts axios中报 Property ‘code‘ does not exist on type ‘AxiosResponse<any, any>‘

ts语法有严格的格式&#xff0c;如果我们在处理响应数据时&#xff0c;出现了axios响应中非默认字段&#xff0c;就会出现标题那样的警告&#xff0c;我们可以通过创建axios.dt.ts解决这个问题 下面是我在开发中遇到的警告&#xff0c;code并不是axios默认返回的字段&#xff0…

[AI Tools] Dify 工具插件上传指南:如何将插件发布到官方市场

Dify 作为开源的 LLM 应用开发平台,不仅支持本地化插件开发,也提供了插件市场机制,让开发者能够将自己构建的插件发布并供他人使用。本文将详细介绍如何将你开发的 Dify Tools 插件上传至官方插件市场,包括 README 编写、插件打包、仓库 PR 等核心步骤。 一、准备 README 文…

用react实现一个简单的三页应用

下面是一个使用 React Router 的简单示例&#xff0c;演示了如何在 React 应用中实现页面之间的导航。 &#x1f6e0;️ 第一步&#xff1a;使用 Vite 创建项目 npm create vitelatest my-router-app -- --template react cd my-router-app npm install&#x1f680; 第二步&a…

Go使用Gin写一个对MySQL的增删改查服务

首先用SQL创建一个包含id、name属性的users表 create table users (id int auto_incrementprimary key,name varchar(255) null );查询所有用户信息&#xff1a; func queryData(db *sql.DB, w http.ResponseWriter) {rows, err : db.Query("SELECT * FROM users"…

Xcode16.3配置越狱开发环境

首先先在https://developer.apple.com/xcode/resources/ 这里面登陆Apple账号&#xff0c;然后访问url下载 https://download.developer.apple.com/Developer_Tools/Xcode_16.3/Xcode_16.3.xip 1、安装theos https://theos.dev/docs/installation-macos 会安装到默认位置~/th…

SCADA|KIO程序导出变量错误处理办法

哈喽,你好啊,我是雷工! 最近在用KingSCADA3.52版本的软件做程序时,在导出变量进行批量操作时遇到问题,现将解决办法记录如下。 以下为解决过程。 01 问题描述 在导出KIO变量时,选择*.xls格式和*.xlsx时均会报错: 报如下错误: Unknown error 0x800A0E7A ADODB Connectio…