Missile Command
150 points
You may work in pairs if you wish

Submit all code necessary to compile and execute (if you use VS.NET or SharpDevelop, you can include all that stuff in your zip)
Document code as you deem necessary.  Describe anything you deem is worth extra credit and anything that doesn't work properly.


From Wikipedia ( http://en.wikipedia.org/wiki/Missile_Command )

Missile Command is a 1980 arcade game by Atari Inc. that was also licensed to Sega for European release. The plot of Missile Command is simple: the player's planet, Zardon, is being attacked by an endless hail of interplanetary ballistic missiles from Krytol, some of them even splitting like multiple independently targetable reentry vehicles (MIRVs), and in later levels smart bombs which can evade a less than perfectly targeted missile. As a regional commander of three anti-missile batteries, the player must defend six cities in their zone from being destroyed.

The game is played by moving a crosshair across the sky background via a trackball and pressing one of three buttons to launch a counter-missile from the appropriate battery. There are three batteries, each with ten missiles; a missile battery becomes useless when all its missiles are fired, or if the battery is destroyed by enemy fire. The missiles of the central battery fly to their targets at much greater speed; only these missiles can effectively kill a smart bomb at a distance.

The game is staged as a series of levels of increasing difficulty; each level contains a set number of incoming enemy weapons. The weapons attack the six cities, as well as the missile batteries; being struck by an enemy weapon results in destruction of the city or missile battery. Enemy weapons are only able to destroy 3 cities during one level. A level ends if all the cities are destroyed, or when all enemy weaponry is destroyed or reaches its target. If a player should run out of missiles, he no longer has control over the remainder of the level. At the conclusion of a level, the player receives bonus points for any remaining cities or unused missiles. Between levels missile batteries are rebuilt and replenished; destroyed cities are not rebuilt, but at set point levels (usually 10 or 12K) a bonus city is awarded.

The game inevitably ends when all six cities have been wiped out. Like most early arcade games, there is no way to "win" the game; it theoretically goes on forever with ever faster and more prolific incoming missiles, until it becomes humanly impossible to stop them all. The game, then, is just a contest in seeing how long the player can survive.

The game featured an interesting bug: once 810,000 points had been reached a large number (176) of cities were awarded and it was possible to carry on playing for several hours. At some later stage the speed of missiles would increase greatly for a few screens. On the 255th and 256th yellow screens, known as the 0x stages, the scoring increases by 256 times the base value. For good players these two 0x stages could earn over a million points, this enabled them to reach a score of approximately 2,800,000 (although only 6 digit scores were shown, so it would display 800,000) and at this point the accelerated rate would suddenly cease and the game would restart at its original (slow) speed and return to the first stage, but with the score and any saved cities retained. In this way it was possible to play this game for hours on end. The world marathon record, set in 1983 by Victor Ali, is 80,000,000 points.


How to get started

Begin by playing with the demo on Atari's website: http://games.atari.com/arcade.php?game=missilecommand.

Specifications

  1. You can have a single missile base.
  2. Movement of the cursor/target should be via the mouse

  3. Allow the user to choose:
    1. unlimited missiles, or a specific number via a menu before gameplay begins
    2. the number of cities to defend
    3. speed of game (constant or increasing)
  4. Allow the game to be paused
  5. Save the high score(s) -- display them when the game is not being played
  6. Simulate the actual game to the best of your ability
    1. current score and level should be displayed
    2. provide a button strip that contains shortcuts to game features (pause, restart, etc.)
  7. Incorporate sound for when a missile explodes.  You can provide background music and other sounds if you wish
  8. Extra points will be given for additional features (perhaps a super missile that can be earned, or a shield that can protect a city, etc.)

Hints

  1. Use a Timer and / or threads to animate the incoming missiles:
  2. An exploding missile can be simulated by drawing an increasingly larger circle
  3. Use .NET tools for collision detection
  4. Provide cheats for yourself to allow testing of the game