X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=naja%2Fplayer.py;h=83c41242accbc9da98a955dfeecafa40761dd351;hb=692a111f56f0e0edd19376e447b530ff4cb21521;hp=c53c6980b5702e5b26f99a66fd09f0689253cc99;hpb=b3db4400695249420f5f941744c2a2692a1bad98;p=naja.git diff --git a/naja/player.py b/naja/player.py index c53c698..83c4124 100644 --- a/naja/player.py +++ b/naja/player.py @@ -1,3 +1,4 @@ +from naja.constants import BITS class PlayerBits(object): @@ -20,16 +21,16 @@ class PlayerBits(object): # 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 @@ -67,3 +68,27 @@ class Player(object): 'bits': self.bits.bits, 'position': list(self.position), } + + def move(self, direction): + if not self.bits.check_bit(direction): + return False + # TODO: Something cleaner than this. + x, y = self.position + if direction == BITS.NORTH: + if y > 0 and self.bits.check_bit(BITS.NORTH): + self.position = (x, y - 1) + return True + elif direction == BITS.SOUTH: + if y < 4 and self.bits.check_bit(BITS.SOUTH): + self.position = (x, y + 1) + return True + elif direction == BITS.EAST: + if x < 4 and self.bits.check_bit(BITS.EAST): + self.position = (x + 1, y) + return True + elif direction == BITS.WEST: + if x > 0 and self.bits.check_bit(BITS.WEST): + self.position = (x - 1, y) + return True + + return False