Cours:BallePOO

De troyesGEII
Révision datée du 19 septembre 2016 à 09:36 par Bjacquot (discussion | contributions) ({{Rouge|avec héritage}})
Aller à : navigation, rechercher

Première version

class Balle
{
  float rayon;
  PVector position;
  PVector vitesse;
  color couleur;
 
  Balle(float r, PVector p,PVector v)
  {
    rayon = r;
    position = p;
    vitesse = v;
    couleur = color(100,0,0);
  }
 
  Balle(float r, PVector p,PVector v, color c)
  {
    this(r,p,v);
    couleur = c;
  }
  
  void rebondir()
  {
    if (position.x<=rayon) 
    {
      vitesse.x=-vitesse.x;
    }
    if (position.y<=rayon) 
    {
      vitesse.y=-vitesse.y;
    }
    if (position.x>=(width-rayon)) 
    {
      vitesse.x=-vitesse.x;
    }
    if (position.y>=(height-rayon)) 
    {
      vitesse.y=-vitesse.y;
    }
  }
  
  void deplacer()
  {
    position.add(vitesse);
  }
 
  void afficher()
  {
    fill(couleur);
    ellipse(position.x,position.y,2*rayon,2*rayon);
  }
  
  void go()
  {
    deplacer();
    rebondir();
    afficher();
  }
}



Balle b1,b2;

void setup()
{
  float r = 10;
  PVector p;
  PVector v;
  p = new PVector(15,20);
  v = new PVector(1,1);
  b1 = new Balle(r,p,v);
  color c;
  c = color(0,100,0);
  p = new PVector(40,40);
  v = new PVector(0.5,1);
  b2 = new Balle(r,p,v,c);
}
 
 
void draw()
{
  background(255);
  b1.go();
  b2.go();
}


avec héritage

abstract class Forme
{
  PVector position;
  PVector vitesse;
  color couleur;
  
  Forme(PVector p,PVector v,color c)
  {
    couleur = c;
    position = p;
    vitesse = v;
  }
  
  void bouger()
  {
    position.add(vitesse);
  }
  
  void go()
  {
    bouger();
    rebondir();
    afficher();
  }
  
  abstract void afficher();
  
  abstract void rebondir();


}

class Balle extends Forme
{
  float rayon;
 
  Balle(PVector p,PVector v, color c,float r)
  {
    super(p,v,c);
    rayon=r;
  }
 
  void rebondir()
  {
    if (position.x<=rayon) 
    {
      vitesse.x=-vitesse.x;
    }
    if (position.y<=rayon) 
    {
      vitesse.y=-vitesse.y;
    }
    if (position.x>=(width-rayon)) 
    {
      vitesse.x=-vitesse.x;
    }
    if (position.y>=(height-rayon)) 
    {
      vitesse.y=-vitesse.y;
    }
  }
 

 
  void afficher()
  {
    fill(couleur);
    ellipse(position.x,position.y,2*rayon,2*rayon);
  }
 
}
 

Balle b1;
 
void setup()
{
  float r = 10;
  PVector p;
  PVector v;
  color c;
  c = color(100,100,0);
  p = new PVector(15,20);
  v = new PVector(1,1);
  b1 = new Balle(p,v,c,r);
}
 
 
void draw()
{
  background(255);
  b1.go();
}