'''
 Animating multiple objects using a list.
 Sample Python/Pygame Programs
 Simpson College Computer Science
 http://programarcadegames.com/
 http://simpson.edu/computer-science/

 Vídeo explicativo: http://youtu.be/Gkhz3FuhGoI
'''
# Importamos las bibliotecas llamadas 'pygame' y 'random'.
import pygame
import random

# Inicializamos el motor de juegos.
pygame.init()

NEGRO = [0, 0, 0]
BLANCO = [255, 255, 255]

# Establecemos el largo y ancho de la pantalla.
dimensiones = [400, 400]

pantalla = pygame.display.set_mode(dimensiones)
pygame.display.set_caption("Está Nevando")

# Creamos un array vacío
lista_nieve = []

# Iteramos 50 veces y añadimos un copo de nieve en una ubicación (x,y) aleatoria.
for i in range(50):
    x = random.randrange(0, 400)
    y = random.randrange(0, 400)
    lista_nieve.append([x, y])

reloj = pygame.time.Clock()

# Iteramos hasta que el usuario haga click sobre le botón de salida.
hecho = False
while not hecho:
    
    for evento in pygame.event.get():  # El usuario realizó alguna acción.
        if evento.type == pygame.QUIT: # Si el usuario hizo click sobre salir.
            hecho = True # Marcamos que hemos acabado y abandonamos este bucle.

    # Establecemos el color de fondo.
    pantalla.fill(NEGRO)

    # Procesamos cada copo de la lista.
    for i in range(len(lista_nieve)):
   
        # Dibujamos el copo de nieve
        pygame.draw.circle(pantalla, BLANCO, lista_nieve[i], 2)
        
        # Desplazamos un píxel hacia abajo el copo de nieve.
        lista_nieve[i][1] += 1
        
        # Si el copo se escapa del fondo de la pantalla.
        if lista_nieve[i][1] > 400:
            # Lo movemos justo encima del todo
            y = random.randrange(-50, -10)
            lista_nieve[i][1] = y
            # Le damos una nueva ubicación x
            x = random.randrange(0, 400)
            lista_nieve[i][0] = x
            
    # Avanzamos y actualizamos con lo que hemos dibujado.
    pygame.display.flip()
    reloj.tick(60)
            
# Pórtate bien con el IDLE. Si nos olvidamos de esta línea, el programa se 'colgará'
# en la salida.
pygame.quit ()