From 616e138c8fa95c96280bc367e908178737ca180b Mon Sep 17 00:00:00 2001 From: Jeremy Thurgood Date: Wed, 14 May 2014 21:40:54 +0200 Subject: [PATCH] Cleaner player direction selection. --- naja/player.py | 37 ++++++++++++++++++------------------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/naja/player.py b/naja/player.py index f51e83e..ff253da 100644 --- a/naja/player.py +++ b/naja/player.py @@ -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 -- 2.34.1