// Code développé par Anaïs Ducourthial et deux co-lycéennes du CIV lors d'un stage Inria d'initiation à la programmaation

import java.awt.event. *;
import javax.swing. *;

// Ici on declare les variables elephants
JLabel e[] new JLabel[4];
// et les couleurs des Elephants
int c[] new int[4];
// et les positions des éléphants
int x[] 200350500650 };
// comme ca on va pouvoir traiter les 4 elephants avec une boucle

// Gere un clique sur un elephant de numero n
void cliqueElephant(int n) {
  if(c[n== 0) {
	e[n].setIcon(getIcon("http://javascool.gforge.inria.fr/documents/sketchbook/javaProg/elephant3.gif"));
	c[n1;
  else if(c[n== 1) {
	e[n].setIcon(getIcon("http://javascool.gforge.inria.fr/documents/sketchbook/javaProg/elephant2.gif"));
	c[n2;
  else if(c[n== 2) {
	e[n].setIcon(getIcon("http://javascool.gforge.inria.fr/documents/sketchbook/javaProg/elephant1.gif"));
	c[n3;
  else if(c[n== 3) {
	c[n4// ca veut dire plus-d-elephant
	getPane().remove(e[n]);
	// On lance les cacaouettes
	new Cacaouette(n);
  }
}
// Ici on definit les cacouette souss forme d'objet pour que chaque paquet de cacaouette soit independant
class Cacaouette {
  // Les 4 cacaouettes
  JLabel ch1, ch2, cv1, cv2;
  // Position des cacaouettes
  int n_ch;
  // Cree des cacaouettes pour l'elephant de numero n et les fait deplacer
  Cacaouette(int n) {
	n_ch = n;
	// Cree les cacaouettes
	ch1 = showIcon("http://javascool.gforge.inria.fr/documents/sketchbook/javaProg/elephanth.gif", x[n_ch]3001001002);
	ch2 = showIcon("http://javascool.gforge.inria.fr/documents/sketchbook/javaProg/elephanth.gif", x[n_ch1003001001002);
	cv1 = showIcon("http://javascool.gforge.inria.fr/documents/sketchbook/javaProg/elephantv.gif", x[n_ch502501001002);
	cv2 = showIcon("http://javascool.gforge.inria.fr/documents/sketchbook/javaProg/elephantv.gif", x[n_ch502501001002);
	new Thread(new Runnable() {
				 public void run() {
				   // Ces variables deviennent fausses si une cacaouette touche un elephant
				   boolean toucher_gauche = true, toucher_droit = true;
				   // Deplace les cacaouettes
				   for(int i = 0; i < && (toucher_gauche || toucher_droit); i++) {
					 // Position des cacaouettes gauche et droite
					 int x_gauche = x[n_ch15 * i, x_droite = x[n_ch100 15 * i;
					 // On deplace les cacouettes
					 ch1.setLocation(x_gauche, 300);
					 ch2.setLocation(x_droite, 300);
					 cv1.setLocation(x[n_ch50350 15 * i);
					 cv2.setLocation(x[n_ch50250 15 * i);
					 sleep(200);
					 // Si y a un elephant juste a gauche && qu'on l'a pas encore touche && qu'il est pas explosé && que la cacaouette le touche: on clique
					 if((n_ch > 0&& toucher_gauche && (c[n_ch - 14&& (x_gauche <= x[n_ch - 1100)) {
					   toucher_gauche = false;
					   cliqueElephant(n_ch - 1);
					 }
					 // Si y a un elephant juste a droite && qu'on l'a pas encore touche && qu'il est pas explosé && que la cacaouette le touche: on clique
					 if((n_ch < 3&& toucher_droit && (c[n_ch + 14&& (x_droite >= x[n_ch + 1])) {
					   toucher_droit = false;
					   cliqueElephant(n_ch + 1);
					 }
				   }
				   // On tue les cacaouettes
				   ch1.setLocation(-100, -100);
				   ch2.setLocation(-100, -100);
				   cv1.setLocation(-100, -100);
				   cv2.setLocation(-100, -100);
				   getPane().remove(ch1);
				   getPane().remove(ch2);
				   getPane().remove(cv1);
				   getPane().remove(cv2);
				 }
			   }
			   ).start();
  }
}

void main() {
  // Efface tout
  getPane().removeAll();
  getPane().setOpaque(true);
  getPane().setBackground(java.awt.Color.WHITE);
  // Cree les elephants
  for(int n = 0; n < 4; n++) {
	e[n= showIcon("http://javascool.gforge.inria.fr/documents/sketchbook/javaProg/elephant" (n + 1".gif", x[n]3001001003);
	c[n- n;
  }
  // La souris gere les elephants
  getPane().addMouseListener(new MouseAdapter() {
							   public void mouseClicked(MouseEvent e) {
								 // Test si on a clique sur chaque elephant
								 for(int n = 0; n < 4; n++)
								   if((e.getX() > x[n]) && (e.getX() < x[n100&& (e.getY() 300&& (e.getY() 400)) {
									 cliqueElephant(n);
								   }
							   }
							 }
							 );
}