用Java实现俄罗斯方块消行问题
时间: 2024-04-14 13:31:03 浏览: 7
好的,我可以帮你用Java实现俄罗斯方块消行问题。下面是一个简单的示例代码:
```java
import java.util.Arrays;
public class TetrisGame {
private int[][] grid;
public TetrisGame(int rows, int cols) {
grid = new int[rows][cols];
}
public void printGrid() {
for (int[] row : grid) {
System.out.println(Arrays.toString(row));
}
}
public boolean isRowFull(int row) {
for (int col : grid[row]) {
if (col == 0) {
return false;
}
}
return true;
}
public void clearRow(int row) {
for (int i = row; i > 0; i--) {
grid[i] = grid[i - 1];
}
grid[0] = new int[grid[0].length];
}
public void clearFullRows() {
for (int i = grid.length - 1; i >= 0; i--) {
if (isRowFull(i)) {
clearRow(i);
}
}
}
public static void main(String[] args) {
TetrisGame game = new TetrisGame(10, 10);
game.printGrid();
// Set some cells to simulate a full row
game.grid[3] = new int[]{1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
game.grid[7] = new int[]{1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
System.out.println("After setting some cells:");
game.printGrid();
System.out.println("Clearing full rows:");
game.clearFullRows();
game.printGrid();
}
}
```
这个示例代码中,我们定义了一个 `TetrisGame` 类,其中包含一个二维数组 `grid` 用于表示俄罗斯方块的游戏区域。`printGrid()` 方法用于打印当前的游戏区域,`isRowFull(int row)` 方法判断给定行是否已满,`clearRow(int row)` 方法用于清除指定行,`clearFullRows()` 方法用于清除所有满行。
在 `main` 方法中,我们创建了一个 `TetrisGame` 对象,并设置了一些格子以模拟已满的行。然后我们调用 `clearFullRows()` 方法来清除满行,并打印最终的游戏区域。
希望这个示例能够帮助到你实现俄罗斯方块消行问题。如果有任何疑问,请随时提问。