Skip to content

《消灭星星》实现指南

屏幕录制 2024-01-21 210204.mp4

今天要分享的是消灭星星如何开发,这种消除游戏算是非常简单的一种类型。消灭星星游戏是一种简单而有趣的游戏类型,我会详细介绍如何开发一款消灭星星游戏。

算法逻辑

消灭星星游戏的算法涉及到多个方面,包括星星的生成、消除规则、玩家操作的响应等。以下是一些会用到的算法:

  1. 星星生成算法:
    • 随机生成:在游戏开始或关卡切换时,随机生成星星的位置和属性,属性主要是类型,不同类型可以设置不同的星星颜色。
    • 规定生成:按照一定的规则,例如在特定位置生成特殊类型的星星,或者确保每个生成的星星都能够被消除。

我这里采用比较简单的方式,地图采用1010的二维数组,作为星星存放的位置,每个星星的宽度是7575。一共有5种颜色类型的星星。

生成逻辑也简单粗暴,直接看代码,颜色类型是随机的,初始化填满地图,10*10,然后缓存到一个对象上供后面使用,实例化的starTile父元素是容器。

js
function initializeStarTiles() {
    for (var col = 0; col < this.iTileCols; col++) {
        this.pMatriColTile[col] = [];

        for (var row = 0; row < this.iTileRows; row++) {
            var starTile = cc.instantiate(this.starTilePrefab);
            starTile.parent = this.elementLayer;

            var tileComponent = starTile.getComponent(_);
            tileComponent.setColRow(col, row);

            var randomColorType = parseInt(5 * Math.random());
            tileComponent.setColorType(randomColorType);

            if (!this.starTileSize) {
                this.starTileSize = starTile.getContentSize();
            }

            starTile.setPosition(this.calcStarTilePos(col, row));
            this.pMatriColTile[col][row] = starTile;
        }
    }
}

设置颜色类型的时候,顺便设置一下对应颜色的纹理,预制体的纹理如下:

  1. 星星消除规则:
    • 相邻匹配:判断星星是否相邻,如果相邻并符合消除规则(如两个或以上相同颜色的星星相连),则进行消除。
    • 检测连锁反应:消除后,检测是否形成新的匹配,从而触发连锁反应,可以有也可以没有,有的话游戏的节奏感会更好。

我没有做深入的连锁反应逻辑处理,只做了简单的相邻匹配,这个算法比较简单,就是与当前选择的星星上下左右的星星比较颜色,如果一样则可以被消除。采用递归算法即可简单实现,具体可以参考下面的代码:

💞加入社群,可阅读全部会员文档。 如果你已经加入社群,请在社群私信我