class TitleScene(Scene): def __init__(self): Scene.__init__(self) self._screen = Screen() def initialize(self): self._screen.clear() self._screen.write('*** Rogue Rebuild ***') self._screen.move((0, 0)) def update(self): key = self._screen.read_key() GameScene.change(DungeonScene())
class EndingScene(Scene): def __init__(self): Scene.__init__(self) self._screen = Screen() def initialize(self): self._screen.clear() self._screen.set_color(Color.RED) self._screen.write('You Won!!') self._screen.move((0, 1)) self._screen.set_color(Color.YELLOW) self._screen.write('-- Press Any Key --') def update(self): key = self._screen.read_key() Game.over()
class DungeonScene(Scene): def __init__(self): Scene.__init__(self) self._screen = Screen() self._player = PlayerCharacter() self._floor = CurrentFloor() self._sight = Sight(self._player) self._floor.put_monster(Monster()) def initialize(self): self._screen.clear() def update(self): self._floor.update_monsters() self.draw() self.control(self._screen.read_key()) def control(self, key): if key == 'l': self.walk_player(Direction.EAST) elif key == 'h': self.walk_player(Direction.WEST) elif key == 'k': self.walk_player(Direction.NORTH) elif key == 'j': self.walk_player(Direction.SOUTH) elif key == 'y': self.walk_player(Direction.NORTH_WEST) elif key == 'u': self.walk_player(Direction.NORTH_EAST) elif key == 'b': self.walk_player(Direction.SOUTH_WEST) elif key == 'n': self.walk_player(Direction.SOUTH_EAST) elif key == '>': self.down_stairs() def walk_player(self, direction): self._floor.walk_character(direction, self._player) def down_stairs(self): if not self._floor.is_down_stairs_at(self._player.position()): return if not self._floor.is_last_floor(): self._floor.next() self._screen.clear() else: GameScene.change(EndingScene()) def draw(self): self._sight.draw(self._screen) self._player.draw(self._screen)