Jeux pong python /tkinter/pycharm

Bonjour,

Je voudrais savoir comment créer une collision entre la balle et le paddle.

voici mon bout de code:
 def colision(self, ballePosx, ballePosy, balleHeight, balleWidth,
                       barrePosx, barrePosy, barreHeight, barreWidth):

     

        if ((barrePosx >= ballePosx) and (barrePosx <= ballePosx+balleWidth)) or ((barrePosx+barreWidth >= ballePosx) and (barrePosx+barreWidth <= ballePosx + balleWidth)):
            if ((barrePosy >= ballePosy) and (barrePosy <= ballePosy + balleHeight)) or (
                    (barrePosy + barreHeight >= ballePosy) and (barrePosy + barreHeight <= ballePosy + balleHeight)):
                self.xspeed *= -1
                self.yspeed *= -1


EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

Merci d'y penser dans tes prochains messages.

5 réponses

  1. Bonjour,

    GROSSE ERREUR D'UTLISER TKINTER

    N'exagérons pas quand même !

    Avec Tkinter, ca marche très bien ........... :-)
    0
    1. GROSSE ERREUR D'UTLISER TKINTER
      utilise pygame c plus simple
      0
      1. Bonjour,

        Parfait, tu peux donc marquer cet appel comme "résolu"
        Pour info, chez moi, ca donne ça:

        0
        1. Bonjour,

          Alors, as-tu de la réussite ?
          0
          1. oui c'est tout bon merci beaucoup
            0
        2. Bonjour,

          Moi j'en ai fait un avec Tkinter

          Lorsque la position X de la balle (circulaire) est supérieure ou égale a la position X du bord gauche de la raquette (rectangulaire) droite moins le rayon de balle et que la position Y est entre les positions Y des bords haut et bas de la raquette, c'est que la balle touche la raquette de droite, et donc j'inverse le déplacement X de la balle, mais pas le Y bien sur ...
          #Raquette droite
          if(ball.vx > 0 and ball.x >= r_bat.x - ball.rad and ball.y > r_bat.y - ball.rad and ball.y < r_bat.y + r_bat.height + ball.rad):
              ball.vx = -ball.vx
              winsound.Beep(2000,10)
          
          #Raquette gauche
          elif(ball.vx < 0 and ball.x <= l_bat.x + l_bat.width + ball.rad and ball.y > l_bat.y - ball.rad and ball.y < l_bat.y + l_bat.height + ball.rad):
              ball.vx = -ball.vx
              winsound.Beep(2000,10)
          
          

          Si la balle atteint les bords haut et bas du terrain, j'inverse le Y
          0