The game was completed during the first year of my games programming degree for my second 2D SDL assignment.
The SDL is a library that provides low level access to things like graphics, sound, keyboard input, etc. It wraps up all this features into something C++ can interact with.
The game uses the factory design pattern, in where there is a factory of game objects that generates instances of game objects of the class required at run time without having to specify the class of the game object itself being created.
The game uses a simple collision system (brute force) where every game object is checked against each other. All game objects inherit a 2D boundary box that is checked for overlapping with every other game object, but we take action only in the ones we are interested, like enemies with player or bullets with enemies.
event listener to hanlde keyboard input