UML modeling exercise with a starcraft like game, with implementation of design patterns (strategy, bridge, singleton, adapter, etc.)