因此对于我的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或更低,则会将物品本身从传入其中的物品中移除。
感谢您的帮助!