如何从矩形数组中删除随机矩形?

时间:2015-12-03 05:46:19

标签: java android libgdx

我制作了一个类似于鼹鼠的游戏,我用矩形阵列创建它们,我想每隔3秒移除一个随机痣。但我怎么能这样做呢?
iter.remove(); < =这只会删除最后一个而不是随机的;(

private boolean moleKill(Rectangle mole) {
    Vector3 touchPos = new Vector3(Gdx.input.getX(), Gdx.input.getY(),0);
    camera.unproject(touchPos);
    if (mole.contains(touchPos.x, touchPos.y))
        return true;
    else
        return false;
}
private void spawnmole(){
    if (moles.size<=4){
    Rectangle mole = new Rectangle();
    mole.x= MathUtils.random(1,3)*200-100;
    mole.y= MathUtils.random(1,4)*200;
    mole.width=150;
    mole.height=113;
    moles.add(mole);
    }
}

public void render()
{
    Gdx.gl.glClearColor(0, 0.5f, 0, 0);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    camera.update();
    batch.setProjectionMatrix(camera.combined);
    batch.begin();
    if (TimeUtils.timeSinceMillis(timespawn) > 1000) {
        spawnmole();
        timespawn = TimeUtils.millis();
    }

    for (Rectangle mole: moles){
        batch.draw(moleimage,mole.x,mole.y);
    }

    Iterator<Rectangle> iter = moles.iterator();
    while (iter.hasNext()) {
        Rectangle mole = iter.next();
        if (moleKill(mole) == true) {
            iter.remove();
            score=score+10;
        }
    }

    if (TimeUtils.timeSinceMillis(timehide) > 3000) {
        iter.remove();
        timehide = TimeUtils.millis();
    }

    batch.end();
}

1 个答案:

答案 0 :(得分:1)

我建议使用List而不是迭代器。使用迭代器,你不知道元素的数量。

Random r = new Random();
public void removeRandomListElement(List list) {
    int index  = r.nextInt(list.size());
    list.remove(index);
}