# on importe tout le contenu du module tkinter
# pour raccourcir la syntaxe il sera simplement appelé tk dans la suiteimport tkinter as tk
import tkinter as tk

# Fenêtre principale
root = tk.Tk()
#appel de la méthode title de l’objet root pour définir le titre de la fenêtre
root.title("Mini casse-brique (3 murs)")

# Canvas de jeu (Zone de dessin graphique = constituée de pixels)
LARGEUR = 400 # définition d’une constante
HAUTEUR = 300 # définition d’une constante 
zone_de_jeu = tk.Canvas(root, width=LARGEUR, height=HAUTEUR, bg='black')
zone_de_jeu.pack() # méthode pack pour placer la zone de jeu dans root


# Création de la balle
BALLE_RAYON = 8
# positionner ball dans un rectangle englobant (x1,y1,x2,y2)
# x1=gauche=190 y1=haut=140 x2=droit=210 y2=bas=160 couleur = blanc
CENTRE_X = LARGEUR//2
CENTRE_Y = HAUTEUR//2
balle = zone_de_jeu.create_oval(CENTRE_X - BALLE_RAYON//2, CENTRE_Y - BALLE_RAYON//2, CENTRE_X + BALLE_RAYON//2 , CENTRE_Y + BALLE_RAYON//2, fill='white')

# Vitesse initiale
dx, dy = 3, -3

def déplacer_balle():
    # on récupère deux variables dx et dy du programme principal 
    global dx, dy

    # Déplacement d'un objet dans la zone de jeu
    zone_de_jeu.move(balle, dx, dy)

    # Récupération des coordonnées
    x1, y1, x2, y2 = zone_de_jeu.coords(balle)

    # Rebond à gauche ou à droite on inverse la composante x du déplacement
    if x1 <= 0 or x2 >= LARGEUR:
        dx = -dx

    # Rebond en haut ou en bas on inverse la composante y du déplacement
    if y1 <= 0 or y2 >= HAUTEUR :
        dy = -dy

    # demander l'exécution de la fonction déplacer_balle() dans 20ms
    root.after(20, déplacer_balle)
# 
# # Lancer le mouvement
déplacer_balle()
# boucle principale
root.mainloop()
