# Autres langages > Python > GUI >  pygame ballon qui rebondit

## Invit

bonjour,

J'ai le programme suivant avec un disque rouge qui est suppos rebondir sur les bords de la fenetre. Le problme, c'est que ce disque reste coll au premier bord qu'il rencontre au lieu de rebondir. Je mets ci-aprs les valeurs de y,vx et vy (composantes des vitesses du disque):


```

```

Voici le code:


```

```

Alors, qu'en dites-vous?

----------


## josmiley

possible que le disque dpasse de trop les bords, avec les arrondis itou ...
genre, la position est (-1.95,4), aprs rebond c'est (-0.2,4.2) ; tu vois ?

----------


## clic4

Salut !

Lorsque le cercle arrive en dehors des bords de l'cran il se retrouve dans une position ou une partie de l'objet est inclue dans l'cran et une autre en dehors. Dans ton cas, lorsque la limite droite du carr dans laquelle est inscrit ton cercle (zdroite) dpasse la valeur maximum de l'cran tu inverses la vitesse pour faire rebondir le tout.

Le soucis, c'est que suivant les situations, si ton cercle dpasse de l'cran de plus que le vecteur de vitesse, lorsque on passe  l'itration suivante de la boucle la limite droite du cercle est TOUJOURS en dehors de l'cran. Du coup, ton algorithme inverse  nouveau la vitesse : le cercle se dirige donc cette fois vers l'extrieur de l'cran et ainsi de suite. Au final, on voit le cercle glisser sur le bord.

Pour viter cela, quand tu dtectes la sortie du cercle de l'cran, il faut le repositionner correctement (c'est--dire coll contre le bord de l'cran). De cette faon, lors du prochain dplacement ton cercle reste dans l'espace de l'cran. Sinon, plus simple, tu peux toujours annuler le dernier dplacement en faisant le chemin inverse. Le seul bmol avec cette mthode c'est que l'affichage de la collision ne sera pas parfait, contrairement  la premire solution (pas tout  fait parfaite non plus, mais trs raisonnable visuellement  ::mrgreen:: ).

Je me relis... et j'espre tre assez clair ^^Un schma en dirait bien plus long, mais j'ai la flemme  ::P:

----------

