处理基于图块的系统中大于1个图块的对象

时间:2017-02-11 13:19:24

标签: c# grid-layout

我有一个二维int数组,它存储不同颜色的块,它们基于int值,例如1 =蓝色,2 =绿色。

到目前为止我没有任何问题,一切都只是单个瓷砖,但是当我来到更大的瓷砖时,我似乎无法解决我的问题。重点在于,在我的游戏中,每当4个或更多块(相同颜色)聚集在一起时,它们就形成了一个更大的块。例如,一块2x2的蓝色块。我该如何处理呢?我似乎无法想出一个解决方案,甚至不是一个低效的解决方案。我想过制作一个二维“块”数组而不是包含颜色值和“isinblock”bool来指定​​它是更大块的一部分,但我似乎无法想到之后的解决方案。

在这种情况下,一个例子可能会澄清我的意思:

int[][] blockGrid = {{0, 0, 0, 0},
                     {0, 0, 0, 0},
                     {0, 0, 0, 0},
                     {0, 1, 0, 0}  };

没有问题。我通过数组并正常绘制/更新磁贴。 但是在这里:

int[][] blockGrid = {{0, 0, 0, 0},
                     {0, 0, 0, 0},
                     {0, 1, 1, 0},
                     {0, 1, 1, 0}  };

这对我来说变得更加复杂。因为代码飙升这些只是4个不同的区块,但是我想将它们“融合”成一个2x2区块,它具有不同的属性,例如下面的2个空格需要自由地向下移动,更高的分数得到奖励当它被清除并具有不同的精灵。我后来还需要在它周围(水平和垂直)找到该块的任何匹配颜色,但这不是我想象的问题,将非常类似于我如何为单个块执行它,除非方法实现2x2 +块与我目前的方法有很大不同。 我还想补充一点,这应该不仅适用于2x2,而且适用于5x5等,所以我正在寻找解决此问题的通用案例场景。

提前谢谢你,我希望我能够清楚地解释我的问题。

0 个答案:

没有答案