2013-05-14 32 views
2

我正在尝试制作基于瓦片的游戏,其中瓦片用随机颜色填充,并且用户单击其消失的瓦片。这我已经完成了。修改特定任务的洪水填充算法

enter image description here

现在,我想要做的是瓷砖消失仅在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); 

     } 
    } 

我如何获得这个计数值?

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

我该如何去做这件事。任何帮助,将不胜感激。

回答

0

那么我找到了我的答案。

计值进行检查之前,我打电话给我的销毁方法

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); 
+0

您可以标记该为自己回答。 – 2013-05-14 07:49:18