JAVA:交互数组列表?

时间:2013-11-24 04:37:08

标签: java arraylist

所以,这是在游戏环境中。我有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。

关于如何做到这一点的任何想法?

2 个答案:

答案 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);
}
相关问题