11. C++实现扫雷

一、前言

本文详解如何使用C/C++完成扫雷游戏的开发,使用的依旧是EGE库,需要自己提前配置好。

不会配置的可以参考这两篇文章:制作推箱子小游戏引入EGE库

如果已经忘了扫雷游戏的规则,可以自己先玩一玩:扫雷

和以前写过的其它游戏一样,它依旧是一个二维游戏,所以第一时间依旧是想到用二维数组来表示游戏逻辑。

大体运行逻辑如下:

  1. 使用二维数组保存每个格子的相关信息。
  2. 每次点击执行相关的行为,实际上都是在操控这个二维数组。
  3. 将二维数组实时绘制到屏幕上。

项目源码可以自行到文末获取,本文属于进阶内容,只讲解一些要点、难点。

最终成品的效果如下:

image-20231127163611411

二、代码概述

代码一共250行左右,并不多,这里简单看一下结构:

image-20231127151251675

整体可以分为三个部分:

  1. 结构体、枚举:用于表示游戏中的相关数据信息
  2. 图片:用于绘制到屏幕的资源
  3. 函数:游戏的执行逻辑

其中结构体与枚举、以及图片,直接在这里简单说一下就行了。

首先是结构体Point,这是为了方便代码使用,用于存储x、y坐标的,没有其它内容:

image-20231127151554360

然后是最重要的Cell结构,它被用来表示一个格子,因为扫雷游戏分解下来,其实就是二维数组嘛,每一个点都可以将其看做一个格子,也就是这个结构体:

image-20231127151720533

这个结构体中存放着两个东西,其一是状态:

image-20231127151833318

这里的unknow就是没有打开时的状态,open就是打开后的状态,还有排雷的exculde状态,以及点到炸弹后的爆炸状态blast

这些状态都是为了方便后面绘图时知道应该给这个格子贴什么图片。

作者:余识
全部文章:0
会员文章:0
总阅读量:0
c/c++pythonrustJavaScriptwindowslinux