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
Binary file blow/beast.png has changed
--- 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
+
Binary file blow/hit.sfxr has changed
Binary file blow/hit.wav has changed
--- 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):
Binary file blow/swoosh.png has changed
Binary file blow/swoosh.sfxr has changed
Binary file blow/swoosh.wav has changed
Binary file blow/tree.png has changed