X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=naja%2Fplayer.py;h=f51e83ef257fdcdc7fe03d0062e00ab0a7ba7cec;hb=40a95ca09c7a7ca0b4cca019e0ca8eb7670054bc;hp=fcfc3301de4ab22bdfed7982b210d4acc73a29e3;hpb=ede149141d8dcbd6bed5bf3ff710d2f716ac8421;p=naja.git diff --git a/naja/player.py b/naja/player.py index fcfc330..f51e83e 100644 --- a/naja/player.py +++ b/naja/player.py @@ -1,3 +1,4 @@ +from naja.constants import BITS class PlayerBits(object): @@ -57,3 +58,37 @@ class Player(object): def __init__(self, bits, position): self.bits = PlayerBits(bits) self.position = position + + @classmethod + def import_player(cls, definition): + return cls(definition['bits'], tuple(definition['position'])) + + def export(self): + return { + 'bits': self.bits.bits, + 'position': list(self.position), + } + + 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 + + return False