gpt4 book ai didi

Java Tetris - 遍历双数组

转载 作者:行者123 更新时间:2023-11-29 06:38:49 25 4
gpt4 key购买 nike

我正在构建俄罗斯方 block 并尝试实现一种方法,该方法遍历图 block 的 grid[][] 并检查每行的每一列,从底部开始,向上工作(认为它会更快检查如果我从底部开始,因为那是需要清除大多数行的地方)。

我对此的理解是 - 创建一个双循环,对于每一行,检查该行中的所有列是否已满(不为空)。如果是,我将实现清除(这实际上是设置当前行 = 上面的行)。现在,我只是想输出“Full”。

我的 System.out.println(grid[row][col] + ", " + row + ", " + col);检查正确显示它从底行开始,然后迭代每一列......但是 if (grid[row][col] != null) { check 似乎没有停留在那一行......

public void checkBottomFull() {
int columnsFilled = 0;
//loops through rows only after each column has finished
for(int row = grid.length-2; row > 0; row--) {
//loops through all columns per row, then row decrements
for(int col = 0; col < grid[row].length; col++) {
System.out.println(grid[row][col] + ", " + row + ", " + col);
if (grid[row][col] != null) {
columnsFilled++;
if (columnsFilled == grid.length-1) {
System.out.println("full");
}
}
}
}
}

有什么想法吗?


编辑

public void checkBottomFull() {
for(int row = grid.length-1; row >= 0; row--) {
//loops through columns of each individual row
if (isFull(row)) {
System.out.println("full");
clearRow(row);
}
}
}

public boolean isFull(int row) {
for (int col = 0; col < grid[row].length-1; col++) {
if(grid[row][col] == null) {
System.out.println(grid[row][col] + "... " + row + ", " + col);
return false;
}
}
return true;
}

public void clearRow(int row) {
for (int col = 0; col < grid[row].length-1; col++) {
System.out.println("clearing...");
grid[row][col] = grid[row-1][col];
}
}

System.out.println(grid[row][col] + "... " + row + ", " + col);输出:为什么列不递增?

null... 9, 0
null... 8, 0
null... 7, 0
null... 6, 0
null... 5, 0
null... 4, 0
null... 3, 0
null... 2, 0
null... 1, 0
null... 0, 0

最佳答案

这里有几个问题:

  1. 您应该将 int columnsFilled = 0 移到外部 for 循环中,因为它应该仅检查当前行。就像现在一样,超过第一行后计数将不正确。
  2. 您正在检查 if (columnsFilled == grid.length-1) 而实际上这应该是 if (columnsFilled == grid[row].length-1)。您的检查会将填充的列数与行数进行比较,而不是将其与给定行中的列数进行比较。

关于Java Tetris - 遍历双数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15746805/

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