尝试遍历CopyOnWriteArrayList并删除项目,如果它们是“死”的Java

时间:2017-03-21 19:17:13

标签: java

因此对于我的CS课程中的实验室,我必须模拟有竞赛者的竞技场,并且我想在while循环内循环遍历嵌套for循环中的ArrayList,基本上一遍又一遍地遍历列表所有选手都死了。我尝试使用ArrayList和CopyOnWriteArrayList迭代列表,但我似乎无法使解决方案恰到好处。

以下是我需要该程序实质上做的事情:

  

“在我们的角色扮演游戏中,一组参赛者将进入竞技场进行战斗   另一个。该区域应包含下述每个类别中的两个。   我们应该能够和其中的每个人一起描述竞技场   每轮开始和之间。应该是死的参赛者   如此描述。在每一轮中,竞技场中的所有参赛者都有一个转弯   采取行动,如果可能的话,他们将能够进行攻击。什么时候有人   损坏,应该公布谁拿了多少,造成什么样的损坏,   从谁。经过一轮比赛,如果只剩下一名选手,他们就是   被命名为胜利者。如果没有人活着,请随机挑选一名获胜者   最后死了。“

以下是实际使用列表的代码示例。

import java.util.Random;
import java.util.ArrayList;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.Collections;
import java.util.Iterator;

public class ArenaSim
{
    public static void main(String[] args)
    {
    Berserker b1 = new Berserker("Jimmy");
    Warrior w1 = new Warrior("Paco");
    WildMage wm1 = new WildMage("Potato");
    Berserker b2 = new Berserker("Tonto");
    Warrior w2 = new Warrior("Bennett");
    WildMage wm2 = new WildMage("Cletis");

    Contestant winner = null;
    int winnerHP = 0;

    CopyOnWriteArrayList<Contestant> contestants = new CopyOnWriteArrayList<Contestant>();
    contestants.add(b1);
    contestants.add(w1);
    contestants.add(wm1);
    contestants.add(b2);
    contestants.add(w2);
    contestants.add(wm2);
    Collections.shuffle(contestants);

    Iterator<Contestant> iter = contestants.iterator();

    while(iter.hasNext())
    {
        Contestant current = iter.next();
        if(current.isDead() == false)
        {
            System.out.println();
            System.out.println(current.getName() + " prepares to attack!");
            current.attack(contestants);
            System.out.println();

            if (current.getHP() > winnerHP)
            {
                winner = current;
                winnerHP = current.getHP();
            }

            contestants.add(current);

        }
    }

    System.out.println("All contestants have been defeated!");
    System.out.println(winner.getName() + " wins the match!");

}
}

当物品被“损坏”时,物品的移除将在特定物品内处理,因此如果物品的HP值为0或更低,则会将物品本身从传入其中的物品中移除。

感谢您的帮助!

0 个答案:

没有答案