所以,这是在游戏环境中。我有2个ArrayLists,一个是你拥有的3个字符的一方,另一个是3个敌人角色的ArrayList。
我有一种叫做战斗的方法,它将来自你方的角色“a”和来自敌方的“b”放在战斗中。我没有任何问题,但是当其中一个字符在ArrayList中死亡时,目标必须切换。
例如: 1)字符a,b,c与。字符d,e,f 2)我使用我的战斗方法,以便战斗d,b战斗e,和c战斗f。到目前为止一切都很顺利。 3)角色失去和死亡,现在我必须让角色b战斗d和e,而c继续战斗f。
关于如何做到这一点的任何想法?
答案 0 :(得分:0)
列出friends = new ArrayList(); 列出enemies = new ArrayList();
//填充列表。
//将对手映射到对方。
//如果朋友中的elementA在与elementX战斗时死亡
friends.remove( “元件” 中);
//在战斗中
如果(friends.size()&0){ //元素X的新敌人是 friends.get(1); } 其他{ //敌人赢了朋友。 }
答案 1 :(得分:0)
我会在combat()方法结束时删除死角,然后再次递归地运行combat(),直到其中一个列表为空。
伪代码:
protected void combat(List<Character> heroes, List<Character> enemies) {
if (heroes.isEmpty() || enemies.isEmpty()) {
//one of the parties wins
return;
}
List<Pair<Character, Character>> vs = new LinkedList<>();
int i = 0;
while ( i< heroes.length() && i< enemies.length()) {
vs.add(heroes.get(i), enemies.get(i));
++i;
}
for (Pair<Character, Character> fight : vs) {
//figure out the loser
Character loser = fight(vs.getFirst(), vs.getSecond();
if (loser.isEnemy()) {
enemies.remove(loser);
} else {
heroes.remove(loser);
}
}
combat(heroes, enemies);
}