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
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