[益智游戏]在二维网格中寻找正方形的组合
[Puzzle Game]Finding Combination of squares in a 2D Grid
我正在制作类似 Lumines Remastered (https://www.youtube.com/watch?v=8aJqNGjLtaY&t=358s) 的游戏,并且我在其中非常成功。但是,我在清理碎片时卡在了一个地方。
我有一个 16x10 的二维数组网格,每个单独的部分都存储在其中。
我成功地使用泛洪算法找到了所有匹配的片段,并将每个相同颜色的匹配片段存储在一个单独的列表中。
现在,条件是我只想删除与其他方块组合的部分,而不是单独的部分。
例如:-
像这样。 1是正方形组合,我只想删除它们。
但是,
图中的 2 也是一个有效的正方形(因此,1 和 2 的组合应该被删除)。
我似乎无法弄清楚如何检查方形组合。
任何建议和想法都会很棒。
您可能会遍历所有单元格,并检查它们是否位于相同颜色的 2x2 正方形的底角,如果是,则标记该正方形中的所有单元格以进行删除。循环结束后,您 delete/empty 所有标记的单元格。
这也适用于较大的单元格组,因为它们由(重叠的)2x2 正方形组成。
循环时,确保在网格中的最后一行和最后一列之前停止,以避免在尝试检查下一个 row/column 时越界。
我最终采纳了@Vera 的建议并遍历整个网格并检查与当前块相邻的块是否具有相同的颜色并在 2x2 配置中形成一个正方形。它适用于更大的细胞群。
for (int j = 0; j < height; j++)
{
for (int i = 0; i < width; i++)
{
if (grid[i, j].tag == grid[i + 1, j].tag && grid[i, j].tag == grid[i, j + 1].tag && grid[i, j].tag == grid[i + 1, j + 1].tag)
{
Debug.Log("It's a square piece in 2x2 config");
}
}
}
我正在制作类似 Lumines Remastered (https://www.youtube.com/watch?v=8aJqNGjLtaY&t=358s) 的游戏,并且我在其中非常成功。但是,我在清理碎片时卡在了一个地方。
我有一个 16x10 的二维数组网格,每个单独的部分都存储在其中。
我成功地使用泛洪算法找到了所有匹配的片段,并将每个相同颜色的匹配片段存储在一个单独的列表中。 现在,条件是我只想删除与其他方块组合的部分,而不是单独的部分。
例如:-
像这样。 1是正方形组合,我只想删除它们。
但是,
图中的 2 也是一个有效的正方形(因此,1 和 2 的组合应该被删除)。 我似乎无法弄清楚如何检查方形组合。 任何建议和想法都会很棒。
您可能会遍历所有单元格,并检查它们是否位于相同颜色的 2x2 正方形的底角,如果是,则标记该正方形中的所有单元格以进行删除。循环结束后,您 delete/empty 所有标记的单元格。
这也适用于较大的单元格组,因为它们由(重叠的)2x2 正方形组成。
循环时,确保在网格中的最后一行和最后一列之前停止,以避免在尝试检查下一个 row/column 时越界。
我最终采纳了@Vera 的建议并遍历整个网格并检查与当前块相邻的块是否具有相同的颜色并在 2x2 配置中形成一个正方形。它适用于更大的细胞群。
for (int j = 0; j < height; j++)
{
for (int i = 0; i < width; i++)
{
if (grid[i, j].tag == grid[i + 1, j].tag && grid[i, j].tag == grid[i, j + 1].tag && grid[i, j].tag == grid[i + 1, j + 1].tag)
{
Debug.Log("It's a square piece in 2x2 config");
}
}
}