X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=naja%2Fplayer.py;fp=naja%2Fplayer.py;h=acae919c0c46c0b2d14338ca11d0c87289ab7df4;hb=3757e52c05b60b636155a3205a579c118ae82cc1;hp=0000000000000000000000000000000000000000;hpb=b1653611e4c805719c8a12c86df6c046d292e52b;p=naja.git diff --git a/naja/player.py b/naja/player.py new file mode 100644 index 0000000..acae919 --- /dev/null +++ b/naja/player.py @@ -0,0 +1,59 @@ + + +class PlayerBits(object): + """ + A glorified byte. + """ + + def __init__(self, bits): + self.bits = bits + + @property + def bits(self): + return self._bits + + @bits.setter + def bits(self, value): + assert 0 <= value <= 0xff + self._bits = value + + # Operate on individual bits + + def check_bit(self, bit): + return bool(self.bits & (1 << bit)) + + def set_bit(self, bit): + self.bits |= (1 << bit) + + def clear_bit(self, bit): + self.bits &= (0xff ^ (1 << bit)) + + def toggle_bit(self, bit): + self.bits ^= (1 << bit) + + # Operate on sets of bits + + def check_bits(self, *bits): + return all(self.check_bit(bit) for bit in bits) + + def set_bits(self, *bits): + for bit in bits: + self.set_bit(bit) + + def clear_bits(self, *bits): + for bit in bits: + self.clear_bit(bit) + + def toggle_bits(self, *bits): + for bit in bits: + self.toggle_bit(bit) + + +class Player(object): + """ + A representation of the player. + """ + + def __init__(self, bits, position): + self.bits = PlayerBits(bits) + self.position = position