"""
Sample Python/Pygame Programs
Simpson College Computer Science
http://programarcadegames.com/
http://simpson.edu/computer-science/
"""

import pygame

NEGRO = (0, 0, 0)
BLANCO = (255, 255, 255)
       

class Protagonista(pygame.sprite.Sprite):
    """Esta clase representa la barra del fondo que controla el protagonista"""

    # -- Métodos    
    def __init__(self,x,y):
        """Función Constructor"""
        # Llama al constructor de la clase padre
        super().__init__()
        
        # Establecemos largo y alto
        self.image = pygame.Surface([15, 15])
        self.image.fill(NEGRO)

        # Hacemos que la esquina superior izquierda sea la ubicación inicial.
        self.rect = self.image.get_rect()
        self.rect.x = x
        self.rect.y = y

        # -- Atributos
        # Establecemos la velocidad del vector
        self.change_x = 0
        self.change_y = 0     
    
    def cambiovelocidad(self,x,y):
        """Cambiamos la velocidad del protagonista"""
        self.change_x += x
        self.change_y += y
        
    # Encontramos una posición nueva para el protagonista
    def update(self):
        self.rect.x += self.change_x
        self.rect.y += self.change_y


# Llamamos esta función para que la biblioteca Pygame pueda iniciarse ella misma.
pygame.init()

# Creamos una pantalla de 800x600
pantalla = pygame.display.set_mode([800, 600])

# Establecemos el título de la ventana
pygame.display.set_caption('Ensayo')

# Creamos el objeto protagonista
protagonista = Protagonista(50, 50)
listade_todoslos_sprites = pygame.sprite.Group()
listade_todoslos_sprites.add(protagonista)

reloj = pygame.time.Clock()
hecho = False

while not hecho:
    
    for evento in pygame.event.get():
        if evento.type == pygame.QUIT:
            hecho = True
        # Ajustamos la velocidad según la tecla presionada
        elif evento.type == pygame.KEYDOWN:
            if evento.key == pygame.K_LEFT:
                protagonista.cambiovelocidad(-3,0)
            elif evento.key == pygame.K_RIGHT:
                protagonista.cambiovelocidad(3,0)
            elif evento.key == pygame.K_UP:	
                protagonista.cambiovelocidad(0,-3)
            elif evento.key == pygame.K_DOWN:
                protagonista.cambiovelocidad(0,3)                
        # Reseteamos la velocidad cuando la tecla es hacia arriba      
        elif evento.type == pygame.KEYUP:
            if evento.key == pygame.K_LEFT:
                protagonista.cambiovelocidad(3,0)
            elif evento.key == pygame.K_RIGHT:
                protagonista.cambiovelocidad(-3,0)
            elif evento.key == pygame.K_UP:
                protagonista.cambiovelocidad(0,3)
            elif evento.key == pygame.K_DOWN:
                protagonista.cambiovelocidad(0,-3)
                
    # Esto mueve al bloque protagonista según la velocidad actual
    listade_todoslos_sprites.update()
    
    # -- Dibujamos todo
    # Limpiamos la pantalla
    pantalla.fill(BLANCO)
     
    # Dibuja los sprites
    listade_todoslos_sprites.draw(pantalla)
    
    # Actualiza la pantalla
    pygame.display.flip()
    
    # Pausa
    reloj.tick(60)
                
pygame.quit()