changeset 50:43f05da2cfa5

resetowanie planszy po naciśnięciu "r"
author tomu <r.drzazga@gmail.com>
date Sat, 10 Sep 2011 12:52:44 +0200
parents 63047e7bbeb0
children 00edd84ee29b
files qq.py
diffstat 1 files changed, 30 insertions(+), 18 deletions(-) [+]
line wrap: on
line diff
--- a/qq.py	Sat Sep 10 12:37:14 2011 +0200
+++ b/qq.py	Sat Sep 10 12:52:44 2011 +0200
@@ -343,6 +343,10 @@
         return self.get_bool(x, y, 'block')
 
 
+class ResetLevel(Exception):
+    """Naciśnięto 'r', resetujemy planszę."""
+
+
 class Game(object):
     """The main game object."""
 
@@ -379,16 +383,15 @@
             overlay.image = image
             overlay.rect = image.get_rect().move(x*24, y*16-16)
 
+
+    def pressed(self, key):
+        """Check if the specified key is pressed."""
+        keys = pygame.key.get_pressed()
+        return self.pressed_key == key or keys[key]
+
     def control(self):
         """Handle the controls of the game."""
 
-        keys = pygame.key.get_pressed()
-
-        def pressed(key):
-            """Check if the specified key is pressed."""
-
-            return self.pressed_key == key or keys[key]
-
         def walk(d):
             """Start walking in specified direction."""
 
@@ -404,26 +407,35 @@
             self.player.animation = self.player.walk_animation()
             self.player.pos = pos
 
-        if pressed(pg.K_UP):
+        if self.pressed(pg.K_UP):
             walk(0)
-        elif pressed(pg.K_DOWN):
+        elif self.pressed(pg.K_DOWN):
             walk(2)
-        elif pressed(pg.K_LEFT):
+        elif self.pressed(pg.K_LEFT):
             walk(3)
-        elif pressed(pg.K_RIGHT):
+        elif self.pressed(pg.K_RIGHT):
             walk(1)
+        elif self.pressed(pg.K_r):
+            self.pressed_key = None
+            raise ResetLevel()
         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()
-
+            while 1:
+                self.shadows = pygame.sprite.RenderUpdates()
+                self.sprites = SortedUpdates()
+                self.overlays = pygame.sprite.RenderUpdates()
+                self.monsters = []
+                self.use_level(Level(filename=level_file))
+                try:
+                    self.play_level()
+                except ResetLevel:
+                    while self.pressed(pg.K_r):
+                        pygame.time.wait(100)
+                    continue
+                break
 
     def play_level(self):
         """Run the main loop."""