gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 01:43:39 25 4
gpt4 key购买 nike

我正在制作一个类似打地鼠的游戏,我在矩形阵列中创建它们,我想每 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();
}

最佳答案

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

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

关于java - 如何从矩形数组中删除随机矩形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34058725/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com