简易版扫雷游戏实现

news/2025/2/12 21:20:29/

前言:小伙伴们大家好,上一次我们讲解了三子棋的游戏实现今天我们一起来学习扫雷游戏的实现。

开始的设置过程和三子棋的一致,这里就不再过多赘述了。直接上代码

设计游戏

初始化数组

我们需要在一个棋盘上布置雷,在另一个棋盘上存放雷的信息。所以在实现扫雷游戏时我们需要两个二维数组来实现,为了方便实现我们可以把这两个二二维数组设置为同样大小。假设棋盘设置为9*9大小。但是为了防止在排查雷的时候出现数组越界的情况,所以初始化时要把数组设置成11*11大小。布置雷的棋盘最开始全用字符0来初始化,而存放雷的信息的数组用字符*来初始化。用函数InitBoard函数来初始化数组,与三子棋一致数组声明放在game.h中,数组的具体实现放在game.c中。同时为了好初始化数组,把‘0’和‘*’分别传过去并统统用char set接收

打印数组

初始化之后进行打印来看看效果,打印就只需要把数组遍历一下即可。用DisplayBoard函数来实现打印

初始化为了防止数组越界用11*11的大小,但此时打印室还需要11*11吗?不需要的,我们只要9*9的大小即可,所以在传参时传过去ROW,COL即可

ctrl+f5让我们一起来看看打印的结果吧

达到了想要的效果,但似乎不太好看。此时我们可以进行小小的改进加入行号和列号

改进后的打印效果

这个就比之前的看起来更加美观

设置雷

(๑‾ ꇴ ‾๑)好哒终于来到了布置雷的部分。还记得我们刚开始设置的两个二维数组吗?char mine数组是为了布置雷,char show数组是为了存放雷的信息。这里设置雷,要用到哪个数组呢?没错,就是char mine数组用FineMine函数来进行布置雷。在开始设置雷之前我们需要先确定雷的数量,同时雷的数量又是容易更改的。所以我们需要在game.h中用define来定义雷的数量同时在game.c中用count来接收。同时利用rand函数来随机设置x,y但又要使设置坐标符合数组的行列,所以x=rand()%row+1,y=rand()%col+1。

在打印一下下看看效果吧

排查雷

排查雷的话先是在mine数组中进行排查,排查到雷就打印出布置雷的位置并提示玩家游戏失败。没有排查到雷返回雷周围八个坐标的值把排查结果放在show数组中。简单分析即可,上代码

测试结果

为了方便好测试,将EASY_COUNT的值设置为80,来看看效果吧

结束

以上就是扫雷游戏实现的所有步骤,创作不易还望老铁们点个关注,么么哒


http://www.ppmy.cn/news/22930.html

相关文章

ABB机器人安全板硬件功能介绍+接线方法示例

ABB机器人安全板硬件功能介绍+接线方法示例 ABB机器人有以下几种硬件停止功能,这些均属于EN 13849-1中描述的安全类别3,该安全类别是双通道发起的停止,如果发生单通道故障(例如接线不良),则会发生安全链报警。 ES1,ES2紧急停止;AS1,AS2自动模式停止(一般连接安全门、光…

Vue-VueRouter

前言 Vue Router 是 Vue.js (opens new window)官方的路由管理器。它和 Vue.js 的核心深度集成,让构建单页面应用变得易如反掌。包含的功能有: 嵌套的路由/视图表模块化的、基于组件的路由配置路由参数、查询、通配符基于 Vue.js 过渡系统的视图过渡效果…

Openharmony的用户态应用通过HDF框架驱动消息机制实现的通信实例

承接上文一个例子了解通过Openharmony的HDF框架实现简易驱动的流程,实现到了test_hdf_newdevice1设备的驱动。应用或服务如何与此设备通过HDF的框架的驱动消息机制,进行通信?依旧以Openharmony中的V3.1 版本为基座,编写测试代码来…

Ajax 原生请求方法

<html> <head> <script type"text/javascript" src"/jquery/jquery.js"></script> <script type"text/javascript"> //创建XMLHttpRequest 对象 //参数&#xff1a;无 //返回值&#xff1a;XMLHttpRequest 对象 f…

AC耦合电容位置对信号的影响

AC耦合电容位置对信号的影响 上期文章说到&#xff0c;电容焊盘对整个无缘通道的影响&#xff0c;仿真观察了焊盘大小&#xff0c;焊盘参考层掏空尺寸&#xff0c;以及具体参考哪一层。 单从焊盘这一点来看&#xff0c;可以看到阻抗一般会比较小&#xff0c;但是对信号未必造…

支付系统核心架构设计思路(万能通用)

文章目录1. 支付系统总览核心系统交互业务图谱2. 核心系统解析交易核心交易核心基础交易类型抽象多表聚合 & 订单关联支付核心支付核心总览支付行为编排异常处理渠道网关资金核算3. 服务治理平台统一上下文数据一致性治理CAS校验幂等 & 异常补偿对账准实时对账DB拆分异…

【C++提高编程】list 容器详解(附测试用例与结果图)

目录1. list容器1.1 list基本概念1.2 list构造函数&#xff08;初始化&#xff09;1.3 list 赋值和交换1.4 list 大小操作1.5 list 插入和删除1.6 list 数据存取1.7 list 反转&#xff08;reverse&#xff09;、排序&#xff08;sort&#xff09;和去重&#xff08;unique&…

PyQt6-QTextEdit学习笔记

一、概述技术PyQt6中QTextEdit控件的基本用法。QTextEdit是一个先进的所见即所得查看器/编辑器&#xff0c;支持使用html风格标签或Markdown格式的富文本格式。它经过优化&#xff0c;可以处理大型文档并快速响应用户输入。QTextEdit工作在段落和字符。段落是一个格式化的字符串…