Cleaner player direction selection.
authorJeremy Thurgood <firxen@gmail.com>
Wed, 14 May 2014 19:40:54 +0000 (21:40 +0200)
committerJeremy Thurgood <firxen@gmail.com>
Wed, 14 May 2014 19:40:54 +0000 (21:40 +0200)
naja/player.py

index f51e83ef257fdcdc7fe03d0062e00ab0a7ba7cec..ff253da35ea3113216240649fa4dfe8a0dbf5dab 100644 (file)
@@ -69,26 +69,25 @@ class Player(object):
             '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
-        # 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
-
+        new_position = self.get_adjacent_position(direction)
+        if new_position is not None:
+            self.position = new_position
+            return True
         return False