Mercurial > blow
changeset 6:c4fd5827cb42
More monsters
| author | Radomir Dopieralski <sheep-devel@sheep.art.pl> |
|---|---|
| date | Sun, 28 Apr 2013 09:55:41 +0200 |
| parents | 359046dd78bb |
| children | edcfcb6a5132 |
| files | blow/beast.png blow/game.py blow/game_scene.py blow/hit.sfxr blow/hit.wav blow/resources.py blow/swoosh.png blow/swoosh.sfxr blow/swoosh.wav blow/tree.png |
| diffstat | 10 files changed, 47 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/blow/game.py Sat Apr 27 21:50:08 2013 +0200 +++ b/blow/game.py Sun Apr 28 09:55:41 2013 +0200 @@ -1,11 +1,17 @@ # -*- coding: utf-8 -*- +import pygame + from blow.display import Display from blow.resources import Resources from blow.game_scene import GameScene + class Game(object): def __init__(self): + pygame.display.init() + pygame.mixer.init() + self.display = Display() self.resources = Resources() self.game_over = False
--- a/blow/game_scene.py Sat Apr 27 21:50:08 2013 +0200 +++ b/blow/game_scene.py Sun Apr 28 09:55:41 2013 +0200 @@ -50,6 +50,12 @@ return self.dy >= -4 and self.rect.bottom >= BOTTOM - 8 +class TreeSprite(Sprite): + def __init__(self, *args, **kwargs): + super(TreeSprite, self).__init__(*args, **kwargs) + self.depth = -1 + + class HeroSprite(JumpingSprite, Sprite): def __init__(self, *args, **kwargs): super(HeroSprite, self).__init__(*args, **kwargs) @@ -74,11 +80,14 @@ elif self.rect.right > 780: self.wx = -4 self.rect.move_ip(self.wx, self.wy) + if self.stun and self.on_ground(): + self.stun_sound.play() def stun_animation(self): self.image = self.frames[1] self.bounce = True self.stun = True + self.stun_sound.play() for i in xrange(30): yield self.image = self.frames[0] @@ -121,10 +130,13 @@ def __init__(self, *args, **kwargs): super(SwooshSprite, self).__init__(*args, **kwargs) self.image = self.image.copy().convert() + self.image.set_alpha(0) self.animation = self.swoosh_animation() self.depth = 9 def swoosh_animation(self): + yield + yield for opacity in xrange(128, 0, -16): self.image.set_alpha(opacity) self.rect.move_ip(0, -1) @@ -135,14 +147,28 @@ class GameScene(Scene): def __init__(self, display, resources): super(GameScene, self).__init__(display, resources) + self.monsters = pygame.sprite.Group() self.background.fill((0xf0, 0xf0, 0xf0)) self.hero = HeroSprite(self.resources.hero) self.sprites.add(self.hero) self.sword = SwordSprite(self.hero, self.resources.weapons) self.sprites.add(self.sword) - self.skeleton = SkeletonSprite(self.resources.skeleton) - self.skeleton.rect.move_ip(716, 0) - self.sprites.add(self.skeleton) + + skeleton = SkeletonSprite(self.resources.skeleton) + skeleton.stun_sound = self.resources.hit + skeleton.rect.move_ip(716, 0) + self.monsters.add(skeleton) + + skeleton = SkeletonSprite(self.resources.beast) + skeleton.stun_sound = self.resources.hit + skeleton.rect.move_ip(700, 64) + self.monsters.add(skeleton) + + self.sprites.add(self.monsters) + + self.tree = TreeSprite(self.resources.tree) + self.tree.rect.midbottom = (256, BOTTOM - 32) + self.sprites.add(self.tree) def update(self, *args, **kwargs): super(GameScene, self).update(*args, **kwargs) @@ -156,12 +182,16 @@ self.hero.dy = -16 if keys[pygame.K_SPACE]: if self.sword.animation is None: + self.resources.swoosh.play() self.sword.animation = self.sword.swing_animation() self.hero.dy = -2 swoosh = SwooshSprite(self.resources.effects) swoosh.rect.midtop = self.hero.rect.topright self.sprites.add(swoosh) - if pygame.sprite.collide_mask(swoosh, self.skeleton): - self.skeleton.animation = self.skeleton.stun_animation() - self.skeleton.dx = 12 - self.skeleton.dy = -8 + monster = pygame.sprite.spritecollideany( + swoosh, self.monsters, pygame.sprite.collide_mask) + if monster: + monster.animation = monster.stun_animation() + monster.dx = 12 + monster.dy = -8 +
--- a/blow/resources.py Sat Apr 27 21:50:08 2013 +0200 +++ b/blow/resources.py Sun Apr 28 09:55:41 2013 +0200 @@ -12,8 +12,12 @@ def __init__(self): self.hero = self.load_atlas('hero.png', 64, 64) self.skeleton = self.load_atlas('skeleton.png', 64, 64) + self.beast = self.load_atlas('beast.png', 64, 64) self.weapons = self.load_atlas('weapons.png', 64, 64) self.effects = self.load_atlas('effects.png', 64, 64) + self.tree = self.load_atlas('tree.png', 256, 256) + self.swoosh = self.load_sound('swoosh.wav') + self.hit = self.load_sound('hit.wav') @staticmethod def load_sound(filename):
