Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JAVA:交互数组列表?_Java_Arraylist - Fatal编程技术网

JAVA:交互数组列表?

JAVA:交互数组列表?,java,arraylist,Java,Arraylist,所以,这是一个游戏环境。我有2个阵列列表,一个是你拥有的3个角色的一个团队,另一个是3个敌人角色的阵列列表 我有一种叫做战斗的方法,它把你方的“a”字和敌方的“b”字放在战斗中。我的工作没有任何问题,但当其中一个角色在任一ArrayList中死亡时,目标必须切换 例如: 1) 字符a、b、c与字符d、e、f 2) 我使用我的战斗方法,a对抗d,b对抗e,c对抗f。到目前为止一切顺利。 3) 角色a输了又死了,现在我必须让角色b和d和e战斗,而c继续和f战斗 有没有关于我该怎么做的想法 List

所以,这是一个游戏环境。我有2个阵列列表,一个是你拥有的3个角色的一个团队,另一个是3个敌人角色的阵列列表

我有一种叫做战斗的方法,它把你方的“a”字和敌方的“b”字放在战斗中。我的工作没有任何问题,但当其中一个角色在任一ArrayList中死亡时,目标必须切换

例如: 1) 字符a、b、c与字符d、e、f 2) 我使用我的战斗方法,a对抗d,b对抗e,c对抗f。到目前为止一切顺利。 3) 角色a输了又死了,现在我必须让角色b和d和e战斗,而c继续和f战斗


有没有关于我该怎么做的想法

List friends=new ArrayList(); 列出敌人=新建ArrayList()

//填充列表

//把对手映射到对方身上

//如果朋友中的元素A在与元素X战斗时死亡

朋友。删除(“elementA”)

//战斗中

如果(friends.size()>0){ //元素X的新敌人是 朋友。获得(1); } 否则{ //敌人赢得了朋友。
}

我只需删除batch()方法末尾的死字符,然后再次递归运行batch(),直到其中一个列表为空

伪代码:

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);
}
受保护的空战(列出英雄,列出敌人){
如果(英雄.isEmpty()| |敌人.isEmpty()){
//其中一方获胜
返回;
}
List vs=新链接列表();
int i=0;
而(我<英雄.length()&&i<敌人.length()){
vs.add(英雄.获得(i),敌人.获得(i));
++一,;
}
对于(双人格斗:vs){
//找出失败者
角色失败者=战斗(vs.getFirst(),vs.getSecond();
if(loser.isEnemy()){
敌人。移除(失败者);
}否则{
英雄。移除(失败者);
}
}
战斗(英雄、敌人);
}

实现一个实际敌人的列表,然后当a死亡时,将该列表传递给下一个玩家,一个使用id映射每个玩家与其实际敌人的战斗地图类。也许,我不知道你是如何实现这些玩家的,他们有一个id?如果b没有完成与e的战斗,a死亡,b死亡怎么办?没有至少一点id,很难回答显示战斗工作方式的e代码。你暗示战斗同时运行——如何?基于回合?并发线程?列表中的敌人对象即使死了也需要保持吗?等等。这是基于回合的,对不起。我可以给出一些代码,但它有点长,我想回答它会更困难。