top of page

C#

Space invaders

Design Document

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

bottom of page