#########################################################
#######IMPORT + DECLARATION DES VARIABLES GLOBALES#######
#########################################################

import pyxel
#centre de la balle
xc = 61
yc = 61
#vitesse de la balle
vxc = 3
vyc = 2
#drapeau de fin de jeu
gameOver = 0

#########################################################
#######               FONCTIONS PERSO             #######
#########################################################
def collision(x1, y1, r1, x2, y2, l2, h2):
    """      x1, y1 = centre de la balle // r1 = rayon de la balle 
             x2,x2 = coin supérieur gauche de la raquette // l2, h2 = longeur largeur de la raquette"""
    
    #Calcul des coordonées des bords des rectangles 
    gauche1 = x1-r1
    droite1 = x1 + r1
    haut1 = y1- r1
    bas1 = y1 + r1

    gauche2 = x2
    droite2 = x2 + l2
    haut2 = y2
    bas2 = y2 + h2

    # Vérification du chevauchement (les rectangles doivent avoir des coordonnées communes en X et en Y en même temps)
    chevauchementX = (gauche1 < droite2) and (droite1 > gauche2)
    chevauchementY = (haut1 < bas2) and (bas1 > haut2)
    return chevauchementX and chevauchementY
#########################################################
#######                   UPDATE                  #######
#########################################################

def update():
    global xc, yc, vxc, vyc,gameOver

    # Quitter si touche Q appuyée
    
    if pyxel.btnp(pyxel.KEY_Q):
        pyxel.quit()

    #Détection des collisions entre la balle et la raquette
    if (collision(xc,yc,4,1,pyxel.mouse_y, 4, 16)):
        vxc = abs(vxc)

    #Détection de la sortie de terrain de la balle
    if xc < 1:
        gameOver = 1

    # Détection de la collision entre la balle et les autres bords du terrain
        
    if  xc > 127:
        vxc = - vxc
    if yc < 1 or yc > 127:
        vyc = - vyc    
    
    # MAJ des coordonnées X et Y de la balle
    xc = xc + vxc
    yc = yc + vyc



#########################################################
#######                    DRAW                   #######
#########################################################

def draw():    
    pyxel.cls(0)
    if gameOver == 0 :
        pyxel.circ(xc, yc, 3, 10)
        pyxel.blt(1,pyxel.mouse_y,0,0,0,4,16)
        #pyxel.rect(1,pyxel.mouse_y, 4, 16, 5)
    else :
        pyxel.text(50,64,"Game Over", 7)
    
#########################################################
#######                     MAIN                  #######
#########################################################    

pyxel.init(128,128)
pyxel.load("res2.pyxres")
pyxel.run(update, draw)

#########################################################
#######                    FIN                    #######
#########################################################