1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
| from tkinter import * #Le programme va aller chercher toute les fonctions de la bibliothèque Tkinter
import math,random #Le programme va aller chercher toute les fonctions de la bibliotèque math
fenetre= Tk()
fenetre.title("Casse briques")
def Clavier(event):
""" Gestion de l'événement Appui sur une touche du clavier """
global x1,x2
touche = event.keysym
# déplacement vers la droite
if touche == 'Right' and x2<=549:
x1 += 13.5333333333
x2 += 13.5333333333
# déplacement vers la gauche
if touche == 'Left' and x1>=0.4:
x1 -= 13.5333333333
x2 -= 13.5333333333
#On donne les nouvelles coordonnées à la raquette
Can1.coords(Rectangle1,x1,y1,x2,y2)
print(x1)
print(x2)
def deplacement():
""" Déplacement de la balle """
global X,Y,DX,DY,RAYON,LARGEUR,HAUTEUR,FLAG,x1,x2,y1,y2
# rebond à droite
if X+RAYON+DX > LARGEUR:
X = 2*(LARGEUR-RAYON)-X
DX = -DX
# rebond à gauche
if X-RAYON+DX < 0:
X = 2*RAYON-X
DX = -DX
# rebond en bas
if Y+RAYON+DY > HAUTEUR:
Y = 2*(HAUTEUR-RAYON)-Y
DY = -DY
# rebond en haut
if Y-RAYON+DY < 0:
Y = 2*RAYON-Y
DY = -DY
X = X+DX
Y = Y+DY
# affichage
Can1.coords(Balle,X-RAYON,Y-RAYON,X+RAYON,Y+RAYON)
if FLAG >0:
FLAG = 1
fenetre.after(50,deplacement) # mise à jour toutes les 50 ms
def start():
# demarrage de l'animation"
global FLAG
if FLAG ==0: # pour ne lancer quune seule boucle
FLAG =1
deplacement()
Can1 = Canvas(fenetre, width=550, height=600, highlightthickness=0)#On défini la taille de la fenêtre de jeu grace au canvas
Can1.pack()#Et on n'oublie pas le .pack() pour l'afficher
#highlightthickness=0 Permet d'enlever les bordures dû au "focus" pour
#que le programme reconnaisse les touches
LARGEUR =550 #Largeur de la fenêtre
HAUTEUR = 600 #Hauteur de la fenêtre
FLAG= 0
x1 = ((1/3)*LARGEUR)+20 #Côté gauche du rectangle
y1 = 590 #Deuxième valeur de la hauteur
x2 = ((2/3)*LARGEUR)-20 #Côté droit du rectangle
y2 = 560 #Première valeur de la hauteur
#En définissant la largeur du rectangle de cette façon on obtient une largeur égale à 1/3 de l'écran
#Et au milieu de l'écran.Ensuite on enlève 20 d'abscisse de chaque côté pour
#Raccourcir la barre trop longue à mon goût
Rectangle1 = Can1.create_rectangle(x1,y1,x2,y2,fill='blue')
#Créer les fonctions pour faire bouger le rectangle:
#Pour que le canvas capture les événement clavier, il faut qu'il soit sélectionner
#(Qu'il est le focus), donc on le sélectionne grâce à cette commande qui lui donne
#Ces contours gris
Can1.focus_set()
Can1.bind('<Key>',Clavier)
#Coordonnées de la balles
RAYON = 15 # rayon de la balle
X = LARGEUR/2 #
Y = 545 #Pour la mettre au dessus de la raquette qui est à 560pixels
# Création de la balle
Balle = Can1.create_oval(X-RAYON,Y-RAYON,X+RAYON,Y+RAYON,width=1,fill='green')
# direction initiale aléatoire de la balle
vitesse = random.uniform(1.8,2)*5
angle = random.uniform(0,2*math.pi)
DX = vitesse*math.cos(angle)
DY = vitesse*math.sin(angle)
start()
fenetre.mainloop() |
Partager