During university one assignment had me creating an asteroids clone game using C# with XNA game studio. The assigment requried the game to include asteroids that split apart when shot and an enemy AI.
In order to have some fun with the idea I decided focus on how the ships were constructed. I had previously toyed with a player object being constructed of multiple sprites and wanted to use that for the ships, with a base ship sprite and separate weapon sprites, this would allow the weapons to rotate individually.
I believed doing this also easily opened the game up to facilitate hot swapping of weapons in game, since the weapon sprites and characteristics could be altered on the fly and individually (different weapons attached to different mounting points).
When it came time for me place enemies into the game I decided to keep this ship design consistent and use the weapon rotation as a part of the difficulty modifier. More difficult game play means enemies have more accurate targeting systems. I also decided to have an enemy spawn point placed randomly that would give enemy ships a safe location to spawn in.
As for game controls I chose to have the player ship move towards or away from the mouse cursor and have the player weapons target that cursor.
I was unable to remove some bugs that had persists before the assignment was due, these being the enemy weapons twitching every frame (looking back now, adding some interpolation would probably smooth out their rotation) and the asteroids not splitting correctly; the smaller asteroids would spawn from the centre of the screen instead of where the asteroid was destroyed.
Here is a video of the game: