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
。
答案 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());
}
需求变化,特别是在游戏开发中。尽量避免提前做出太多的事情。