#programa : Pantalla.py
#autor : jorge nolasco valenzuela
#fecha : 17-08-2017
"""
descripcion : este programa
muestra el uso de juegos
Creacion de pantalla
"""
#importamos la libreria de juegos
import pygame
#importamos la libreria uso exit
import sys
#ancho de la pantalla
ANCHO=640
#ancho de la pantalla
ALTO=480
#color inicial de la pantalla verde
COLOR=(0,64,0)
"""
generar una imagen
con el nombre del autor
color texto rojo:255, 0, 0
fondo blanco:
255,255,255
"""
nombre = "Jorge Nolaco Valenzuela"
pygame.init()
my_font = pygame.font.SysFont("arial", 64)
superficie = my_font.render\
    (nombre, True, (255, 0, 0), (255,255,255))
pygame.image.save(superficie, "autor.png")
"""
Clase pelota
"""
class Pelota(pygame.sprite.Sprite):
    #constructor de la clase
    def __init__(self):
        pygame.sprite.Sprite.\
            __init__(self)
        #cargar la imagen
        try:
            self.image = pygame.\
                image.load('pelota.png')
        except:
            print("Errror al cargar la imagen")
            sys.exit(0)
        #rectangulo de la imagen
        self.rect=self.image.get_rect()
        #centramos posicion de la pelota
        self.rect.centerx = ANCHO/2
        self.rect.centery = ALTO/2
        #establecer velocidad inicial
        #velocidad pixeles x,y
        self.speed=[3,3]
    #metodo update que dara movimiento
    def update(self):
        #evitar que la pelota
        #por debajo y arriba
        if self.rect.bottom>=ALTO or self.rect.top<=0:
            self.speed[1]=-self.speed[1]
        #evitar que la pelota
        #por derecha y izquierda
        if self.rect.right>=ANCHO or self.rect.left<=0:
            self.speed[0]=-self.speed[0]
        #mover en base la posicion
        self.rect.move_ip(self.speed)

"""
fin de Clase pelota
"""
"""
Clase paleta
"""
class Paleta(pygame.sprite.Sprite):
    #constructor de la clase
    def __init__(self):
        pygame.sprite.Sprite.\
            __init__(self)
        #cargar la imagen
        try:
            self.image = pygame.\
                image.load('paleta.png')
        except:
            print("Errror al cargar la imagen")
            sys.exit(0)
        #rectangulo de la imagen
        self.rect=self.image.get_rect()
        #centramos posicion X
        self.rect.midbottom=(ANCHO/2,ALTO-20)
        #establecer velocidad inicial
        #velocidad pixeles x,y
        self.speed=[0,0]

    #metodo update que dara movimiento
    def update(self,evento):
        #presiono flecha izquierda
        if evento.key == pygame.K_LEFT and self.rect.left>0:
            self.speed=[-10, 0]
        #presiono flecha derecha
        elif evento.key == pygame.K_RIGHT  and self.rect.right<ANCHO:
            self.speed=[10, 0]
        else:
            self.speed=[0,0]
        #mover en base la posicion
        self.rect.move_ip(self.speed)
"""
fin de Clase paleta
"""

"""
Esto mostrara una ventana 
del tamaño deseado
"""
pantalla=pygame.display\
    .set_mode((ANCHO,ALTO),0,32)
#colocamos un titulo a la pantalla
pygame.display.\
    set_caption("juego de pelotas")
#dibujar la pelota
pelota=Pelota()
#dibujar la paleta
paleta=Paleta()
#ciclo infinito
#crear un reloj
reloj=pygame.time.Clock()
#repetir pulsacion
pygame.key.set_repeat(60)
while True:
    #establecer los fotogramas
    reloj.tick(60)
    #manejar o revisar eventos
    for evento in pygame.event.get():
        #si  el evento es cerrar
        if evento.type==pygame.QUIT:
            #salir
            sys.exit()
        #manejo de teclado
        if evento.type==pygame.KEYDOWN:
            paleta.update(evento)

        #mostrando el evento ocurrido
        #print(evento)
    #actualizar la posicion de la pelota
    pelota.update()
    #colision entre pelota y paleta
    if pygame.sprite.collide_rect(pelota,paleta):
        pelota.speed[1]=-pelota.speed[1]
    #rellenar la pantalla antes de dibujar pelota
    pantalla.fill(COLOR)
    # dibujar la pelota en la pantalla
    pantalla.blit\
        (pelota.image,pelota.rect)
    # dibujar la paleta en la pantalla
    pantalla.blit\
        (paleta.image,paleta.rect)
    # redibujar la pantalla
    pygame.display.flip()




