我想把它变成一个数组

时间:2015-10-16 16:07:24

标签: java

public class Game
{
    private EnemyShip enemy1;
    private EnemyShip enemy2;
    private EnemyShip enemy3;
    private PlayerShip player;

    /**
     * Initialises user's ship and guns
     */  
    public Game()
    {
        player = new PlayerShip();
        enemy1 = new EnemyShip();
        enemy2 = new EnemyShip();
        enemy3 = new EnemyShip();

我可以让这个敌人1,2,3成为一个阵列吗?我想在循环中使用敌人。

或者有没有办法为不是数组的变量创建一个循环?就像我运行循环一样enemy1会增加并变为enemy2

2 个答案:

答案 0 :(得分:1)

EnemyShip[] enemies = new EnemyShip[3];
for (int i=0; i<enemies.length; i++) { enemies[i] = new EnemyShip(); }

将为您提供3个EnemyShip对象的数组。如果您正在寻找的循环是每次迭代为您提供不同实例变量的循环,那么您不能这样做;你需要把它们放在一个集合中。但是,如果您不关心索引,则可以简化循环:

for (EnemyShip enemy : enemies) {
    //do something with enemy object
}

答案 1 :(得分:1)

正如其他人所建议的那样,只需:

EnemyShip[] enemies = new EnemyShip[3];

for (int i = 0; i < enemies.length; i++) { 

    enemies[i] = new EnemyShip(); 
}

然而,我认为您应该重新考虑使用数组。使用数组限制你最多拥有适合数组的敌人。

你真的知道你在编译时最多需要3个敌人吗?

为什么不提高灵活性并使用List呢?这样您就可以在运行时跟踪想要创建的敌人数量。因此,举例来说,如果玩家表现良好,你就会创造更多,如果玩家做得不好,你创造的就会减少。

List<Enemy> enemies = new ArrayList<Enemy>(3); // 3 is the expected capacity

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

    createEnemy();
}

......其他地方......

public void createEnemy() {

    enemies.add(new EnemyShip()); 
}

需求变化,特别是在游戏开发中。尽量避免提前做出太多的事情。