changeset 3:800c444c6a11

Walking and jumping
author Radomir Dopieralski <sheep-devel@sheep.art.pl>
date Sat, 27 Apr 2013 15:35:00 +0200
parents f701c97a27ba
children a6a9f884fb4a
files blow/game_scene.py
diffstat 1 files changed, 23 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/blow/game_scene.py	Sat Apr 27 15:22:41 2013 +0200
+++ b/blow/game_scene.py	Sat Apr 27 15:35:00 2013 +0200
@@ -1,5 +1,7 @@
 # -*- coding: utf-8 -*-
 
+import pygame
+
 from blow.sprite import Sprite
 from blow.scene import Scene
 
@@ -7,27 +9,40 @@
 BOTTOM = 420
 
 
-class GravitySprite(object):
+class FallingSprite(object):
     def __init__(self, *args, **kwargs):
-        super(GravitySprite, self).__init__(*args, **kwargs)
+        super(FallingSprite, self).__init__(*args, **kwargs)
         self.dx, self.dy = 0, 0
 
     def update(self, tick):
-        super(GravitySprite, self).update(tick)
+        super(FallingSprite, self).update(tick)
         self.dy = min(self.dy, BOTTOM - self.rect.bottom)
         self.rect.move_ip(self.dx, self.dy)
-        if self.rect.bottom < BOTTOM:
+        if not self.on_ground():
             self.dy += 1
 
+    def on_ground(self):
+        return self.rect.bottom >= BOTTOM
+
 
-class JumpingSprite(object):
+class JumpingSprite(FallingSprite):
     def update(self, tick):
         super(JumpingSprite, self).update(tick)
-        if self.rect.bottom >= BOTTOM:
+        if self.on_ground():
             self.dy = -4
 
-class HeroSprite(GravitySprite, JumpingSprite, Sprite):
-    pass
+
+class HeroSprite(JumpingSprite, Sprite):
+    def update(self, tick):
+        keys = pygame.key.get_pressed()
+        if keys[pygame.K_LEFT]:
+            self.rect.move_ip(-6, 0)
+        elif keys[pygame.K_RIGHT]:
+            self.rect.move_ip(6, 0)
+        if keys[pygame.K_UP]:
+            if self.on_ground():
+                self.dy = -24
+        super(HeroSprite, self).update(tick)
 
 
 class GameScene(Scene):