changeset 9:f1b43f6480c5

Separate player and its sprite
author Radomir Dopieralski <sheep-devel@sheep.art.pl>
date Sun, 26 Feb 2012 14:21:36 +0100
parents d958026f72b5
children 1706e5370f76
files mhrok.png mhrok.py
diffstat 2 files changed, 15 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
Binary file mhrok.png has changed
--- a/mhrok.py	Sun Feb 26 11:19:22 2012 +0100
+++ b/mhrok.py	Sun Feb 26 14:21:36 2012 +0100
@@ -63,7 +63,7 @@
     ]
 
 
-class Player(Mob):
+class PlayerMob(Mob):
     animations = [
         [0, 0, 1, 1, 0, 0, 2, 2],
         [5, 5, 6, 6, 5, 5, 7, 7],
@@ -85,18 +85,20 @@
         (0, 0),
     ]
 
-    def control(self):
+
+class Player(object):
+    def control(self, level):
         keys = pygame.key.get_pressed()
         if keys[pg.K_UP]:
-            self.animation = 2
+            self.mob.animation = 2
         elif keys[pg.K_LEFT]:
-            self.animation = 1
+            self.mob.animation = 1
         elif keys[pg.K_DOWN]:
-            self.animation = 0
+            self.mob.animation = 0
         elif keys[pg.K_RIGHT]:
-            self.animation = 3
+            self.mob.animation = 3
         else:
-            self.animation = 4 + self.animation % 4
+            self.mob.animation = 4 + self.mob.animation % 4
 
 
 class SortedUpdates(pygame.sprite.RenderUpdates):
@@ -159,8 +161,10 @@
             mob = Mob(tiles, (x, y))
             sprites.add(mob)
             shadows.add(Shadow(tiles, mob))
-        sprites.add(pc)
-        shadows.add(Shadow(tiles, pc))
+        mob = PlayerMob(tiles, (0, 0))
+        pc.mob = mob
+        sprites.add(mob)
+        shadows.add(Shadow(tiles, mob))
         return sprites, shadows
 
 
@@ -200,13 +204,13 @@
         self.clock = pygame.time.Clock()
         self.game_over = False
 
-        self.pc = Player(self.display.tiles, (0, 0))
+        self.pc = Player()
         self.level = Level((15, 14))
         self.display.render_level(self.level, self.pc)
 
     def main(self):
         while not self.game_over:
-            self.pc.control()
+            self.pc.control(self.level)
             self.display.draw()
             self.clock.tick(15)
             for event in pygame.event.get():