Cleaner player direction selection.
[naja.git] / naja / player.py
index c53c6980b5702e5b26f99a66fd09f0689253cc99..ff253da35ea3113216240649fa4dfe8a0dbf5dab 100644 (file)
@@ -1,3 +1,4 @@
+from naja.constants import BITS
 
 
 class PlayerBits(object):
@@ -67,3 +68,26 @@ class Player(object):
             'bits': self.bits.bits,
             'position': list(self.position),
         }
+
+    def get_adjacent_position(self, direction):
+        x, y = self.position
+        if direction == BITS.NORTH and y > 0:
+            return (x, y - 1)
+        elif direction == BITS.SOUTH and y < 4:
+            return (x, y + 1)
+        elif direction == BITS.EAST and x < 4:
+            return (x + 1, y)
+        elif direction == BITS.WEST and x > 0:
+            return (x - 1, y)
+        else:
+            # Not a legal space.
+            return None
+
+    def move(self, direction):
+        if not self.bits.check_bit(direction):
+            return False
+        new_position = self.get_adjacent_position(direction)
+        if new_position is not None:
+            self.position = new_position
+            return True
+        return False