def move(self, target): """ Vil prøve at bevæge sig til en bestemt position""" if Map.inside_grid(self.pos) is True: self.prev_grid = Map.get_grid(self.pos) if Map.inside_grid(self.pos) is False and Map.axis_aligned( self.pos, target) is False: # Hvis man ikke er inde i en grid, og x- eller y-aksen ikke er den samme, så gå helt ind i den grid man er i # Dette tvinger spøgelserne til kun at bevæge sig inde i tiles currentgrid = Map.get_grid(self.pos) target = Map.grid_to_pos(currentgrid) if self.pos[0] < target[0]: self.pos[0] = target[0] if self.pos[0] + self.speed > target[ 0] else self.pos[0] + self.speed self.direction = 3 elif self.pos[0] > target[0]: self.pos[0] = target[0] if self.pos[0] - self.speed < target[ 0] else self.pos[0] - self.speed self.direction = 4 elif self.pos[1] < target[1]: self.pos[1] = target[1] if self.pos[1] + self.speed > target[ 1] else self.pos[1] + self.speed self.direction = 1 elif self.pos[1] > target[1]: self.pos[1] = target[1] if self.pos[1] - self.speed < target[ 1] else self.pos[1] - self.speed self.direction = 0
def pathfinding(self, targetgrid): """ Find den korteste vej """ currentgrid = Map.get_grid(self.pos) """ matrix = self.matrix.copy() if hasattr(self, "prev_grid"): # Bloker tile som er bag spøgelse for at den ikke bevæge sig modsat # Gem den tile som spøgelset sidst var inde i matrix[self.prev_grid[0]][self.prev_grid[1]] = 1 """ path = astar(self.matrix, tuple(currentgrid), tuple(targetgrid)) if path is False or len(path) is 0: return None nextgrid = list(path[-1]) nextpos = Map.grid_to_pos(nextgrid) # Path må kun ændre sig hvis man ikke kommer til at bevæge sig den modsatte vej af hvad man gør nu return nextpos