import processing.core.*; 
import processing.data.*; 
import processing.event.*; 
import processing.opengl.*; 

import java.util.HashMap; 
import java.util.ArrayList; 
import java.io.File; 
import java.io.BufferedReader; 
import java.io.PrintWriter; 
import java.io.InputStream; 
import java.io.OutputStream; 
import java.io.IOException; 

public class jeux extends PApplet {

int dx;
int dy;
int x, y;
int x1, y1;
int a;
int b;
int score_gauche=0, score_droit=0;                    /*Creation des variables pour le jeux*/
PImage fond;
PImage gameover;
PImage start;
PImage youwin;
PImage fond1;
PImage exit;
int ecran=0;



public void afficherMenu() {                             /*Menu demarage du jeux*/
  background(fond1);
  image(start, 200, 250);
  image(exit, 200, 500);
}

public void afficherJeu() {                         /*Lancement du jeux*/
}


public void setup(){                                /*Appel de toutes fonctions necessaires*/
  ecran = 0;
  
  x=800;
  y=100;
  x1=x;
  y1=y;
  a=200;
  b=200;
  dx=10;
  dy=-10;
  score_gauche=0;
  score_droit=0;
  fill(0,0,0,255);
  noStroke();
  fond = loadImage("fondecran.jpg");
  gameover = loadImage("gameover.png");
  youwin = loadImage("youwin.jpg");
  start = loadImage("start.jpg");
  fond1 = loadImage("fond1.jpg");
  exit = loadImage("exit.jpg");

}




public void draw(){                                     /*Affichage du jeux*/
  stroke(0, 0, 0);
  if (ecran == 0) {
    afficherMenu();
  }
  else if (ecran == 1) {
    afficherJeu();
    background(fond);
    rebondir();
    bouger();
    dessiner();
    x1=x;
    y1=y;
    afficherscore();
    comptscore();
    fin();
  }
  
}


public void mouseClicked() {
  if ((mouseX > 200) && (mouseX < 440) && (mouseY > 250) && (mouseY < 326) && (ecran == 0) ) {                     /*fonctionnement des differents boutons*/
    ecran = 1;
  }
  if ((mouseX > 200) && (mouseX < 300) && (mouseY > 500) && (mouseY < 660) && (ecran == 0) ) {
    exit();
  }
  if ((mouseX > 800) && (mouseX < 900) && (mouseY > 500) && (mouseY < 666) && (ecran == 1) ) {
    exit();
  }

}



public void dessiner(){                                                             /*Affichage de la balle, des deux rectangles et de la barre centrale + deplacement des rectangles*/
  fill(0,0,0);
  ellipse(x,y,10,10);
  
  fill(0,0,0);
  rect(60,b,10,160);
  rect(width -60,a,10,160);
  
  
  for (int i=0; i<10; i = i+1) {
   rect(width/2, i*height/10, 10, height/20);
 }

  
 
  if(keyPressed)                                     /*touches de controle des deux rectangles*/
  {
    if(key == 'a'){
      if ( b > 0){
      b = b - 10;
    }
   }
    if(key == 'q'){
      if (b <height-160)
      {
      b = b + 10;
    }
   }
  } 
 if(keyPressed)
  {
    if(key == '6'){
      if (a > 0){
      a = a - 10;
     }
    }
    if(key == '3')
    {
      if (a < height-160){
      a = a + 10;
    }
   }
  }
}


public void afficherscore(){                                         /*Affichage des scores en haut de l'ecran*/
  fill(255,255,255);
  textSize(80);
  text(str(score_gauche),50,100);
  text(str(score_droit),1820,100);
}

public void comptscore(){                                          /*Fonction de calcul des points*/
  if (x<0){
    score_droit= score_droit+1;
  }

  if (x>1920){
    score_gauche= score_gauche+1;
  }
}

public void fin(){                                                /*Affichage des resultat de la partie + bouton exit*/
  
  if(score_droit >4){
    x=1920;
    y=1080;
    background(0);
    image(gameover, 400, 500);
    image(youwin, 1200, 500);
    image(exit, 800, 500);
  }
  
  if(score_gauche >4){
    x=0;
    y=0;
    background(0);
    image(gameover, 1200, 450);
    image(youwin, 400, 450);
    image(exit, 800, 500);
  }  

}
public void rebondir() {                                 /*rebond de la balle sur les murs et sur les rectangles */
  int S;
  int OK;
  float a123;
  
    
  if ((x<70)&&(y>b)&&(y<(b+160))){
      dx = -dx;    
  }
  
 if ((x>width-70)&&(y>a)&&(y<(a+160))){
      dx = -dx;
 }
  
  
  if (x > width && dx > 0) {
    dx = -dx;
  }
  if (x < 0 && dx < 0) {
    dx = abs(dx);
  }
  if (y > height && dy > 0)  {
    dy = -dy;
  }
  if (y < 0 && dy < 0)  {
    dy = abs(dy);
  } 
  
  S=0;
  if(x<x1 && y>y1){
    S=1;

  }
  OK=0;
  
}


public void bouger() {                             /*Deplacement de la balle*/

  x = x + dx;
  y = y + dy;
}
  public void settings() {  fullScreen(); }
  static public void main(String[] passedArgs) {
    String[] appletArgs = new String[] { "jeux" };
    if (passedArgs != null) {
      PApplet.main(concat(appletArgs, passedArgs));
    } else {
      PApplet.main(appletArgs);
    }
  }
}
