Fix bits and add new action.
[naja.git] / naja / player.py
index fa6e1e9f3b3edd39a7a20a109135c39ee1f9cd36..f51e83ef257fdcdc7fe03d0062e00ab0a7ba7cec 100644 (file)
@@ -21,16 +21,16 @@ class PlayerBits(object):
     # Operate on individual bits
 
     def check_bit(self, bit):
-        return bool(self.bits & bit)
+        return bool(self.bits & (1 << bit))
 
     def set_bit(self, bit):
-        self.bits |= bit
+        self.bits |= (1 << bit)
 
     def clear_bit(self, bit):
-        self.bits &= (0xff ^ bit)
+        self.bits &= (0xff ^ (1 << bit))
 
     def toggle_bit(self, bit):
-        self.bits ^= bit
+        self.bits ^= (1 << bit)
 
     # Operate on sets of bits
 
@@ -75,19 +75,19 @@ class Player(object):
         # TODO: Something cleaner than this.
         x, y = self.position
         if direction == BITS.NORTH:
-            if y > 0:
+            if y > 0 and self.bits.check_bit(BITS.NORTH):
                 self.position = (x, y - 1)
                 return True
         elif direction == BITS.SOUTH:
-            if y < 4:
+            if y < 4 and self.bits.check_bit(BITS.SOUTH):
                 self.position = (x, y + 1)
                 return True
         elif direction == BITS.EAST:
-            if x < 4:
+            if x < 4 and self.bits.check_bit(BITS.EAST):
                 self.position = (x + 1, y)
                 return True
         elif direction == BITS.WEST:
-            if x > 0:
+            if x > 0 and self.bits.check_bit(BITS.WEST):
                 self.position = (x - 1, y)
                 return True