我有一個2d字符數組,代表類似於俄羅斯方塊的遊戲板。如果連續排列三個或更多,我會從板上移除塊。現在,我想基本上刪除塊之間的空間。所以我想從右下角開始,然後走到每一列,然後移到下一列。當我達到一個空白'。'一塊,我需要把所有東西都轉移下來。我如何有效地將二維數組中的所有內容按給定的數量向下移動?
這裏有我想要使用
public void boardGravity() {
for (int j = c - 1; j > 0; j--) {
for (int i = r - 1; i > 0; i--) {
if (board[i][j] != '.') {
int count = 0;
while(isEmpty(i + count + 1, j)) {
count++;
}
board[i + count][c] = board[r][c];
board[r][c] = '.';
}
}
}
}
public boolean isEmpty(int row, int col) {
if (row >= 0 && col >= 0 && board[row][col] == '.') {
return true;
}
return false;
}
我有一個很難包裝我的頭圍繞這一邏輯的方法!我找不到任何與此相似的東西。
編輯:下面是一個例子輸出:
New Board Created!
.....
.....
.....
.....
.....
.....
.....
.....
.....
a....
a....
a....
a....
c....
b....
a....
a....
a....
a....
c....
b....
.....
.....
.....
a....
c....
b....
.....
.....
.....
在最後的印刷電路板,我需要在頂部的剩餘字符要被移動至底部。
你能舉一個板子的例子,你期望發生什麼,以及當你運行你的代碼時實際發生了什麼? – tucuxi
[你的步調試器告訴你什麼?](http://stackoverflow.com/questions/25385173/what-is-a-debugger-and-how-can-it-help-me-diagnose-problems) –
Sure !好的,我添加了經理的示例輸出。我需要像俄羅斯方塊一樣將遊戲片斷轉移。 – presence