Refactor different game mode

Use Polymorphism for different game mode