Here's your problem, though: if you want all of the aliens to move at once this part will have to be moved:
enemy[i].setLocation(6, enemy[i].getY()+20);
enemy[i].setLocation(6, enemy[i].getY()+20);
for (int i = 0; i < enemy.length; i++) { if (enemy[i].getWorld() != null ) { if (enemy[i].getX() < 605 && enemy[i].getX() > 595) { enemyLeft = true; turnInstance=true; } if (enemy[i].getX() > -5 && enemy[i].getX() < 5) { enemyLeft = false; turnInstance=true; } } } for (int i = 0; i < enemy.length; i++) { if(turnInstance) { enemy[i].setLocation(enemy[i].getX(), enemy[i].getY()+20); } } turnInstance=false;
private boolean enemyLeft = false;
// lets the world change the value of 'enemyLeft' public void changeDirection() { enemyLeft = !enemyLeft; } // lets the world have access to the value of 'enemyLeft' public boolean getEnemyLeft() { return enemyLeft; }
private void EnemyMovement() { for (int i = 0; i < enemy.length; i++) { if (enemy[i].getWorld() != null ) { boolean eLeft = enemy[i].getEnemyLeft(); if (enemy[i].getX() == 560 && !eLeft || enemy[i].getX() == 40 && eLeft) { enemy[i].changeDirection(); eLeft = !eLeft; enemy[i].setLocation(enemy[i].getX(), enemy[i].getY() + 20); } // the code 'eLeft ? -1 : 1' lets the value of 'eLeft' determine the direction of movement // like saying 'if (eLeft) direction = -1; else direction = 1;' enemy[i].setLocation(enemy[i].getX() + (eLeft ? -1 : 1), enemy[i].getY()); // end of replacement, the following continues from line 108 of your code if (enemyShootDelay == 300) // etc.