Designed and built a clone of the arcade version of Space Invaders. The cloned game was written in C# in the AZUL framework using modern software principles, including iterative based development, robust and orthogonal systems, and design patterns.
Design patterns used:
Singleton
Factory
Null Object
Flyweight
Proxy
Composite
State
Strategy
Observer
Visitor
Iterator
Command
Priority Queue
To understand how each of these patterns were used in my Space Invaders clone, please check out my design document above.
Individual game components were implemented in progressive order, based on complexity. Major game components include:
Input Manager
Records player's key inputs
Ability to search for specific button combinations
Sprite/Animation System
Created a sprite system that displays the sprite image
Animates the sprite to display a different image at a specific time (Set series of images to cycle through and timing/speed to display the images)
Ability to reuse sprite images instead of having duplicate images loaded at the same time
General enough to display any sprite used in the game
Collision System
Created a collision system that determines collisions between missiles and collideable objects
Determines the state of the collision (non-intersection, intersection)
Able to be used with any collision in the game
Shield Collision and Display System
Shield dissolves and erodes by alien/player missiles
Shield acts as a protector, protecting the player from alien missiles
Drawing mechanism to show erosion effect
Underlining collision grid and update mechanism
Sound System
Created a system that loads and plays static sound files
Allows other systems to call a single play of a sound for their respective effects
Ability to control individual volumes of each sound playing
Allow many different sounds to be playing at once (overlapping)
Gross sound controls (mute and game overall volume)