Cours:BallePOO : Différence entre versions
m |
|||
| Ligne 1 : | Ligne 1 : | ||
| + | |||
| + | ={{Rouge|Première version}}= | ||
<source lang=java> | <source lang=java> | ||
| Ligne 50 : | Ligne 52 : | ||
| + | <source lang=java> | ||
| + | ArrayList <Balle> objets; | ||
| + | |||
| + | PVector coinHG1, coinBD1; | ||
| + | PVector coinHG2, coinBD2; | ||
| + | |||
| + | void setup() | ||
| + | { | ||
| + | PVector espace = new PVector(600,400); | ||
| + | size((int)espace.x,(int)espace.y); | ||
| + | |||
| + | coinHG1 = new PVector(10,40); | ||
| + | coinBD1 = new PVector(200,300); | ||
| + | coinHG2 = new PVector(210,10); | ||
| + | coinBD2 = new PVector(550,350); | ||
| + | objets = new ArrayList<Balle>(); | ||
| + | |||
| + | objets.add(new Balle(new PVector(20,20),new PVector(1,1),coinBD1,coinHG1,4)); | ||
| + | objets.add(new Balle(new PVector(20,20),new PVector(5,-2),coinBD1,coinHG1,10)); | ||
| + | objets.add(new Balle(new PVector(20,20),new PVector(3.2,3),coinBD2,coinHG2,4)); | ||
| + | objets.add(new Balle(new PVector(20,20),new PVector(4,3),coinBD1,coinHG1,4)); | ||
| + | objets.add(new Balle(new PVector(20,20),new PVector(1,-1),coinBD2,coinHG2,4)); | ||
| + | } | ||
| + | |||
| + | void draw() | ||
| + | { | ||
| + | background(0); | ||
| + | fill(250); | ||
| + | rect(coinHG1.x,coinHG1.y,coinBD1.x-coinHG1.x,coinBD1.y-coinHG1.y); | ||
| + | fill(200); | ||
| + | rect(coinHG2.x,coinHG2.y,coinBD2.x-coinHG2.x,coinBD2.y-coinHG2.y); | ||
| + | for (int i=0;i<objets.size();i++) | ||
| + | objets.get(i).go(); | ||
| + | |||
| + | } | ||
| + | </source> | ||
| + | |||
| + | ={{Rouge|avec héritage}}= | ||
| + | |||
| + | <source lang=java> | ||
| + | class Balle extends Objet | ||
| + | { | ||
| + | float rayon; | ||
| + | Balle(PVector p, PVector v, PVector bBD,PVector bHG, float r) | ||
| + | { | ||
| + | super(p,v,bBD,bHG); | ||
| + | this.rayon = r; | ||
| + | } | ||
| + | void rebondir() | ||
| + | { | ||
| + | if ((position.x-rayon)<zoneHG.x) {if (vitesse.x<0) vitesse.x=-vitesse.x;} | ||
| + | if ((position.y-rayon)<zoneHG.y) {if (vitesse.y<0) vitesse.y=-vitesse.y;} | ||
| + | if ((position.x+rayon)>zoneBD.x) {if (vitesse.x>0) vitesse.x=-vitesse.x;} | ||
| + | if ((position.y+rayon)>zoneBD.y) {if (vitesse.y>0) vitesse.y=-vitesse.y;} | ||
| + | } | ||
| + | void afficher() | ||
| + | { | ||
| + | ellipse(this.position.x, | ||
| + | this.position.y, | ||
| + | 2*this.rayon, | ||
| + | 2*this.rayon); | ||
| + | } | ||
| + | } | ||
| + | </source> | ||
| + | abstract class Objet | ||
| + | { | ||
| + | PVector position; | ||
| + | PVector vitesse; | ||
| + | PVector zoneBD; | ||
| + | PVector zoneHG; | ||
| + | Objet(PVector p, PVector v, PVector bBD,PVector bHG) { | ||
| + | this.position = p; | ||
| + | this.vitesse = v; | ||
| + | this.zoneBD = bBD; | ||
| + | this.zoneHG = bHG; | ||
| + | } | ||
| + | void deplacer(){ | ||
| + | this.position.add(this.vitesse); | ||
| + | } | ||
| + | void go() { | ||
| + | this.deplacer(); | ||
| + | this.rebondir(); | ||
| + | this.afficher(); | ||
| + | } | ||
| + | abstract void rebondir(); | ||
| + | abstract void afficher(); | ||
| + | } | ||
| + | |||
| + | |||
| + | /*{ | ||
| + | if ((position.x-rayon)<zoneHG.x) {if (vitesse.x<0) vitesse.x=-vitesse.x;} | ||
| + | if ((position.y-rayon)<zoneHG.y) {if (vitesse.y<0) vitesse.y=-vitesse.y;} | ||
| + | if ((position.x+rayon)>zoneBD.x) {if (vitesse.x>0) vitesse.x=-vitesse.x;} | ||
| + | if ((position.y+rayon)>zoneBD.y) {if (vitesse.y>0) vitesse.y=-vitesse.y;} | ||
| + | }*/ | ||
| + | <source lang=java> | ||
| + | </source> | ||
<source lang=java> | <source lang=java> | ||
ArrayList <Balle> objets; | ArrayList <Balle> objets; | ||
Version du 25 mars 2016 à 15:34
Première version
class Balle
{
PVector position;
PVector vitesse;
PVector zoneBD;
PVector zoneHG;
float rayon;
int couleur = 100;
Balle(PVector p, PVector v, PVector bBD,PVector bHG, float r)
{
p.add(bHG);
this.position = p;
this.vitesse = v;
this.rayon = r;
this.zoneBD = bBD;
this.zoneHG = bHG;
}
void deplacer()
{
this.position.add(this.vitesse);
}
void go()
{
this.deplacer();
this.rebondir();
this.afficher();
}
void rebondir()
{
if ((position.x-rayon)<zoneHG.x) {if (vitesse.x<0) vitesse.x=-vitesse.x;}
if ((position.y-rayon)<zoneHG.y) {if (vitesse.y<0) vitesse.y=-vitesse.y;}
if ((position.x+rayon)>zoneBD.x) {if (vitesse.x>0) vitesse.x=-vitesse.x;}
if ((position.y+rayon)>zoneBD.y) {if (vitesse.y>0) vitesse.y=-vitesse.y;}
}
void afficher()
{
fill(this.couleur);
ellipse(this.position.x,
this.position.y,
2*this.rayon,
2*this.rayon);
}
}
ArrayList <Balle> objets;
PVector coinHG1, coinBD1;
PVector coinHG2, coinBD2;
void setup()
{
PVector espace = new PVector(600,400);
size((int)espace.x,(int)espace.y);
coinHG1 = new PVector(10,40);
coinBD1 = new PVector(200,300);
coinHG2 = new PVector(210,10);
coinBD2 = new PVector(550,350);
objets = new ArrayList<Balle>();
objets.add(new Balle(new PVector(20,20),new PVector(1,1),coinBD1,coinHG1,4));
objets.add(new Balle(new PVector(20,20),new PVector(5,-2),coinBD1,coinHG1,10));
objets.add(new Balle(new PVector(20,20),new PVector(3.2,3),coinBD2,coinHG2,4));
objets.add(new Balle(new PVector(20,20),new PVector(4,3),coinBD1,coinHG1,4));
objets.add(new Balle(new PVector(20,20),new PVector(1,-1),coinBD2,coinHG2,4));
}
void draw()
{
background(0);
fill(250);
rect(coinHG1.x,coinHG1.y,coinBD1.x-coinHG1.x,coinBD1.y-coinHG1.y);
fill(200);
rect(coinHG2.x,coinHG2.y,coinBD2.x-coinHG2.x,coinBD2.y-coinHG2.y);
for (int i=0;i<objets.size();i++)
objets.get(i).go();
}
avec héritage
class Balle extends Objet
{
float rayon;
Balle(PVector p, PVector v, PVector bBD,PVector bHG, float r)
{
super(p,v,bBD,bHG);
this.rayon = r;
}
void rebondir()
{
if ((position.x-rayon)<zoneHG.x) {if (vitesse.x<0) vitesse.x=-vitesse.x;}
if ((position.y-rayon)<zoneHG.y) {if (vitesse.y<0) vitesse.y=-vitesse.y;}
if ((position.x+rayon)>zoneBD.x) {if (vitesse.x>0) vitesse.x=-vitesse.x;}
if ((position.y+rayon)>zoneBD.y) {if (vitesse.y>0) vitesse.y=-vitesse.y;}
}
void afficher()
{
ellipse(this.position.x,
this.position.y,
2*this.rayon,
2*this.rayon);
}
}
abstract class Objet {
PVector position;
PVector vitesse;
PVector zoneBD;
PVector zoneHG;
Objet(PVector p, PVector v, PVector bBD,PVector bHG) {
this.position = p;
this.vitesse = v;
this.zoneBD = bBD;
this.zoneHG = bHG;
}
void deplacer(){
this.position.add(this.vitesse);
}
void go() {
this.deplacer();
this.rebondir();
this.afficher();
}
abstract void rebondir();
abstract void afficher();
}
/*{
if ((position.x-rayon)<zoneHG.x) {if (vitesse.x<0) vitesse.x=-vitesse.x;}
if ((position.y-rayon)<zoneHG.y) {if (vitesse.y<0) vitesse.y=-vitesse.y;}
if ((position.x+rayon)>zoneBD.x) {if (vitesse.x>0) vitesse.x=-vitesse.x;}
if ((position.y+rayon)>zoneBD.y) {if (vitesse.y>0) vitesse.y=-vitesse.y;}
}*/
ArrayList <Balle> objets;
PVector coinHG1, coinBD1;
PVector coinHG2, coinBD2;
void setup()
{
PVector espace = new PVector(600,400);
size((int)espace.x,(int)espace.y);
coinHG1 = new PVector(10,40);
coinBD1 = new PVector(200,300);
coinHG2 = new PVector(210,10);
coinBD2 = new PVector(550,350);
objets = new ArrayList<Balle>();
objets.add(new Balle(new PVector(20,20),new PVector(1,1),coinBD1,coinHG1,4));
objets.add(new Balle(new PVector(20,20),new PVector(5,-2),coinBD1,coinHG1,10));
objets.add(new Balle(new PVector(20,20),new PVector(3.2,3),coinBD2,coinHG2,4));
objets.add(new Balle(new PVector(20,20),new PVector(4,3),coinBD1,coinHG1,4));
objets.add(new Balle(new PVector(20,20),new PVector(1,-1),coinBD2,coinHG2,4));
}
void draw()
{
background(0);
fill(250);
rect(coinHG1.x,coinHG1.y,coinBD1.x-coinHG1.x,coinBD1.y-coinHG1.y);
fill(200);
rect(coinHG2.x,coinHG2.y,coinBD2.x-coinHG2.x,coinBD2.y-coinHG2.y);
for (int i=0;i<objets.size();i++)
objets.get(i).go();
}