C#
Space invaders
Duration: January - March 2017 (10 weeks)
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 by clicking on the PDF icon.
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)
If you're interested in seeing any sample code or executable files, please contact me