def __init__(self, game_json=None, game_modes=None, mode=None):
<EOL>self._game_modes = None<EOL>self.load_modes(input_modes=game_modes)<EOL>self.game = None<EOL>self.load(game_json=game_json, mode=mode)<EOL>
Initialize a GameController object to allow the game to be played. The controller
creates a game object (see GameObject.py) and allows guesses to be made against
the 'hidden' object.

:param game_json: <optional>, if provided is a JSON serialized representation
of a game; if not provided a new game is instantiated.
:param game_modes: <optional>, a list of GameMode objects representing game modes.
:param mode: <optional>, the mode the game should be played in; may be a GameMode
object or a str representing the name of a GameMode object already defined (e.g.
passed via game_modes).