获取相同类型的对象 - Match 3 Style Game

时间:2014-01-25 23:54:07

标签: java libgdx box2d

当用户选择一个对象(正文)时,我想搜索连接到正文的所有其他相同类型的对象。

例如,如果用户选择类型为2的对象。我想检查用户选择的对象旁边的对象,以检查它是否为类型2并在所有方向上执行此操作。向上,跨越等。

并继续前进,直到它没有更多类型的类型2。

有谁知道我怎么能这样做?

我知道我可以使用body.setUserData()来设置正文类型并查看它是什么。

任何想法?

1 个答案:

答案 0 :(得分:1)

首先是所有人。对于使用box2d进行Match-3-Game游戏而言,物理技术实在是太过分了。

其次是所有人。我建议你使用 bidimensional Array 。这样你可以用以下方法检查最近的对象:

array[x][y+1].type==type

例如。

你需要制作一个递归方法来检查每个方向。

public void getCandiesIMeanObjects(int i, int j, int type){
    if(array[i][j].type == type){
        objects.add(array[i][j]);

        if(i-1>=0) getCandiesIMeanObjects(i-1, j, type);
        if(i+1<gridwidth) getCandiesIMeanObjects(i+1, j, type);
        if(j-1>=0) getCandiesIMeanObjects(i, j-1, type);
        if(j+1<gridheight) getCandiesIMeanObjects(i, j+1, type);
    }
}

使用点击/移动的一个启动它:

getCandiesIMeanObjects(object.gridx, object.gridy, object.type);

(所有使用的字段应该是自我解释的,但是:对象是一个数组,gridwidth / height是电路板大小,类型是类型...(int,enum,你称之为),object.gridx / y是网格中对象的位置)