|
class Game(): |
|
""" |
|
This class specifies the base Game class. To define your own game, subclass |
|
this class and implement the functions below. This works when the game is |
|
two-player, adversarial and turn-based. |
|
|
|
Use 1 for player1 and -1 for player2. |
|
|
|
See othello/OthelloGame.py for an example implementation. |
|
""" |
|
def __init__(self): |
|
pass |
|
|
|
def getInitBoard(self): |
|
""" |
|
Returns: |
|
startBoard: a representation of the board (ideally this is the form |
|
that will be the input to your neural network) |
|
""" |
|
pass |
|
|
|
def getBoardSize(self): |
|
""" |
|
Returns: |
|
(x,y): a tuple of board dimensions |
|
""" |
|
pass |
|
|
|
def getActionSize(self): |
|
""" |
|
Returns: |
|
actionSize: number of all possible actions |
|
""" |
|
pass |
|
|
|
def getNextState(self, board, player, action): |
|
""" |
|
Input: |
|
board: current board |
|
player: current player (1 or -1) |
|
action: action taken by current player |
|
|
|
Returns: |
|
nextBoard: board after applying action |
|
nextPlayer: player who plays in the next turn (should be -player) |
|
""" |
|
pass |
|
|
|
def getValidMoves(self, board, player): |
|
""" |
|
Input: |
|
board: current board |
|
player: current player |
|
|
|
Returns: |
|
validMoves: a binary vector of length self.getActionSize(), 1 for |
|
moves that are valid from the current board and player, |
|
0 for invalid moves |
|
""" |
|
pass |
|
|
|
def getGameEnded(self, board, player): |
|
""" |
|
Input: |
|
board: current board |
|
player: current player (1 or -1) |
|
|
|
Returns: |
|
r: 0 if game has not ended. 1 if player won, -1 if player lost, |
|
small non-zero value for draw. |
|
|
|
""" |
|
pass |
|
|
|
def getCanonicalForm(self, board, player): |
|
""" |
|
Input: |
|
board: current board |
|
player: current player (1 or -1) |
|
|
|
Returns: |
|
canonicalBoard: returns canonical form of board. The canonical form |
|
should be independent of player. For e.g. in chess, |
|
the canonical form can be chosen to be from the pov |
|
of white. When the player is white, we can return |
|
board as is. When the player is black, we can invert |
|
the colors and return the board. |
|
""" |
|
pass |
|
|
|
def getSymmetries(self, board, pi): |
|
""" |
|
Input: |
|
board: current board |
|
pi: policy vector of size self.getActionSize() |
|
|
|
Returns: |
|
symmForms: a list of [(board,pi)] where each tuple is a symmetrical |
|
form of the board and the corresponding pi vector. This |
|
is used when training the neural network from examples. |
|
""" |
|
pass |
|
|
|
def stringRepresentation(self, board): |
|
""" |
|
Input: |
|
board: current board |
|
|
|
Returns: |
|
boardString: a quick conversion of board to a string format. |
|
Required by MCTS for hashing. |
|
""" |
|
pass |
|
|