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)
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)
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)
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))
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
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