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