2017-04-09 36 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());