Collisions entre deux objets

MaxenceG18 Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   -  
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   -
Salut ! Voici mon problème:

Je cherche à comparer un élément d'une liste avec tout les autres éléments de cette même liste.



Explication du code :
Je cherche à créer un jeu avec des boules rouges. Pour se faire je veux faire spawn aléatoirement sur la fenêtre les boules de sorte à ce qu'elles ne puissent pas spawn l'une sur l'autre, car elle sont sensées subir des collisions entre elles .

J'utilise donc la fonction cercle d'un module qui prend pour argument (x, y, rayon)

Ou x et y sont les coordonnées du centre des boules.
Je choisis 10 comme rayon, donc la distance entre le centre de 2 boules doit être supérieure a 20.
Donc que |(x,y d'une boule)-(x,y de chacune des autres)| >= 20

J'ai essayé ce programme :



(ici je crée volontairement 4 boules ayants les même coordonnée pour le test)
Des boules sont bel et bien déviée et remises aléatoirement sur la fenêtre mais il arrive que parmi celles-ci certaines s'enchevêtrent.
Je suppose que c'est parce que la boucle ne revérifie pas les nouvelles coordonnées obtenues mais je n'arrive pas à faire autrement.
J'ai également essayé de remplacer if par while mais la fenêtre plante

Je vous demande alors de l'aide les petits crackos de python ^^ je vous en serais très reconaissant. Merci !

2 réponses

jordane45 Messages postés 38483 Date d'inscription   Statut Modérateur Dernière intervention   4 746
 
Bonjour,

Le code se partage directement sur le forum en utilisant les BALISES DE CODE
(explications à lire entièrement, disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code )

Avec des images.. on ne peut pas copier/coller .. ce qui peut être génant pour tester et/ou pour réécrire la/les ligne(s) de code qui pourrai(en)t poser problème;


0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 583
 
bonjour,
ton calcul des distances n'est pas correct pour des cercles, il serait correct pour des carrés. ce n'est pas trop grave.

par contre, ton code ne fait pas du tout ce que tu imagines. pour comprendre ce qu'il fait, affiche les valeurs de i et de t dans la boucle.
0