砖破碎机不从阵列列表中删除砖块

时间:2017-05-20 02:15:50

标签: java android

我正在开发适用于Android的砖块破坏者游戏。目前,我正在使用ArrayList作为砖块。我需要在与球碰撞时从列表和屏幕中单独删除每一个。目前,当球与阵列中最后一块砖(右下角)碰撞时,阵列的一半被移除(每隔一块砖)。再次与它碰撞时,它会随机移除一些砖块,但这些都不是我所需要的。

这是我的代码。 brick是Bricks ArrayList中的一个对象。

for (int i = 0; i <= bricks.size(); i++) {
    if (RectF.intersects(brick.rect, ball.rect)) {
        bricks.remove(bricks.get(i));
        ball.dy = -ball.dy;
        score += 10;
    }
}

1 个答案:

答案 0 :(得分:0)

您必须使用Iterator

for (Iterator<Brick> it = bricks.iterator(); it.hasNext();) {
    Brick brick = it.next();

    if (RectF.intersects(brick.rect, ball.rect)) {
        it.remove();
        ball.dy = -ball.dy;
        score += 10;
    }
}

或者您可以反转原始代码以从最后删除砖块。