Mercurial > mhrok
changeset 11:e7c684cfe063
Make map block the player
| author | Radomir Dopieralski <sheep-devel@sheep.art.pl> |
|---|---|
| date | Sun, 26 Feb 2012 16:40:41 +0100 |
| parents | 1706e5370f76 |
| children | 88cb0ac8e488 |
| files | mhrok.py |
| diffstat | 1 files changed, 11 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/mhrok.py Sun Feb 26 16:01:19 2012 +0100 +++ b/mhrok.py Sun Feb 26 16:40:41 2012 +0100 @@ -35,7 +35,7 @@ self.image = self.frames[0] self.rect = self.image.get_rect() self.frame = 0 - self.rect.move_ip(6 + 20 * x, 12 * y) + self.rect.move_ip(4 + 20 * x, 12 * y) self.depth = self.rect.bottom def update(self): @@ -95,14 +95,15 @@ class Player(object): def control(self, level): + mx, my = self.mob.rect.topleft keys = pygame.key.get_pressed() - if keys[pg.K_UP]: + if keys[pg.K_UP] and level[(mx - 4 + 5) / 20, (my + 6 - 3) / 12]: self.mob.animation = 2 - elif keys[pg.K_LEFT]: + elif keys[pg.K_LEFT] and level[(mx - 9 + 5) / 20, (my + 6) / 12]: self.mob.animation = 1 - elif keys[pg.K_DOWN]: + elif keys[pg.K_DOWN] and level[(mx - 4 + 5) / 20, (my + 9 + 3) / 12]: self.mob.animation = 0 - elif keys[pg.K_RIGHT]: + elif keys[pg.K_RIGHT] and level[(mx + 1 + 10) / 20, (my + 6) / 12]: self.mob.animation = 3 else: self.mob.animation = 4 + self.mob.animation % 4 @@ -115,10 +116,6 @@ return sorted(self.spritedict.keys(), key=lambda sprite: getattr(sprite, "depth", 0)) - def move(self, (dx, dy)): - for sprite in self.sprites(): - sprite.rect.move_ip(dx, dy) - class Level(object): def __init__(self, (width, height)): @@ -136,6 +133,7 @@ self.map[0][1] = 2 self.map[5][5] = 3 self.map[6][7] = 4 + self.map[-1][-1] = 1 self.mobs[2, 3] = Bat self.mobs[4, 2] = Chest @@ -149,15 +147,15 @@ return None def render_background(self, tiles): - background = pygame.Surface((self.width * 20 + 28, self.height * 12 + 36)) - background.fill((24, 16, 16)) + background = pygame.Surface((self.width * 20 + 20, self.height * 12 + 20)) + background.fill((16, 8, 0)) blood = tiles[21].copy() blood.set_alpha(220) blood2 = tiles[22].copy() blood2.set_alpha(220) for y, row in enumerate(self.map): for x, square in enumerate(row): - pos = x * 20 + 6, y * 12 + pos = x * 20 + 4, y * 12 if square == 1: background.blit(tiles[23], pos) elif square == 2: @@ -230,7 +228,7 @@ self.game_over = False self.pc = Player() - self.level = Level((30, 36)) + self.level = Level((31, 38)) self.display.render_level(self.level, self.pc) def main(self):
