Mercurial > qq
changeset 11:a6f9541f58b1
test for large sprites: a house
| author | Radomir Dopieralski <moindev@sheep.art.pl> |
|---|---|
| date | Wed, 27 Aug 2008 21:29:47 +0200 |
| parents | b87fd9e8c365 |
| children | 57b9256be7b8 |
| files | ground.png house.png level.map qq.py |
| diffstat | 4 files changed, 14 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/level.map Wed Aug 27 19:56:05 2008 +0200 +++ b/level.map Wed Aug 27 21:29:47 2008 +0200 @@ -1,14 +1,15 @@ [level] -tileset = dungeon.png +tileset = ground.png \#: wall \.: floor \@: player \S: skeleton \b: crate \>: stairs +\h: house map: ###.########### #.......#.#.#.# - #.>....#.#.#.## + #.>....#.#.h.## #...@.......#.# #......s...#.## #..............
--- a/qq.py Wed Aug 27 19:56:05 2008 +0200 +++ b/qq.py Wed Aug 27 21:29:47 2008 +0200 @@ -80,11 +80,12 @@ class Sprite(pygame.sprite.Sprite): - def __init__(self): + def __init__(self, pos=(0, 0)): pygame.sprite.Sprite.__init__(self) self.image = self.frames[0][0] self.rect = self.image.get_rect() self.animation = self.stand_animation() + self.pos = pos def _get_pos(self): return (self.rect.midbottom[0]-12)/24, (self.rect.midbottom[1]-16)/16 @@ -111,17 +112,13 @@ class Skeleton(Sprite): frames = load_tiles("skeleton.png") - def __init__(self, pos=(0, 0)): - Sprite.__init__(self) - self.pos = pos - class Crate(Sprite): frames = load_tiles("box.png") - def __init__(self, pos=(0, 0)): - Sprite.__init__(self) - self.pos = pos + +class House(Sprite): + frames = load_tiles("house.png") class Player(Sprite): @@ -160,6 +157,7 @@ 'floor': 1, 'skeleton': Skeleton, 'crate': Crate, + 'house': House, 'stairs': 4, } def __init__(self, filename="level.map"): @@ -170,7 +168,8 @@ self.map = parser.get("level", "map").split("\n") for option in parser.options("level"): if option.startswith('\\'): - self.key[option[1]] = parser.get("level", option).strip() + value = parser.get("level", option).strip() + self.key[option[1]] = self.item_names[value] tile_width, tile_height = 24, 16 self.tiles = load_tiles(parser.get("level", "tileset"), tile_width, tile_height) @@ -182,7 +181,7 @@ for line in self.map: x = 0 for c in line: - tile = self.item_names[self.key[c]] + tile = self.key[c] if tile: # floor if isinstance(tile, int): @@ -228,7 +227,7 @@ def __call__(self, x, y): try: - return self.item_names[self.key[self.map[y][x]]] + return self.key[self.map[y][x]] except IndexError: return None @@ -285,8 +284,8 @@ self.overlays.draw(self.screen) pygame.display.flip() while not self.game_over: + # Don't clear shadows and overlays. self.sprites.clear(self.screen, self.background) - self.shadows.clear(self.screen, self.background) self.sprites.update() if self.player.animation is None: self.control()
