Bonjour,
Déjà le code :
Alors j'explique mon code : je suis dans un cadre de 1000px sur 500px; dans ce cadre, j'ai défini nb1 et nb2, qui désignent des coordonnées aléatoires de x et y de newplanete, un div dont les propriétés CSS sont dans une autre fonction.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 function nouvelPlaneteBouton(){ var nb1 = Mp/2+Math.floor(Math.random() * (1001-Mp)); var nb2 = Mp/2+Math.floor(Math.random() * (501-Mp)); var newplanete = creerPlanete(nb1,nb2); cadre.appendChild(newplanete); T.push(newplanete); var Mp = masse.value*(1/5); var n = T.length; for (var i = 0 ; i < n; i++) { for (var j = i+1 ; j < n ; j++) { var xP = T[i].x; var yP = T[i].y; var xP2 = T[j].x; var yP2 = T[j].y; var distancePlanetes = Math.sqrt((xP-xP2)*(xP-xP2)+(yP-yP2)*(yP-yP2)); if (distancePlanetes<Mp/2){ T[j].style.backgroundColor="red"; } else {T[j].style.backgroundColor=couleurPlaneteVecteur.value} } } }
La planète apparaît ensuite dans le cadre et est stockée dans un tableau T[].
Ce que je souhaite faire dans cette fonction, c'est tester la collision entre 2 planètes.
Je parcoure donc le tableau avec i, qui désigne une planète stockée dans le tableau, et j, un planète également stockée dans le tableau mais au rang suivant i+1, c'est à dire qu'elle a forcément été stockée dans le tableau après la planète de rang i.
Les variables xP et yP désignent les coordonnées x et y d'une planète lorsqu'elles sont parcourues dans le tableau au niveau du premier for.
Même principe pour xP2 et yP2, au second for.
Pour tester leurs collisions, je calcule donc la distance entre les centres de 2 planètes. Si cette distance est inférieure à Mp (Mp désigne le diamètre d'une planète), cela signifie que leur distance est inférieure à la somme des rayons des 2 planètes, donc elles sont en collision).
Dans ce cas, je change la couleur de la planète stockée au rang j, c'est à dire la dernière créée.
Pour réaliser tout ça, je cafouille à faire des boucles imbriquées avec les for afin que le rang i et j soient pris en compte dans le calcul de la collision. Mais la syntaxe au niveau des boucles ne doit pas être valide ainsi..
Merci de m'indiquer si je suis sur la bonne voie...![]()
Partager