import definitions class Cart: def __init__(self, direction, x, y): self.direction = direction # w którą stronę patrzy, zgodnie ze wskazówkami zegara (1 -: godzina 12, 2 : godzina 3, 3 : godzina 6, 4 : godzina 9) self.x = x self.y = y def get_direction(self): return self.direction def set_direction(self, direction): self.direction = direction def get_x(self): return self.x def set_x(self, x): self.x = x def get_y(self): return self.y def set_y(self, y): self.y = y def is_move_allowed(self, cart_rect): # sprawdza czy dany ruch, który chce wykonać wózek jest możliwy, zwraca prawdę lub fałsz if self.direction == definitions.CART_DIRECTION_EAST and cart_rect.x + definitions.BLOCK_SIZE < definitions.WIDTH_MAP: return True elif self.direction == definitions.CART_DIRECTION_SOUTH and cart_rect.y - definitions.BLOCK_SIZE >= 0: return True elif self.direction == definitions.CART_DIRECTION_NORTH and cart_rect.y + definitions.BLOCK_SIZE < definitions.HEIGHT_MAP: return True elif self.direction == definitions.CART_DIRECTION_WEST and cart_rect.x - definitions.BLOCK_SIZE >= 0: return True else: return False @staticmethod def is_move_allowed_succ( node): # sprawdza czy dany ruch, który chce wykonać wózek jest możliwy, zwraca pozycje po wykonaniu ruchu, wersja node if node.get_direction() == definitions.CART_DIRECTION_EAST and node.get_x() * definitions.BLOCK_SIZE + definitions.BLOCK_SIZE < definitions.WIDTH_MAP: return "x + 1" elif node.get_direction() == definitions.CART_DIRECTION_NORTH and node.get_y() * definitions.BLOCK_SIZE - definitions.BLOCK_SIZE >= 0: return "y - 1" elif node.get_direction() == definitions.CART_DIRECTION_SOUTH and node.get_y() * definitions.BLOCK_SIZE + definitions.BLOCK_SIZE < definitions.HEIGHT_MAP: return "y + 1" elif node.get_direction() == definitions.CART_DIRECTION_WEST and node.get_x() * definitions.BLOCK_SIZE - definitions.BLOCK_SIZE >= 0: return "x - 1" else: return False def move(self): if self.direction == definitions.CART_DIRECTION_EAST: self.x = self.x + definitions.BLOCK_SIZE elif self.direction == definitions.CART_DIRECTION_NORTH: self.y = self.y + definitions.BLOCK_SIZE elif self.direction == definitions.CART_DIRECTION_SOUTH: self.y = self.y - definitions.BLOCK_SIZE elif self.direction == definitions.CART_DIRECTION_WEST: self.x = self.x - definitions.BLOCK_SIZE def rotate_right(self): if self.direction == 1: self.direction = 4 else: self.direction = self.direction - 1 def rotate_left(self): if self.direction == 4: self.direction = 1 else: self.direction = self.direction + 1