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");