# game.py
""" Implementation of the "business rules" for a game of backgammon """


class Game:

    """Main interface for interacting with a game of Backgammon"""

    def __init__(self):
        """initialize a game"""

    def new_game(self):
        """Reset game to start from scratch, no player is in turn, and the
        game awaits a call to nextTurn to start.

        """

    def next_turn(self):
        """Signals that the current turn has finished i.e. the player in the
        turn has exhausted the possible moves. The game responds by
        changing player and rolling the dice. Note: multiple calls to
        next_turn may be necessary to start the game, as a game cannot
        start with a doublet roll. On the first roll, die1 is RED's
        and die2 is BLACK's.

        """

    def move(self, frm, to):
        """ Move one checker off frm onto to. If the move is invalid, the
        board is unchanged. If move is to an opponent's blot, the blot is
        moved to it's bar. Return True if move is valid, False otherwise.
        """

    # accessor methods

    def get_player_in_turn(self):
        """Return the color of the player that is in turn, None if the game
        has not started or play is over.

        """

    def get_number_of_moves_left(self):
        """ Return the number of moves left subject to the rules of Backgammon
        """

    def dice_thrown(self):
        """return values die1, die2 of the last throw

        """

    def dice_values_left(self):
        """ return a list of length (0 to 4) of dice values yet
        to be used in the turn. Values are sorted high to low.
        """

    def winner(self):
        """return the winner of this game, None if still in progress.

        """

    # == accessors to the board

    def get_color(self, location):
        """return color for location"""

    def get_count(self, location):
        """return count for location"""
