Mercurial > blow
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):
