Cours:BallePOO
Révision datée du 26 septembre 2016 à 10:20 par Bjacquot (discussion | contributions)
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;
PVector coinHG;
PVector coinBD;
Forme(PVector p,PVector v,color c)
{
couleur = c;
position = p;
vitesse = v;
coinBD = new PVector();
coinHG = new PVector();
}
void bouger()
{
position.add(vitesse);
coinBD.add(vitesse);
coinHG.add(vitesse);
}
void rebondir()
{
if (coinHG.x<=0)
{
vitesse.x=-vitesse.x;
}
if (coinHG.y<=0)
{
vitesse.y=-vitesse.y;
}
if (coinBD.x>=width)
{
vitesse.x=-vitesse.x;
}
if (coinBD.y>=height)
{
vitesse.y=-vitesse.y;
}
}
void go()
{
bouger();
rebondir();
afficher();
}
abstract void afficher();
}
class Carre extends Forme
{
float cote;
Carre(PVector p,PVector v, color c,float a)
{
super(p,v,c);
cote=a;
coinHG.x=position.x-cote/2;
coinHG.y=position.y-cote/2;
coinBD.x=position.x+cote/2;
coinBD.y=position.y+cote/2;
}
void afficher()
{
fill(couleur);
rect(position.x-cote/2,position.y-cote/2,cote,cote);
}
}
class Balle extends Forme
{
float rayon;
Balle(PVector p,PVector v, color c,float r)
{
super(p,v,c);
rayon=r;
coinHG.x=position.x-rayon;
coinHG.y=position.y-rayon;
coinBD.x=position.x+rayon;
coinBD.y=position.y+rayon;
}
void afficher()
{
fill(couleur);
ellipse(position.x,position.y,2*rayon,2*rayon);
}
}
Forme f1,f2;
void setup()
{
float r;
float a;
PVector p;
PVector v;
color c;
c = color(100,100,0);
p = new PVector(15,20);
v = new PVector(1,1);
r = 10;
f1 = new Balle(p,v,c,r);
c = color(0,100,0);
p = new PVector(18,20);
v = new PVector(0.5,1);
a = 20;
f2 = new Carre(p,v,c,a);
}
void draw()
{
background(255);
f1.go();
f2.go();
}
Zone de rebond
abstract class Forme
{
PVector position;
PVector vitesse;
color couleur;
PVector coinHG;
PVector coinBD;
PVector coinZoneHG;
PVector coinZoneBD;
Forme(PVector p,PVector v,PVector czhg,PVector czbd,color c)
{
couleur = c;
position = p;
vitesse = v;
coinZoneHG=czhg;
coinZoneBD=czbd;
coinBD = new PVector();
coinHG = new PVector();
}
void bouger()
{
position.add(vitesse);
coinBD.add(vitesse);
coinHG.add(vitesse);
}
void rebondir()
{
if (coinHG.x<=coinZoneHG.x)
{
vitesse.x=-vitesse.x;
}
if (coinHG.y<=coinZoneHG.y)
{
vitesse.y=-vitesse.y;
}
if (coinBD.x>=coinZoneBD.x)
{
vitesse.x=-vitesse.x;
}
if (coinBD.y>=coinZoneBD.y)
{
vitesse.y=-vitesse.y;
}
}
void go()
{
bouger();
rebondir();
afficher();
}
abstract void afficher();
}
class Carre extends Forme
{
float cote;
Carre(PVector p,PVector v,PVector czhg,PVector czbd, color c,float a)
{
super(p,v,czhg,czbd,c);
cote=a;
coinHG.x=position.x-cote/2;
coinHG.y=position.y-cote/2;
coinBD.x=position.x+cote/2;
coinBD.y=position.y+cote/2;
}
void afficher()
{
fill(couleur);
rect(position.x-cote/2,position.y-cote/2,cote,cote);
}
}
class Balle extends Forme
{
float rayon;
Balle(PVector p,PVector v,PVector czhg,PVector czbd, color c,float r)
{
super(p,v,czhg,czbd,c);
rayon=r;
coinHG.x=position.x-rayon;
coinHG.y=position.y-rayon;
coinBD.x=position.x+rayon;
coinBD.y=position.y+rayon;
}
void afficher()
{
fill(couleur);
ellipse(position.x,position.y,2*rayon,2*rayon);
}
}
Forme f1,f2;
PVector zone1HG;
PVector zone1BD;
void settings()
{
size(600,500);
}
void setup()
{
float r;
float a;
PVector p;
PVector v;
color c;
zone1HG=new PVector(10,10);
zone1BD=new PVector(590,490);
c = color(255,100,0);
p = new PVector(200,200);
v = new PVector(0.1,0.1);
r = 10;
f1 = new Carre(p,v,zone1HG,zone1BD,c,200);
c = color(0,255,0);
p = new PVector(200,200);
v = new PVector(1,3);
r = 10;
f2 = new Balle(p,v,f1.coinHG,f1.coinBD,c,r);
}
void draw()
{
background(255);
fill(0);
f1.go();
f2.go();
}