class Game: """ A game has a board state along with a number of actions that the current player can take. Board state should always be represented from the current players perspective. TODO: What if it's an asymmetric game? """ @staticmethod def initail_state(): """ Returns a board state that represents the beginning of a game. """ pass @staticmethod def render(board): """ Renders the board to a GUI somehow? """ pass @staticmethod def action_space(): """ Returns the size of the full action space. """ pass @staticmethod def possible_actions(board): """ Returns a list of booleans of the size of action space indicating which actions are possible in the given board state. """ pass @staticmethod def action(board, action): """ Advances the board with given action. The returned board state should be in the next players perspective. """ pass @staticmethod def status(board): """ Returns the status of the game from the current player's perspective. Either active, won, lost, or draw. """ pass