1: Strategy: to implement different game states according game difficulty chosen at the menu screen
2: Iterator: used to iterate between lists of different objects
3: Singleton: used to make sure only 1 instance of the clown object is created
4: Factory: used to create different game objects while not revealing objects classes to the rest of the program
5: Facade: used to shorten the methods by calling different methods with these code blocks to make reading and maintaining the code easier
6: Bridge: used to connect between two different classes to reduce coupling between them
7: Builder: used to create objects made up of multiple complex parts. It separates the construction of an object from its representation
Player has 3 lives
A player gains a life if he catches a skittle and loses a life if he catches a bomb
Score is increased by stacking 3 plates of the same color in a row on the same hand
Game ends either when you stack 10 plates on a hand or timer (1 minute) ends or you have 0 lives