Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.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_Oop - Fatal编程技术网

Java,在游戏中制作和放置敌人波浪循环的最佳方法

Java,在游戏中制作和放置敌人波浪循环的最佳方法,java,oop,Java,Oop,我正在做一个面向对象的最终项目,这是一个基于文本的生存游戏。我目前正试图通过让玩家输入他们想与多少敌人战斗,然后它循环通过它,直到达到数量为止。最好的路线是什么?我想要它,这样敌人可以被选中两次,但我的搭档想做一个洗牌的数组,因为较少的工作 大多数情况下,我被困在哪里,我应该做什么样的循环,我应该把它放在哪里 这是主类中的一些代码 Entity entity = new Entity(); ArrayList<Entity> enemies = new ArrayLi

我正在做一个面向对象的最终项目,这是一个基于文本的生存游戏。我目前正试图通过让玩家输入他们想与多少敌人战斗,然后它循环通过它,直到达到数量为止。最好的路线是什么?我想要它,这样敌人可以被选中两次,但我的搭档想做一个洗牌的数组,因为较少的工作

大多数情况下,我被困在哪里,我应该做什么样的循环,我应该把它放在哪里

这是主类中的一些代码

Entity entity = new Entity();
        ArrayList<Entity> enemies = new ArrayList<>();
        EnemyList enemyList = new EnemyList();

        Entity troll = new Troll();
        troll.setName("Troll");
        enemyList.characters.add(troll);

        Entity imp = new Imp();
        imp.setName("Imp");
        enemyList.characters.add(imp);

        Entity knight = new Knight();
        knight.setName("knight");
        enemyList.characters.add(knight);

        Entity skeleton = new Skeleton();
        skeleton.setName("Skeleton");
        enemyList.characters.add(skeleton);


        Integer[] array = new Integer[enemyList.characters.size()];
        for (int i = 0; i < array.length; i++) {
            array[i] = i;
        }

        Collections.shuffle(Arrays.asList(array));


 for (int i = 0; i < enemyCount; i++) {

            for (Entity someEnemy : enemyList.characters) {

                System.out.println(enemyList.characters.get(array[i]));

                System.out.println(someEnemy.getName(entity) + "\n");
                System.out.println("A " + someEnemy.getName(entity) + " Appears! It has " + someEnemy.getHealth() + "HP");

                while (someEnemy.getHealth() > 0) {

                    int attack = character.getAttack();
                    System.out.println("You hit the " + someEnemy.getName(entity) + " for " + character.getAttack());
                    int monsterTotalHealth = someEnemy.setHealth(someEnemy.getHealth() - attack);
                    System.out.println(someEnemy.getName(entity) + " has " + monsterTotalHealth + "HP Left");
                    System.out.println("");

                    if (someEnemy.getHealth() > 0) {

                        System.out.println("The monster attacks back for " + someEnemy.getStrength());
                        int remainingHP = character.damageDelt(someEnemy.getStrength());
                        System.out.println("Your remaining health is " + remainingHP);
                        System.out.println("");
                        character.setHealth(character.getHealth());
                    }

                    if (character.isDead()) {

                        System.out.println("You have been defeated!");
                        System.exit(0);

                    } else if (someEnemy.getHealth() < 0) {
                        System.out.println("Fighting Next monster");

                    }

                }
            }

        }

烯酰类

import java.util.ArrayList;
import java.util.List;

public class EnemyList {

    List<Entity> characters = new ArrayList<>();

    public void print()
    {
        for (Entity entity : characters)
        {
            System.out.println(entity.toString());

        }
    }

}



好的,我会尽力帮忙的

首先,我认为这是不必要的:

    Integer[] array = new Integer[enemyList.characters.size()];
    for (int i = 0; i < array.length; i++) {
        array[i] = i;
    }

    Collections.shuffle(Arrays.asList(array));
假设
maxknowers=5
,让我们进入循环:

 boolean win = true;
 for (int i=0;i<maxEnemies;i++)
 {
    Entity enemy = enemyList.characters.get(i);
    String enemyName = enemy.getName();
    System.out.println("Fighting "+enemyName);
    //... your logic here
    if (character.isDead()) 
    {
       win=false;
       break;
    }
 }

 if (!win)
    System.out.println("You have been defeated! You are a disgrace to your family");
 else
    System.out.println("You've defeated "+maxEnemies+" bastards. You WON!
                        Tiger blood runs through your veins");
boolean-win=true;

对于(int i=0;ia问题,每个实体只拥有一个敌人?这是1-1关系吗?我使用实体类进行继承。例如,我创建了一个从实体扩展而来的骨架类并实现了机制。如果我理解为是,则实体是它自己的东西(如骨架或巨魔)将它们添加到列表中我的意思是,在同一个实体中会有两个敌人吗?所以如果我选择两个敌人进行战斗,他们会来自同一个实体吗?(两个骑士,等等)我的道歉,是的,他们可以。不用担心,伙计。你的问题是如何做一个循环,不让敌人重复战斗?比如,如果我已经和骑士战斗过,让我们在下一场战斗中放弃它?所以,为了确定,我是否保留循环:for(实体somebyfest:enemyList.characters)关键是它将是一个最大数量的敌人来战斗;因此,不要迭代所有敌人,只需迭代一个计数,然后在循环中,每次迭代都得到一个实体:for(Entity somefyject:enemyList.characters)如果您需要遍历所有实体,这将是正确的方法;但是正如您所说,用户可以决定其中有多少人想要战斗。因此,更改循环的逻辑(不是针对所有实体,而是针对所有ChooseMaxNumber)明白了,我明白了,谢谢你的澄清和帮助。很高兴能帮上忙。很高兴你能理解我想说的话,有时我甚至不能理解我自己的陈述
    Integer[] array = new Integer[enemyList.characters.size()];
    for (int i = 0; i < array.length; i++) {
        array[i] = i;
    }

    Collections.shuffle(Arrays.asList(array));
Collections.shuffle(enemyList.characters);
 boolean win = true;
 for (int i=0;i<maxEnemies;i++)
 {
    Entity enemy = enemyList.characters.get(i);
    String enemyName = enemy.getName();
    System.out.println("Fighting "+enemyName);
    //... your logic here
    if (character.isDead()) 
    {
       win=false;
       break;
    }
 }

 if (!win)
    System.out.println("You have been defeated! You are a disgrace to your family");
 else
    System.out.println("You've defeated "+maxEnemies+" bastards. You WON!
                        Tiger blood runs through your veins");