Bonjour.
Dans le programme suivant certains éléments n'ont pas un déplacement normal par rapport au programme.Je n'arrive pas à comprendre pourquoi,ces éléments restent fixes.
Merci.
int nb=20; Rect[]rect=new Rect[nb]; Ellipse[]ellipse=new Ellipse[nb]; void setup(){ rectMode(CENTER); size(1000,700); for(int i=0;i<nb;i++){ rect[i]=new Rect(); ellipse[i]=new Ellipse(); } } void draw(){ background(100); for(int i=0;i<nb;i++){ rect[i].display(); ellipse[i].display(); rect[i].deplacement(); ellipse[i].deplacement(); rect[i].distance(ellipse); rect[i].rebond(); ellipse[i].rebond(); } for(int i=0;i<nb;i++){ for(int j=i+1;j<nb;j++){ rect[i].change(rect[j]); } } } class Mere{ PVector deplacement; PVector position; int diametre; color couleur; Mere(){ deplacement=new PVector(random(-2,2),random(-2,2)); position=new PVector(random(0,width),random(0,height)); diametre=int(random(20,40)); couleur=color(random(0,255),random(0,255),random(0,255)); } void deplacement(){ position.add(deplacement); } void rebond(){ if(position.x<0||position.x>width){ deplacement.x=deplacement.x*-1; } if(position.y<0||position.y>height){ deplacement.y=deplacement.y*-1; } } } class Rect extends Mere{ boolean etat; Rect(){ super(); } void display(){ fill(couleur); rect(position.x,position.y,diametre,diametre); } void change(Rect j){ float distance=position.dist(j.position); if(distance<20){ etat=true; j.etat=true; } } void distance(Ellipse[] elli) { for (int i=0; i<elli.length; i++) { float distance=position.dist(elli[i].position); if(distance<=diametre){ etat=true; elli[i].etat=true; deplacement.x=deplacement.x*-1; deplacement.y=deplacement.y*-1; elli[i].deplacement.x=elli[i].deplacement.x*-1; elli[i]. deplacement.y=elli[i].deplacement.y*-1; } } } } class Ellipse extends Mere{ boolean etat; Ellipse(){ super(); } void display(){ fill(couleur); ellipse(position.x,position.y,diametre,diametre); } }
Hors ligne
C'est lors de ta création d'éléments s'il y en a un rectangle et un cercle qui se superposent alors ils ne cessent de changer leur directions. Donc ils ne bougent pas.
Pour remédier à cela il faudrait vérifier que l'emplacement est libre pour la création d'un objet.
Hors ligne
Merci pour l'explication.Maintenant je comprends le pourquoi de la chose.
Hors ligne