2017-04-09 39 views
0

我正在做一个打砖块游戏,有需要引起一个随机砖爆炸摧毁随机项LibGdx

for (BaseActor brock : BaseActor.getList("Brick")) 
{ 
    //Item it = new Item(0,0,mainStage); 
    //it.alignToActorCenter(brock); 
    brock.remove(); 
    score += 100; //Adds 100 to score 
    scoreLabel.setText("Score: " + score); //Displays new score 
    break; 
} 

这只会破坏率先破发,如果我没有用“破爆炸物品;”它会销毁所有的砖块,无论如何,我可以随意选择一块砖块,并将其销毁,而不是专门销毁的第一块砖块?或者是否有一个函数返回列表中的特定砖块,以便我可以用数学随机生成一个数字,然后销毁该数字处的砖块。

回答

0

这有点混乱或者可能是逻辑错误,BaseActor有一个相同类型的列表(BaseActor)。

您可以从列表中随机获得一个砖并以这种方式删除:

private void destroyOneRandomBrick(){ 

    ArrayList<BaseActor> brickList = BaseActor.getList("Brick"); 
    int randomBrickIndex= MathUtils.random(brickList.size()-1); 
    BaseActor randomBrick= brickList.get(randomBrickIndex); 
    randomBrick.remove(); //Actor removed from stage 
    s.remove(randomBrick); //Item removed from ArrayList 
    score+=100; 
    scoreLabel.setText("Score: " + score); 
} 
+0

非常感谢,这是有道理和工作! – Anonymous

0

我想,你不需要使用每个循环

BaseActor.getList(“砖”)

给你的列表,你可以选择该列表中的任何随机值。的
随机随机=随机
使对象();
BaseActor actorToRemove = BaseActor.getList( “砖”)得到(random.nextInt(yourList.size()))。
actorToRemove.remove();

+0

BaseActor.getList(“Brick”)是否返回ArrayList? – surajy79

1

如果你有BaseActor使用libGDX的Array类,而不是Java的列表,你可以使用它的random()方法轻松地查找和删除像这样的随机砖:

BaseActor.getList().remove(BaseActor.getList().random());