【发布时间】:2017-04-26 15:55:01
【问题描述】:
我有一个 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....
.....
.....
.....
在最后一张板印中,我需要将左上角的字符移到底部。
【问题讨论】:
-
你能举一个板子的例子,你期望发生什么,以及当你运行你的代码时实际发生了什么?
-
当然!好的,我添加了管理器的示例输出。我需要像俄罗斯方块一样向下移动游戏部分。
-
二维数组甚至是最好的数据(最直观的)结构吗?
deque在添加第一行的同时删除最后一行应该足够简单吗? -
我可能在底行有一些不需要删除的部分。我是一个初学者程序员,所以我不知道 char 数组是否是最好的方法,但它是目前所有东西都使用的,也是我的 TA 推荐的。