[QuickBasic] probléme pour faire une colision entre 2 balles

sasuke83

New Member
Salut a tous !  :biggrin:

J'ai un petit probléme de programmation, (c'est mes debut), j'ai essayé pendant des heures sans trouver de solution :

Avec Quick basic, j'ai programmé 2 boules qui se proménent sur l'ecran, et qui rebondissent sur les bords de l'ecran. j'usque là tout va bien.

Maintenant il faut que mes 2 boules entrent en colision et rebondissent quand elles se touchent (au lieu de se traverser comme elles le font actuellement).

Pour ça, je dois utilisé pythagore, mais aprés de nombreux essais je n'y arrive toujours pas.

Quelqu'un pourrait'il m'aider ? merci

*pour la conditions avec pythagore, j'ai essayé toutes les combinaisons;<,>,=
SOIT les boules se traversent, soit les boules ne bouge pas (un PAS et un -pas a l'infini je pense) donc on dorais quelles ne bougent pas.

voici mon code :

Xdepart = 30
Ydepart = 85
Xdepart2 = 310
Ydepart2 = 200
largeurecran = 600
hauteurecran = 450
pasX = 1
pasX2 = 1
pasY = 1
pasY2 = 1
Ycercle = Ydepart
Xcercle = Xdepart
Ycercle2 = Ydepart2
Xcercle2 = Xdepart2
rayon = 30
rayon2 = 30
SCREEN 12

WHILE (1)

  CIRCLE (Xold, Yold), rayon, 0
  CIRCLE (Xcercle, Ycercle), rayon, 3
  Xold = Xcercle
  Xcercle = Xcercle + pasX

  IF (Xcercle >= largeurecran) OR (Xcercle <= 0) THEN
   pasX = -pasX
  END IF
 
 
  Yold = Ycercle
  Ycercle = Ycercle + pasY


  IF (Ycercle >= hauteurecran) OR (Ycercle <= 0) THEN
   pasY = -pasY
  END IF


  CIRCLE (Xold2, Yold2), rayon2, 0
  CIRCLE (Xcercle2, Ycercle2), rayon2, 12
  Xold2 = Xcercle2
  Xcercle2 = Xcercle2 + pasX2

  IF (Xcercle2 >= largeurecran) OR (Xcercle2 <= 0) THEN
   pasX2 = -pasX2
  END IF


  Yold2 = Ycercle2
  Ycercle2 = Ycercle2 + pasY2


  IF (Ycercle2 >= hauteurecran) OR (Ycercle2 <= 0) THEN
   pasY2 = -pasY2
  END IF


  IF ((rayon + rayon2) ^ 2) =< ((Ycercle2 - Ycercle) ^ 2) + ((Xcercle2 + Xcercle) ^ 2) THEN
   pasY2 = -pasY2
   pasX2 = -pasX2
   pasY = -pasY
   pasX = -pasX
  END IF

           
  FOR tempo = 1 TO 10000
  NEXT


WEND
 

dununfolette

Best Member
Tu as trouvé la sulution non ?
Voui voui je suis extra-lucide :happy:
[sub]Tu n'as pas dis ce que c'était la solution sur Web-IG d'ailleurs :wink2:[/sub]
 

sasuke83

New Member
une scruteuse de forum....

une jeune et jolie fille dans l'informatique :wub

Pourquoi ya pas une fille dans ma classe :cry:

la solution, ou plutot l'erreur étais dans cette ligne:

IF ((rayon + rayon2) ^ 2) =< ((Ycercle2 - Ycercle) ^ 2) + ((Xcercle2 + Xcercle) ^ 2) THEN

IL fallait mettre ((Xcercle2 - Xcercle), et non pas +
 

Ca peut vous intéresser