示例#1
0
    def __init__(self,hash=None):
        if hash is None:
            hash = new_game_hash(sum_cells=True,mode=self.MODE)

        verify_hash(hash=hash,mode=GAME_MODES[self.MODE]['GRID'])
        self._hash  = hash
        self._binary = None
        self._hash_map = CELL_HASH_TABLE[self.MODE]
        self._cells = [self.CELL_KLASS.from_hash(hash=h)
                       for h in decompose_grid_hash(hash=self._hash,mode=self.MODE)]

        state_hash = sum([ ( 1 << n) for n, c in enumerate(self._cells)
                        if (c.player == PLAYER_1 or c.player == PLAYER_2)])

        self._state = self.GRID_STATE_KLASS(hash=state_hash)
        self.validate_grid()
示例#2
0
def decompose_grid_hash(hash,mode=TTT_3_IN_A_ROW):

    verify_game_mode(game_mode=mode)
    m = GAME_MODES[mode]['GRID']
    verify_hash(hash=hash,mode=GAME_MODES[mode]['GRID'])
    length = MODES[m]['length']
    binary = bin(hash)[2:].zfill(length)
    binary_cells = [c for c in
                        reversed(
                                    [binary[bin_range:bin_range+3]
                                    for bin_range in xrange(0, len(binary), 3)]
                                )
                    ]

    bits_to_push = lambda c : ((c+1) * 3) - 3

    return [ (1 << ((int(b, 2) >> 1) + bits_to_push(c=cell)))
            for cell, b in enumerate(binary_cells) ]
示例#3
0
    def __init__(self,hash=0):

        verify_hash(hash=hash,mode=GAME_MODES[self.MODE]['GRID_STATE'])
        self._hash = hash
        self._binary = None