Mercurial > qq
changeset 12:57b9256be7b8
move items to a separate class
| author | Radomir Dopieralski <moindev@sheep.art.pl> |
|---|---|
| date | Thu, 28 Aug 2008 10:39:40 +0200 |
| parents | a6f9541f58b1 |
| children | 320ce875b24d |
| files | qq.py |
| diffstat | 1 files changed, 39 insertions(+), 41 deletions(-) [+] |
line wrap: on
line diff
--- a/qq.py Wed Aug 27 21:29:47 2008 +0200 +++ b/qq.py Thu Aug 28 10:39:40 2008 +0200 @@ -80,6 +80,8 @@ class Sprite(pygame.sprite.Sprite): + is_player = False + def __init__(self, pos=(0, 0)): pygame.sprite.Sprite.__init__(self) self.image = self.frames[0][0] @@ -108,58 +110,54 @@ def update(self): self.animation.next() +class Items: + Wall = 0 + Floor = 1 + Stairs = 4 -class Skeleton(Sprite): - frames = load_tiles("skeleton.png") + class Skeleton(Sprite): + frames = load_tiles("skeleton.png") -class Crate(Sprite): - frames = load_tiles("box.png") + class Crate(Sprite): + frames = load_tiles("box.png") -class House(Sprite): - frames = load_tiles("house.png") + class House(Sprite): + frames = load_tiles("house.png") -class Player(Sprite): - frames = load_tiles("player.png") + class Player(Sprite): + frames = load_tiles("player.png") + is_player = True - def __init__(self, pos=(1, 1)): - Sprite.__init__(self) - self.direction = 2 - self.animation = None - self.image = self.frames[self.direction][0] - self.pos = pos - self.rect.move_ip((0, 1)) + def __init__(self, pos=(1, 1)): + Sprite.__init__(self) + self.direction = 2 + self.animation = None + self.image = self.frames[self.direction][0] + self.pos = pos + self.rect.move_ip((0, 1)) - def walk_animation(self): - for frame in range(4): - self.image = self.frames[self.direction][frame] - yield None - self.move(3*DX[self.direction], 2*DY[self.direction]) - yield None - self.move(3*DX[self.direction], 2*DY[self.direction]) + def walk_animation(self): + for frame in range(4): + self.image = self.frames[self.direction][frame] + yield None + self.move(3*DX[self.direction], 2*DY[self.direction]) + yield None + self.move(3*DX[self.direction], 2*DY[self.direction]) - def update(self): - if self.animation is None: - self.image = self.frames[self.direction][0] - else: - try: - self.animation.next() - except StopIteration: - self.animation = None + def update(self): + if self.animation is None: + self.image = self.frames[self.direction][0] + else: + try: + self.animation.next() + except StopIteration: + self.animation = None class Level: - item_names = { - 'player': Player, - 'wall': 0, - 'floor': 1, - 'skeleton': Skeleton, - 'crate': Crate, - 'house': House, - 'stairs': 4, - } def __init__(self, filename="level.map"): parser = ConfigParser.ConfigParser() parser.read(filename) @@ -169,7 +167,7 @@ for option in parser.options("level"): if option.startswith('\\'): value = parser.get("level", option).strip() - self.key[option[1]] = self.item_names[value] + self.key[option[1]] = getattr(Items, value.capitalize()) tile_width, tile_height = 24, 16 self.tiles = load_tiles(parser.get("level", "tileset"), tile_width, tile_height) @@ -248,7 +246,7 @@ self.overlays = pygame.sprite.RenderUpdates() self.level = level for pos, item in level.items.iteritems(): - if isinstance(item, Player): + if item.is_player: self.player = item self.sprites.add(item) self.shadows.add(Shadow(item))
