我遇到一對夫婦在俄羅斯方塊清算行奇怪的事情......的Java俄羅斯方塊 - 奇怪的行結算問題
如果我把我的板的寬度和高度是相同的(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? ):
但是,如果我把我的寬度和高度不同(這裏是10和12),該行不會明確。
board = new Board(10, 12, 35);
行結算:
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 ...
不知道爲什麼
爲了更快提供更好的幫助,請發佈[SSCCE](http://sscce.org/)。 – 2013-05-02 16:17:07
你幾乎可以肯定地將'col'和'row'交換到你不應該在的數組索引中。 – durron597 2013-05-02 16:21:14
annnnnnnnd我正在唱俄羅斯方塊歌曲。謝謝 – 2013-05-02 16:22:12