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 

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.