我有一个二维布尔数组,用于检查列的行是否全部为真。现在,我想检查是否所有行都填入true。我希望该行全为假。然后我把价值放在我之上。然后把它推下来就像俄罗斯方块。这是我制作的伪代码。有人可以给我提示和解释如何做吗?和顺便说一句。如果我用true填充SECOND列。恐怕无论其最低列值如何,第一列也会向下移动。
[SerializeField]private int columns;
[SerializeField]private int rows;
private bool[,] grid;
private bool isRowTrue = true;
private int gridColumnCount = 0;
private int gridRowCount = 0;
private int combo = 0;
// Start is called before the first frame update
void Start()
{
grid = new bool[columns, rows];
for (int y = 0; y < grid.GetLength(1); y++)
{
for (int x = 0; x < grid.GetLength(0); x++)
{
grid[y, x] = false;
}
}
}
// Update is called once per frame
void Update()
{
CheckArrays();
}
private void CheckArrays()
{
for (int y = 0; y < grid.GetLength(1); y++)
{
for (int x = 0; x < grid.GetLength(0); x++)
{
if (grid[y, x] == false)
{
isRowTrue = false;
break;
}
}
if (isRowTrue == true)
{
Debug.Log(y + "TH Row Are All True");
for (int x = 0; x < grid.GetLength(0); x++)
{
grid[y, x] = false;
Debug.Log(grid[y, x]);
}
for (int yc = 0; yc < grid.GetLength(1); yc++)
{
for (int xc = 0; xc < grid.GetLength(0); xc++)
{
grid[yc, xc] = grid[yc - 1, xc - 1];
}
}
}
else
{
isRowTrue = true;
}
}
}
答案 0 :(得分:0)
如果您没有特定要求将其构建为2d数组,则可能更容易以面向对象的方式进行推理。例如,创建一个Row类,它将容纳一个bool数组并具有一个IsFull()方法,如果整个数组为true,则该方法将返回true。然后,您可以在上面的代码中保存Row的ArrayList。然后,您可以遍历各行,并且只要有row.IsFull()== true,就可以从列表中删除该行,这将为您带来所需的效果。