Etat du code

Balle maBalle;
 
void setup() {
  
   smooth();
   size(503,503);
   noStroke();
   cursor(CROSS);
   maBalle = new Balle(width/2,height-20);
}
void draw() {
 background(#D8C876);
  stroke(50);
  fill(#817563);
  textSize(10);
  text("Appuyer sur 'r' pour recommencer",10,10);
  maBalle.rebondir();
  maBalle.affiche();
  maBalle.mousePressed();
  maBalle.obstacles();
  maBalle.rebObstacles();
  maBalle.arrivee();
 
}
void keyPressed(){
  if (key == 'r'){
    setup();
  }
}
class Balle {
   int x;
   int y;
   int n; //nombre de rebonds
   int vitesseX;
   int vitesseY;
  
  Balle (int nouvX, int nouvY) {
    x= nouvX;
    y= nouvY;
    n=70;
    vitesseX = int(4+random(-2,2));
    vitesseY = int(4+random(-2,2));
}
   
 void affiche(){
   fill(#03A08C);
   ellipse(x, y, 30, 30);
  fill(#893F3F);
   textSize(12);
   text(n,x-6,y+2);
 }
 void obstacles(){
   fill(220);
  rect(10,50,150,20);
  rect(250,130,70,10);
  rect(278,288,90,20);
  rect(110,345,83,22);
  rect(20,190,60,14);
  rect(400,208,70,17);
}
   void rebObstacles(){
     //voir pour utilisation de popmatrix() et pushmatrix()
     //voir si on peut utiliser translate() dans la création des obstacles
     //c'est peut être plus efficace pour gérer le rebond sur obstacles
      if(red(get(x,y+15))==220){
       vitesseX=(vitesseX * -1)+ 1; 
       vitesseY=(vitesseY/2 * -1)+ 2; 
       n=n-1;
       println(vitesseX,vitesseY);
     }
     if(red(get(x+15,y))==220){
       vitesseX=(vitesseX * -1)+ 1; 
       vitesseY=(vitesseY/2 * -1)+ 2; 
       n=n-1;
        println(vitesseX,vitesseY);
   }
     if(red(get(x-15,y))==220){ 
       vitesseX=(vitesseX * -1)+ 1;
       vitesseY=(vitesseY/2 * -1) + 2; 
       n=n-1;
        println(vitesseX,vitesseY);
     }
     if(red(get(x,y-15))==220){
       vitesseX=(vitesseX * -1)+ 1; 
       vitesseY=(vitesseY/2 * -1)+ 2; 
       n=n-1;
       println(vitesseX,vitesseY);
     }
   }
  
   
 void mousePressed(){
   int pmy = constrain(pmouseY,380,500); 
//on met une limite sinon le joueur pourrait mettre directemement la balle dans la zone d'arrivée
//voir si on peut utiliser les vecteurs pour que la souris soit la direction du lancement
 if(mouseButton == LEFT){ 
    x = pmouseX;
    y = pmy; 
  }
   if(mouseButton == RIGHT){  //le joueur doit cliquer sur le bouton droit afin que la balle se lance 
  x = x + vitesseX;
  y = y + vitesseY;
  }
 }
 
   void rebondir(){
     if(x> width-20 || x< 20) {
       vitesseX= vitesseX * -1;
       n=n-1;
     }
     if(y> height-20 || y< 20) {
       vitesseY= vitesseY * -1;
       n=n-1;
     }
   }
   
    void arrivee(){
  fill(#B41658);
  ellipse (460,40,70,70);
  fill(#810339); 
  ellipse (460,40,35,35);
  if(n==0){
       x=250;
       y=250;
       fill(#ED4141);
       textSize(20);
       text("GAME OVER - Appuyer sur 'r' pour recommencer",5,250);
   } else if(x> 460 && y< 40){
   x=530;
   y=0;
   fill(#891212);
   textSize(64);
   text("WINNER !", 150,250);
 }
    }
}