Annonce

>>> Bienvenue sur codelab! >>> Première visite ? >>> quelques mots sur codelab //// une carte des membres//// (apéros) codelab


#1 2014-11-20 04:08:55 éléments fixes.

fabrice54
membre
Date d'inscription: 2012-06-07
Messages: 242

éléments fixes.



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.

Code (P5) :

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

 

#2 2014-11-20 09:20:33 Re : éléments fixes.

Mushussu
membre
Lieu: Orléans
Date d'inscription: 2012-05-24
Messages: 802

Re: éléments fixes.



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

 

#3 2014-11-20 12:10:06 Re : éléments fixes.

fabrice54
membre
Date d'inscription: 2012-06-07
Messages: 242

Re: éléments fixes.



Merci pour l'explication.Maintenant je comprends le pourquoi de la chose.

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2024