Jeux pong python /tkinter/pycharm

tkinter4455 -  
Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   -
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. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     
    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
  2. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     
    Bonjour,

    Alors, as-tu de la réussite ?
    0
    1. tkinter4455
       
      oui c'est tout bon merci beaucoup
      0
  3. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     
    Bonjour,

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

    0
  4. ilyasc Messages postés 62 Date d'inscription   Statut Membre Dernière intervention   1
     
    GROSSE ERREUR D'UTLISER TKINTER
    utilise pygame c plus simple
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     
    Bonjour,

    GROSSE ERREUR D'UTLISER TKINTER

    N'exagérons pas quand même !

    Avec Tkinter, ca marche très bien ........... :-)
    0