Esempio n. 1
0
 def do_move(self, elapsed):
     """Move carried and pushed items at the same time as the player."""
     Sprite.do_move(self, elapsed)
     for item in self.carrying:
         item.pos = self.pos
     for movable in self.pushing:
         movable.pos = self.get_pos_in_dir(self.move_dir)
Esempio n. 2
0
    def after_move(self):
        """After moving onto fire, keep moving in the same direction if possible."""
        if (self.get_cell_type() == 'Fire'
            and self.level.sprite_can_enter(self.get_pos_in_dir(self.move_dir))):
            self.to_move = 1

        Sprite.after_move(self)
Esempio n. 3
0
    def after_move(self):
        """Pick up items in this cell, and start adjacent Rovers following."""
        for item in self.pushing:
            item.after_move()
        self.pushing.clear()

        for item in self.level.sprites.item.on(self.pos):
            if item not in self.carrying:
                self.carrying.add(item)

        for sprite in self.level.sprites.on(*[self.get_pos_in_dir(direction) for direction in range(4)]):
            if sprite.type == "Rover" and sprite not in self.followers:
                self.followers.add(sprite)

        Sprite.after_move(self)
Esempio n. 4
0
 def start_move(self, direction):
     """Start followers moving as well."""
     Sprite.start_move(self, direction)
     # followers move toward player's previous location
     for follower in self.followers:
         follower.start_move(follower.get_dir_of_pos(self.pos))
Esempio n. 5
0
from roverchip.sprite import Sprite


class Toggle(Sprite):
    def __init__(self, level, (x, y), is_solid=True):
        Sprite.__init__(self, level, (x, y))

        self.is_solid = is_solid
Esempio n. 6
0
from roverchip.sprite import Sprite


class Robot(Sprite):
    tile_rotates = True
    is_destructible = True
    is_enemy = True
    is_solid = True

    def __init__(self, level, (x, y), rotate=0, follow_dir=0):
        Sprite.__init__(self, level, (x, y), rotate)

        self.follow_dir = follow_dir  # 0 to follow left wall, 1 to follow right wall


    def start_turn(self):
        if not self.to_move:
            for turns in (1, 0, -1, -2):
                new_dir = (self.rotate + (turns if self.follow_dir else -turns)) % 4
                if self.level.enemy_can_enter(self.get_pos_in_dir(new_dir)):
                    self.start_move(new_dir)
                    break