Mercurial > mhrok
changeset 15:2fd709e21c45
Randomly place the player
| author | Radomir Dopieralski <sheep-devel@sheep.art.pl> |
|---|---|
| date | Wed, 29 Feb 2012 21:52:19 +0100 |
| parents | 1f9de3322be5 |
| children | 1053363c0f22 |
| files | mhrok.py |
| diffstat | 1 files changed, 18 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/mhrok.py Wed Feb 29 21:34:30 2012 +0100 +++ b/mhrok.py Wed Feb 29 21:52:19 2012 +0100 @@ -96,6 +96,13 @@ class Player(object): + def place(self, (x, y)): + self.pos = x, y + + def make_mob(self, tiles): + self.mob = PlayerMob(tiles, self.pos) + return self.mob + def control(self, level): mx, my = self.mob.rect.topleft x, y = (mx+1)/20, (my+6)/12 @@ -121,7 +128,8 @@ class Level(object): - def __init__(self): + def __init__(self, pc): + self.pc = pc self.mobs = {} self.width = 31 self.height = 38 @@ -166,6 +174,9 @@ [Bat, Chest, Teddybear, Skeleton]) self[r(x, x+w), r(y, y+h)] = 5 + (x, y), (w, h) = random.choice(rooms) + self.pc.place((r(x, x+w), r(y, y+h))) + def __getitem__(self, (x, y)): if self.width > x >= 0 and self.height > y >= 0: @@ -234,15 +245,14 @@ return background - def render_sprites(self, tiles, pc): + def render_sprites(self, tiles): sprites = SortedUpdates() shadows = pygame.sprite.RenderUpdates() for (x, y), Mob in self.mobs.iteritems(): mob = Mob(tiles, (x, y)) sprites.add(mob) shadows.add(Shadow(tiles, mob)) - mob = PlayerMob(tiles, (0, 0)) - pc.mob = mob + mob = self.pc.make_mob(tiles) sprites.add(mob) shadows.add(Shadow(tiles, mob)) return sprites, shadows @@ -257,8 +267,8 @@ self.tiles = load_tiles('mhrok.png', 32, 32) self.background = pygame.Surface(self.screen.get_size()) - def render_level(self, level, pc): - self.sprites, self.shadows = level.render_sprites(self.tiles, pc) + def render_level(self, level): + self.sprites, self.shadows = level.render_sprites(self.tiles) self.background.blit(level.render_background(self.tiles), (0, 0)) def draw(self): @@ -286,8 +296,8 @@ self.game_over = False self.pc = Player() - self.level = Level() - self.display.render_level(self.level, self.pc) + self.level = Level(self.pc) + self.display.render_level(self.level) def main(self): while not self.game_over:
