changeset 40:d0dc54dc8dad

switching levels
author Radomir Dopieralski <sheep-devel@sheep.art.pl>
date Sat, 10 Sep 2011 11:28:16 +0200
parents e3900622d58d
children cb099f2e631b
files qq.py
diffstat 1 files changed, 23 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/qq.py	Sat Sep 10 11:11:05 2011 +0200
+++ b/qq.py	Sat Sep 10 11:28:16 2011 +0200
@@ -31,6 +31,12 @@
 # Dimensions of the map tiles
 MAP_TILE_WIDTH, MAP_TILE_HEIGHT = 24, 16
 
+LEVELS = [
+    'level01.map',
+    'level.map',
+]
+
+
 class TileCache(object):
     """Load the tilesets lazily into global cache"""
 
@@ -330,11 +336,6 @@
         self.screen = pygame.display.get_surface()
         self.pressed_key = None
         self.game_over = False
-        self.shadows = pygame.sprite.RenderUpdates()
-        self.sprites = SortedUpdates()
-        self.overlays = pygame.sprite.RenderUpdates()
-        self.monsters = []
-        self.use_level(Level(filename='level01.map'))
 
     def use_level(self, level):
         """Set the level as the current one."""
@@ -398,7 +399,18 @@
             walk(1)
         self.pressed_key = None
 
+
     def main(self):
+        for level_file in LEVELS:
+            self.shadows = pygame.sprite.RenderUpdates()
+            self.sprites = SortedUpdates()
+            self.overlays = pygame.sprite.RenderUpdates()
+            self.monsters = []
+            self.use_level(Level(filename=level_file))
+            self.play_level()
+
+
+    def play_level(self):
         """Run the main loop."""
 
         clock = pygame.time.Clock()
@@ -410,11 +422,16 @@
         while not self.game_over:
             # Don't clear shadows and overlays, only sprites.
             self.sprites.clear(self.screen, self.background)
-            self.sprites.update()
             # If the player's animation is finished, check for keypresses
             if self.player.animation is None:
+                for monster in self.monsters:
+                    if self.level.map[monster.pos[1]][monster.pos[0]] != 'h':
+                        break
+                else:
+                    return
                 self.control()
                 self.player.update()
+            self.sprites.update()
             self.shadows.update()
             # Don't add shadows to dirty rectangles, as they already fit inside
             # sprite rectangles.