Esempio n. 1
0
    def _can_move(self):
        new_self = Explorer(self.x + self.dx, self.y + self.dy, self.world)
        bounds = new_self.get_bounds()

        # Tengo una piedra y la puedo dejar en base
        if self.has_rock and self._drop_available():
            return True

        if not rect_in_world(bounds, new_self.world):
            return False

        for other in new_self.world.entities:
            # Allow collisions with other explorers.
            if isinstance(other, Explorer):
                continue

            # Allow collisions with other moronas.
            if isinstance(other, Morona):
                continue

            if not self.has_rock and isinstance(other, Rock):
                return True

            if rects_are_overlapping(bounds, other.get_bounds(), 2):
                return False

        return True
Esempio n. 2
0
    def has_room(self, obstacles, world):
        """Checks whether self has room in world, among other obstacles."""
        bounds = self.get_bounds()

        if not rect_in_world(bounds, world):
            return False

        for other in obstacles + world.entities:
            if rects_are_overlapping(bounds, other.get_bounds()):
                return False

        return True
Esempio n. 3
0
    def has_room(self, obstacles, world):
        """Checks whether self has room in world, among other obstacles."""
        bounds = self.get_bounds()

        if not rect_in_world(bounds, world):
            return False

        for other in obstacles + world.entities:
            if rects_are_overlapping(bounds, other.get_bounds()):
                return False

        return True
Esempio n. 4
0
    def has_room(self, moronas, world):
        """Checks whether self has room in world, among other moronas."""
        bounds = self.get_bounds()

        if not rect_in_world(bounds, world):
            return False

        for other in world.entities_but_explorer:

            if rects_are_overlapping(bounds, other.get_bounds()):
                return False

        return True
Esempio n. 5
0
    def _can_move(self):
        new_self = Explorer(self.x + self.dx, self.y + self.dy, self.world)
        bounds = new_self.get_bounds()

        if not rect_in_world(bounds, new_self.world):
            return False

        for other in new_self.world.entities:
            # Allow collisions with other explorers.
            if isinstance(other, Explorer):
                continue

            if rects_are_overlapping(bounds, other.get_bounds()):
                return False

        return True
Esempio n. 6
0
    def has_room(self, world):
        """Checks whether self has room in world."""
        bounds = self.get_bounds()

        if not rect_in_world(bounds, world):
            return False

        for other in world.entities:
            # Rocks can be one on top of another, it doesn't matter.
            if isinstance(other, Crumb):
                continue

            if rects_are_overlapping(bounds, other.get_bounds()):
                return False

        return True
Esempio n. 7
0
    def has_room(self, world):
        """Checks whether self has room in world."""
        bounds = self.get_bounds()

        if not rect_in_world(bounds, world):
            return False

        for other in world.entities:
            # Rocks can be one on top of another, it doesn't matter.
            if isinstance(other, Rock):
                continue

            if rects_are_overlapping(bounds, other.get_bounds()):
                return False

        return True
Esempio n. 8
0
    def _can_move(self):
        new_self = Explorer(self.x + self.dx,
                            self.y + self.dy,
                            self.world)
        bounds = new_self.get_bounds()

        if not rect_in_world(bounds, new_self.world):
            return False

        for other in new_self.world.entities:
            # Allow collisions with other explorers.
            if isinstance(other, Explorer):
                continue

            if rects_are_overlapping(bounds, other.get_bounds()):
                return False

        return True