2

我正在尝试制作一个基于瓷砖的游戏,其中瓷砖填充有随机颜色,如果用户点击一个瓷砖,它就会消失。这我已经完成了。

在此处输入图像描述

现在,我想做的是只有当 2 个或更多相邻的瓷砖具有相同的颜色时,瓷砖才会消失。我已经使用洪水填充算法来破坏瓷砖。如何修改此代码,使其仅在某个计数值大于 2 时才起作用。

这是破坏瓷砖的代码:

 private void Destroy(int x,int y,int old_Value,int new_Value)
    {
        if (GameArr[x,y].BlockValue == old_Value)
        {
            //if some count > 2 then only
            GameArr[x, y].BlockValue = 0;

            Destroy(x + 1, y, old_Value, new_Value);
            Destroy(x - 1, y, old_Value, new_Value);
            Destroy(x, y + 1, old_Value, new_Value);
            Destroy(x, y - 1, old_Value, new_Value);

        }
    }

我如何获得这个计数值?

  • 如果我在方法本身中传递一个计数变量并检查值是否超过 2 然后销毁,它不会销毁前两个图块。
  • 如果我用另一种方法检查瓷砖是否可破坏,它会在计数时将 blockValues 设置为 0。

我该怎么做。任何帮助,将不胜感激。

4

1 回答 1

1

好吧,我找到了答案。

在调用我的 Destroy 方法之前要检查计数值

if (GameArr[i - 1, j].BlockValue == old_Value) count++;
       if (GameArr[i, j - 1].BlockValue == old_Value) count++;
       if (GameArr[i + 1, j].BlockValue == old_Value) count++;
       if (GameArr[i, j + 1].BlockValue == old_Value) count++;

       if(count>2)
            Destroy(i, j,GameArr[i,j].BlockValue,0);
于 2013-05-14T07:38:36.900 回答