# Operate on individual bits
def check_bit(self, bit):
- return bool(self.bits & (1 << bit))
+ return bool(self.bits & bit)
def set_bit(self, bit):
- self.bits |= (1 << bit)
+ self.bits |= bit
def clear_bit(self, bit):
- self.bits &= (0xff ^ (1 << bit))
+ self.bits &= (0xff ^ bit)
def toggle_bit(self, bit):
- self.bits ^= (1 << bit)
+ self.bits ^= bit
# Operate on sets of bits
def __init__(self, bits, position):
self.bits = PlayerBits(bits)
self.position = position
+
+ @classmethod
+ def import_player(cls, definition):
+ return cls(definition['bits'], tuple(definition['position']))
+
+ def export(self):
+ return {
+ 'bits': self.bits.bits,
+ 'position': list(self.position),
+ }