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.