In my attempt, which you can find here
should you wish to try it, I take the central x-coordinate of the alien, the central y-coordinate of the cannon and then see if the resulting point is inside the cannons hit box, if it is then the alien has a 0.001 probability to fire each tick. To get around the the overlap the aliens simply cannot collide with their own shots. I think this is how the original worked, maybe it's wrong but it works okay. In my mind there's some funky z-ordering going on and it's all good.
Yours is a good game and I like it but it's a bit predictable in that you know when you're safe. Maybe have the aliens aim for and shoot at the defence station until they get to final orbit then fire at the planet instead. In either case it's game over.
I feel a bit wrong suggesting this as it's probably a lot harder than what I've done and I've not graduated myself from Java 2D yet but hey ho...