gpt4 book ai didi

c# - 针对特定任务修改洪水填充算法

转载 作者:太空宇宙 更新时间:2023-11-03 13:42:18 25 4
gpt4 key购买 nike

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

enter image description here

现在,我想要做的是只有当 2 个或更多相邻的图 block 具有相同颜色时图 block 才会消失。我使用了洪水填充算法来破坏瓷砖。如何修改此代码,使其仅在某些计数值大于 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再破坏,不会破坏前两 block 。
  • 如果我使用另一种方法来检查图 block 是否可破坏,它会在计数时将 blockValues 设置为 0。

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

最佳答案

好吧,我找到了答案。

在我调用我的 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);

关于c# - 针对特定任务修改洪水填充算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16536680/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com