 
# -*- encoding: utf-8 -*-
import pygame
from pygame.sprite import Sprite
NIVEL_SUELO = 200
COLOR_GRIS = (50, 50, 50)
class Personaje(Sprite):
    "Personaje rectangular que puede caminar y saltar."
    def __init__(self):
        Sprite.__init__(self)
        self.velocidad_inicial = 0
        self.crear_imagen_representacion()
    def crear_imagen_representacion(self):
        self.image = pygame.surface.Surface((30, 30))
        self.image.fill((100, 255, 100))
        self.rect = self.image.get_rect()
        self.rect.center = 160, 200
    def update(self):
        "Actualiza la posición del personaje en base al estado del teclado."
        teclas = pygame.key.get_pressed()
        if teclas[pygame.K_LEFT]:
            self.rect.move_ip(-4, 0)
        
        if teclas[pygame.K_RIGHT]:
            self.rect.move_ip(4, 0)
        # Salto
        if self.rect.bottom >= NIVEL_SUELO:
            self.rect.bottom = NIVEL_SUELO
            
            # solo evalúa un salto si está en el suelo.
            if teclas[pygame.K_UP]:
                self.velocidad_inicial = -10
                self.actualizar_salto()
        else:
            self.actualizar_salto()
    def actualizar_salto(self):
        # si está saltando actualiza su posición
        self.rect.y += self.velocidad_inicial
        self.velocidad_inicial += 0.5
    def draw(self, screen):
        "Muestra al personaje en pantalla."
        screen.blit(self.image, self.rect.center)
# Inicio del programa principal
salir = False
screen = pygame.display.set_mode((320, 240))
personaje = Personaje()
while not salir:
    for evento in pygame.event.get():
        if evento.type == pygame.QUIT:
            salir = True
    personaje.update()
    screen.fill(COLOR_GRIS)
    personaje.draw(screen)
    pygame.display.flip()
    pygame.time.delay(10)



Volver a Artículos, traducciones y documentación
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado