here you go mate it was happening because your enemy to wall collision checks were inside the for loop you were changing direction to often.
looks cool btw
sub draw_enemy_ships()
setrgb 1, 250, 250, 250
if enemy_x(1) <= 12 then
dir = 1
enemy_down = 1
fi
if enemy_x(30) >= 495 then
dir = 0
enemy_down = 1
fi
for e=1 to enemy
if dir = 0 enemy_x(e) = enemy_x(e) - invader_speed
if dir = 1 enemy_x(e) = enemy_x(e) + invader_speed
if enemy_down = 1 then
for d = 1 to enemy
enemy_y(d) = enemy_y(d) + 2
enemy_down = 0
next d
fi
if type(e) = 1 then
setrgb 1, 200, 0, 0
elsif type(e) = 2 then
setrgb 1, 0, 200, 0
elsif type(e) = 3 then
setrgb 1, 0, 0, 200
elsif type(e) = 4 then
setrgb 1, 200, 200, 200
fi
fill rect enemy_x(e) - 6, enemy_y(e), enemy_x(e) + 6, enemy_y(e) + 20
setrgb 1, 250, 250, 250
rect enemy_x(e) - 6, enemy_y(e), enemy_x(e) + 6, enemy_y(e) + 20
enemy_checks()
next e
end sub