Mercurial > ziew
changeset 0:f9b4d22a39f0
Simple walking and jumping
| author | Radomir Dopieralski <sheep-devel@sheep.art.pl> |
|---|---|
| date | Thu, 16 Feb 2012 22:28:42 +0100 |
| parents | |
| children | 807e74767ddd |
| files | ziew.png ziew.py |
| diffstat | 2 files changed, 82 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ziew.py Thu Feb 16 22:28:42 2012 +0100 @@ -0,0 +1,82 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +import pygame +from pygame import locals as pg + +def load_tiles(filename, width, height): + image = pygame.image.load(filename).convert() + image_width, image_height = image.get_size() + tiles = [] + for y in range(image_height/height): + for x in range(image_width/width): + rect = (x * width, y * height, width, height) + tiles.append(image.subsurface(rect)) + return tiles + + +class PlayerCharacter(pygame.sprite.Sprite): + + frames = [0, 0, 1, 1, 0, 0, 2, 2] + + def __init__(self): + super(PlayerCharacter, self).__init__() + self.images = load_tiles('ziew.png', 64, 64) + self.image = self.images[0] + self.rect = self.image.get_rect() + self.frame = 0 + self.dx = 3 + self.dy = 0 + + def update(self): + if self.dx: + self.frame = (self.frame + 1) % len(self.frames) + else: + self.frame = 0 + if self.dy: + frame = 2 + else: + frame = self.frames[self.frame] + if self.dx >= 0: + frame += 3 + self.dy += 1 + self.image = self.images[frame] + self.rect.move_ip(self.dx, self.dy) + if self.rect.bottom > 480: + self.dy = 0 + self.rect.bottom = 480 + + def jump(self): + if self.dy != 0: + return + self.dy = -16 + + +if __name__ == '__main__': + pygame.display.init() + screen = pygame.display.set_mode((640, 480)) + clock = pygame.time.Clock() + game_over = False + background = pygame.Surface(screen.get_size()) + sprites = pygame.sprite.RenderUpdates() + pc = PlayerCharacter() + sprites.add(pc) + while not game_over: + sprites.clear(screen, background) + sprites.draw(screen) + pygame.display.flip() + sprites.update() + clock.tick(20) + keys = pygame.key.get_pressed() + if keys[pg.K_UP]: + pc.jump() + if keys[pg.K_RIGHT]: + pc.dx = 4 + elif keys[pg.K_LEFT]: + pc.dx = -4 + else: + pc.dx = 0 + for event in pygame.event.get(): + if event.type == pg.QUIT or (event.type == pg.KEYDOWN and + event.key == pg.K_ESCAPE): + game_over = True
