X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=naja%2Fplayer.py;h=2156a3665c8f64e21452f5e8bffd6b1750bc8146;hb=2a46865fc69e2e90e28bc13255a762279e7a1b29;hp=c53c6980b5702e5b26f99a66fd09f0689253cc99;hpb=b3db4400695249420f5f941744c2a2692a1bad98;p=naja.git diff --git a/naja/player.py b/naja/player.py index c53c698..2156a36 100644 --- a/naja/player.py +++ b/naja/player.py @@ -1,3 +1,4 @@ +from naja.constants import BITS class PlayerBits(object): @@ -67,3 +68,34 @@ 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 + + def legal_moves(self): + positions = [] + for direction in [BITS.NORTH, BITS.SOUTH, BITS.EAST, BITS.WEST]: + position = self.get_adjacent_position(direction) + if position is not None and self.bits.check_bit(direction): + positions.append(position) + return positions