<-- Back to list of examples

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

import pygame

# Definimos algunos colores
NEGRO = (0, 0, 0)
BLANCO = (255, 255, 255)
AZUL = (50, 50, 255)
VERDE = (0, 255, 0)
VERDEOSC = (0, 100, 0)
ROJO = (255, 0, 0)

# Esta clase representa la pelota        
# Deriva de la clase "Sprite" en Pygame
class Pelota(pygame.sprite.Sprite):
    # Constructor. Pasa el color del bloque así como la posición x, y
    def __init__(self):
        #  Llama al constructor de la clase padre (Sprite)
        super().__init__()

        #  Variables para almacenar el alto y largo del bloque
        largo = 20
        alto = 15

        # Crea una imagen  de la pelota y la rellena de color-
        # También podría ser una imagen guardada en disco.
        self.image = pygame.Surface([largo, alto])
        self.image.fill((NEGRO))

        # Extrae el objeto rectángulo con las dimensiones de la imagen
        self.rect = self.image.get_rect()

    # Actualiza la posición de la pelota
    def update(self):
        # Obtiene la posición actual del ratón. Devuelve esta posición como
        # una lista de dos números.
        pos = pygame.mouse.get_pos()
        
        # Extrae los valores x e y de la lista, tal como si extrajéramos letras de una cadena de texto (string).
        # OBSERVACIÓN: Si quieres mantener el ratón en el fondo de la pantalla, establece y = 380, y no lo actualices
        # con la posición del ratón almacenada en pos[1]
        x = pos[0]
        y = pos[1]

        # Establece el atributo para la esquina superior izquierda donde se ubica el objeto.
        self.rect.x = x
        self.rect.y = y

pygame.init()

# Establece el alto y largo de la pantalla
dimensiones = [700,500]
pantalla = pygame.display.set_mode(dimensiones)

# Ocultamos el puntero del ratón
pygame.mouse.set_visible(False)

# Iteramos hasta que el usuario haga click sobre el botón de salir.
hecho = False

# Lo usamos para gestionar cuán rápido se actualiza la pantalla.
reloj = pygame.time.Clock()

# Esta es una lista de los 'sprites.' Cada pelota en el programa (solo hay 1) es
# añadida a la lista. La lista es gestionada por la clase 'Group.'
listade_todoslos_sprites = pygame.sprite.Group()

# Esto representa la pelota controlada por el protagonista.
pelota = Pelota()

# Añadimos la pelota a la lista de objetos controlados por el protagonista
listade_todoslos_sprites.add(pelota)

# -------- Bucle Principal  -----------
while not hecho:
    for evento in pygame.event.get(): 
        if evento.type == pygame.QUIT:
            hecho = True 

   
    
    # --- Lógica del juego
    listade_todoslos_sprites.update()

     # Limpiamos la pantalla
    pantalla.fill(BLANCO)

    # Actualizamos la posición de la pelota (usando el ratón) y dibujamos la pelota
    listade_todoslos_sprites.draw(pantalla)

    #Limitado a 60 fotogramas por segundo (fps)
    reloj.tick(60)

    # Avanzamos y actualizamos la pantalla con todo lo que hemos dibujado
    pygame.display.flip()

pygame.quit()