コード例 #1
0
ファイル: ghost.py プロジェクト: Nicklason/pycman
    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
コード例 #2
0
ファイル: ghost.py プロジェクト: Nicklason/pycman
    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