一、前言
本文详解如何使用C/C++完成扫雷游戏的开发,使用的依旧是EGE库,需要自己提前配置好。
不会配置的可以参考这两篇文章:制作推箱子小游戏、引入EGE库。
如果已经忘了扫雷游戏的规则,可以自己先玩一玩:扫雷。
和以前写过的其它游戏一样,它依旧是一个二维游戏,所以第一时间依旧是想到用二维数组来表示游戏逻辑。
大体运行逻辑如下:
- 使用二维数组保存每个格子的相关信息。
- 每次点击执行相关的行为,实际上都是在操控这个二维数组。
- 将二维数组实时绘制到屏幕上。
项目源码可以自行到文末获取,本文属于进阶内容,只讲解一些要点、难点。
最终成品的效果如下:
二、代码概述
代码一共250行左右,并不多,这里简单看一下结构:
整体可以分为三个部分:
- 结构体、枚举:用于表示游戏中的相关数据信息
- 图片:用于绘制到屏幕的资源
- 函数:游戏的执行逻辑
其中结构体与枚举、以及图片,直接在这里简单说一下就行了。
首先是结构体Point
,这是为了方便代码使用,用于存储x、y坐标的,没有其它内容:
然后是最重要的Cell
结构,它被用来表示一个格子,因为扫雷游戏分解下来,其实就是二维数组嘛,每一个点都可以将其看做一个格子,也就是这个结构体:
这个结构体中存放着两个东西,其一是状态:
这里的unknow
就是没有打开时的状态,open
就是打开后的状态,还有排雷的exculde
状态,以及点到炸弹后的爆炸状态blast
。
这些状态都是为了方便后面绘图时知道应该给这个格子贴什么图片。