Collisions casse briques

Messages postés
1
Date d'inscription
dimanche 5 mai 2019
Statut
Membre
Dernière intervention
5 mai 2019
-
Bonjour, je souhaite faire un casse brique pour mon projet d'isn mais je suis bloqué sur comment faire les collisions de la balle avec les briques , si vous pouvez m'aider svp , merci.
Voici mon code :
###################################################################

from tkinter import*
from random import randrange
from math import*

print('cliquer sur entrer pour démarrer')
#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') 



#Collisions       

##Largeur=50
##Longueur=20
##Coord_brique=[50,500]
##i=1
##while i<=len(Coord_brique):
##     if  Coord_brique[i][1]-2<= yp <=Coord_brique +12 and Coord_brique[i][1]-2 <= x <= Coord_brique +12:
##         Coord_brique[i:i+1]=[]
##         Coord_brique[i:i+1]=[]
##         Can1.delete(fen1,Coord_brique)
## 
    
    

 
Can1.focus_set()
 
Can1.bind('<Key>', Clavier) 
 
fenetre.mainloop()


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.
Afficher la suite