def __init__(self, board, size, white_quads = None, black_quads = None, initialize = True): ''' Constructor. @param size: The board's width. @param board: A matrix describing the board. ''' self.size = size self.board = board self.euler = {} if white_quads != None: self.white_quads = white_quads else: self.white_quads = {} if black_quads != None: self.black_quads = black_quads else: self.black_quads = {} if initialize: for x in range(-1, size): for y in range(-1, size): self.setQuadType(x, y, findQuadType(x, y, board, size, WHITE), WHITE) self.setQuadType(x, y, findQuadType(x, y, board, size, BLACK), BLACK) self.calcEulerNumber()
def testFindQuadType(self): self.assertEqual('Q1', findQuadType(0, 0, self.board1, 2, 'W')) self.assertEqual('Q2', findQuadType(0, 0, self.board1, 2, 'B')) self.assertEqual('Q1', findQuadType(0, 0, self.board2, 2, 'W')) self.assertEqual('Q3', findQuadType(0, 0, self.board2, 2, 'B')) self.assertEqual('Q0', findQuadType(0, 0, self.board3, 2, 'W')) self.assertEqual('Q4', findQuadType(0, 0, self.board3, 2, 'B')) self.assertEqual('Q1', findQuadType(-1, -1, self.board3, 2, 'B')) self.assertEqual('Q1', findQuadType(1, 1, self.board3, 2, 'B')) self.assertEqual('Q2', findQuadType(0, -1, self.board3, 2, 'B')) self.assertEqual('Qd', findQuadType(0, 0, self.board4, 2, 'W')) self.assertEqual('Qd', findQuadType(0, 0, self.board4, 2, 'B'))
def updateSurroundingCells(self, x, y, player): self.setQuadType(x, y, findQuadType(x, y, self.board, self.size, player), player) self.setQuadType(x-1, y, findQuadType(x-1, y, self.board, self.size, player), player) self.setQuadType(x, y-1, findQuadType(x, y-1, self.board, self.size, player), player) self.setQuadType(x-1, y-1, findQuadType(x-1, y-1, self.board, self.size, player), player)
def spin(self, action, state): for player in [WHITE, BLACK]: for x in range(action.col-1, action.col+2): for y in range(action.row-1, action.row+2): self.setQuadType(x, y, findQuadType(x, y, self.board, self.size, player), player)