JAVA:交互数组列表?
所以,这是一个游戏环境。我有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战斗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
有没有关于我该怎么做的想法 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代码。你暗示战斗同时运行——如何?基于回合?并发线程?列表中的敌人对象即使死了也需要保持吗?等等。这是基于回合的,对不起。我可以给出一些代码,但它有点长,我想回答它会更困难。