Bonjour,

J'ai pour projet de réaliser un casse brique sous python. Mais je bloque sur les collisions de la balle avec les briques. Si vous pouvez m'aider svp


Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
109
110
111
 
from tkinter import*
from random import randrange
from math import*
 
#On definie les paramétres
XMAX,YMAX=550,600
X,Y=265,550
DX,DY=-10,-10
xbar,ybar=275,580
RAYON=8
flag = 0
 
#Mouvement de la balle
def move():
    global X,Y,DX,DY,XMAX,YMAX,balle,flag,RAYON
    xp, yp = X+DX, Y+DY
 
    #rebond a droite
    if xp > YMAX-35 :
        DX=-DX
    #rebond a gauche
    if xp < 0:
        DX=-DX
    #rebond en haut
    if yp <0:
        DY=-DY
    #rebond sur la raquette
    if yp >= ybar-10  and xp < xbar+50 and xp > xbar-50:
        DY = -DY
 
 
 
    X, Y = X+DX, Y+DY
    Can1.coords(balle,X-RAYON,Y-RAYON,X+RAYON,Y+RAYON)
 
 
    if flag > 0:
        fenetre.after(45,move)
 
 
def start(event):
    global flag
    flag=flag+1
    if flag==1:
        move()
    "démarrer"
 
def stop(event):
    "arret de l'animation"
    global flag
    flag =0
 
#Pour quitter le programme    
def Quitter (event):
    fenetre.destroy()
 
 
 
def Clavier(event):
 
    global xbar,ybar
    touche=event.keysym
 
 
    if touche == 'Left':
        xbar=xbar-30
 
    if touche == 'Right':
        xbar=xbar+30
 
    if touche == 'Escape':
        fenetre.destroy
 
 
    Can1.coords(raquette,xbar-50,ybar-8,xbar+50,ybar+8)
 
 
 
#Définition de la fenetre 
fenetre = Tk() 
fenetre.title('casse briques')
#Indique les normes du Canevas
Can1 = Canvas(fenetre, width = XMAX, height = YMAX, bg='white')
Can1.pack()
#Définition du boutton "Start"
Button(fenetre, text='Démarrer',command=start).pack(side=LEFT, padx=15,pady=10)
Can1.bind("<Return>",start)
#Définition du boutton "Quitter"
Button(fenetre, text='Quitter',command=fenetre.destroy).pack(side=RIGHT,padx=15,pady=10)
Can1.bind("<Escape>",Quitter)
#Cliquer sur p pour mettre en pause
Can1.bind("<p>",stop)
 
#Création de la raquette et de la balle 
raquette = Can1.create_rectangle(xbar-50,ybar-8,xbar+50,ybar+8,width=2,fill='black')
balle = Can1.create_oval(X-RAYON,Y-RAYON,X+RAYON,Y+RAYON,width=1,fill='red')
#Création des briques
for yb in range(50, 150, 20):
    for xb in range(50, 500, 50):
        brique=Can1.create_rectangle(xb, yb, xb+50, yb+20, fill='green') 
 
 
 
 
 
Can1.focus_set()
 
Can1.bind('<Key>', Clavier) 
 
fenetre.mainloop()