本文首发于公众号: 小蚂蚁教你做游戏。欢迎关注领取更多学习做游戏的原创教程资料,每天学点儿游戏开发知识。
嗨!大家好,我是小蚂蚁。
今天这篇文章分享一下三消查找算法的原理和实现,其实三消的机制最早源于《宝石方块》这款经典游戏,如今三消已经属于一个游戏品类了。
最近刚好正在制作一款宝石方块游戏,顺便讲一下其中的三消查找算法。一直以为之前写过了,找了一圈发现并没有,今天就在这里补上。
三消的查找算法都是通用的,可以用于几乎所有的三消游戏,如果你之前不知道的话,那么今天的这篇教程就可以好好的研究研究了。
三消查找的原理
![](https://img-blog.csdnimg.cn/img_convert/07554757b8095d70e6b87a28cec88a25.png)
如图,是一个典型的消除游戏的画面。这里一共有 4 种不同的宝石,图中第一行的前三个红色宝石是相邻的,满足三消的条件(相邻的 3 个宝石相同,就可以消除)。
这是我们直观看到的画面,以及通过这个画面做出的判断。但是对于计算机来讲,它看不到我们所看到的这些不同的形状和颜色宝石,它能看到的是数据。
想要用计算机编写程序实现查找算法,首先要将我们所看到的这些东西转化成计算机能够理解的数据。
![](https://img-blog.csdnimg.cn/img_convert/11a2904bd28e740708800c02e5e6aaff.png)
如图,为四个宝石分配 1,2,3,4 的四个数字,然后把这些数字填写到右侧对应的格子中,没有宝石的格子用 0 填充。
这样,我们就得到了一个计算机能看懂,而且也很擅长处理的数据表格。这个数据表格是三消查找算法的基础,后续的所有查找操作都基于这个数据表格。其实右侧的数据表格完全等同于左侧的这个由不同颜色宝石填充的表格。
第一轮检查
有了数据表格之后,就能够进行查找操作了。这里我先描述一下查找的过程:从第一个宝石开始,依次检查它的左、上、右、下,四个相邻位置的宝石,如果发现相邻位置的宝石跟自己相同,那么就记下这个宝石的位置,并且从这个宝石的位置开始,继续向同一方向检查,直到相邻位置的宝石不相同为止。如果相邻位置的宝石跟自