gpt4 book ai didi

Java Tetris - 奇怪的行清除问题

转载 作者:行者123 更新时间:2023-12-02 07:03:41 24 4
gpt4 key购买 nike

我在俄罗斯方 block 中清除行时遇到了一些奇怪的事情......

如果我将板的宽度和高度设置为相同(10 和 10):

board = new Board(10, 10, 35);

由以下因素决定:

public Board(int w, int h, int ts) {
width = w;
height = h;
tilesize = ts;
grid = new Tile[width][height];
...
}

public int getWidth() {
return width * tilesize;
}

public int getHeight() {
return height * tilesize;
}

行清除似乎工作正常(尽管,我不确定为什么它下面有一个隐藏行......它不应该完美地融入 JFrame 吗?):

enter image description here enter image description here

但是如果我以不同的方式设置宽度和高度(这里是 10 和 12),行将不会清除。

board = new Board(10, 12, 35);

enter image description here

行清除:

public void checkBottomFull() {
System.out.println(grid.length);
int lines = 0;
for(int row = grid.length-1; row >= 0; row--) {
while (isFull(row)) {
lines++;
clearRow(row);
}
}
}

public boolean isFull(int row) {
for (int col = 0; col <= grid[row].length-1; col++) {
while(grid[col][row] == null) {
return false;
}
}
return true;
}

public void clearRow(int rowToClear) {
for(int row = rowToClear; row > 0; row--) {
for(int col = 0; col < grid[row].length; col++) {
grid[col][row] = grid[col][row-1];
}
}
}

有什么想法为什么具有相同的尺寸可以清除行吗?为什么这很重要?

谢谢!

<小时/>

我想我发现了这个问题,但是当我尝试解决它时,它现在抛出一个错误。

之前,我有 checkBottomFull() 循环遍历 grid.length-1,它等于 10 ( for(int row = grid.length-1; row >= 0; row--) {) 但我将高度(行)设置为 12 gameBoard = new Board(10, 12, 35);,所以我应该循环遍历 12 行,而不是 10 行.我应该每行循环 10 列...

所以我对下面的第 12 行和第 10 列进行了硬编码...

//loop through all rows (12 rows)
public void checkBottomFull() {
System.out.println(grid.length);
for(int row = 12; row > 0; row--) {
while (isFull(row)) {
clearRow(row);
}
}
}
//loop through all columns in that row (10 columns)
public boolean isFull(int row) {
System.out.println(grid[row].length);
for (int col = 0; col <= 10; col++) {
if(grid[col][row] == null) {
return false;
}
}
return true;
}

但是它抛出了 IndexOutOfBounds 异常...

不知道为什么

最佳答案

我注意到的一件事是:

for (int col = 0; col <= grid[row].length-1; col++) {
while(grid[col][row] == null) {

你有grid[row],但是还有grid[col][row]。这让我认为它应该是 grid[col] 或 grid[row][col]`

关于Java Tetris - 奇怪的行清除问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16342928/

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