Labyrinthe
import java.awt.*; /*Graphics*/
import java.lang.*; /*Math*/
import java.util.*;
import java.applet.*;
import java.net.*;
import java.io.*;
public class trav5 extends Applet implements Runnable 
{
	/* Pour le faire tourner en autonome */
	Thread timer = null;
	/* Bloc note de l'écran */
	Graphics BlocNote;
	/* Ecran */
	Image Ecran;
	/* Tableaux de 0 à 26 (27 cases en X) de 0 à 12 (13 cases en Y) */
	int[][] TablS = new int[27][13];
	int[][] TablG = new int[27][13];
	int[][] TablD = new int[27][13];
	int[][] TablH = new int[27][13];
	int[][] TablB = new int[27][13];
	Image imgYP, imgXP, imgXM, imgYM, imgEF;
	Image imgxYP, imgxXP, imgxXM, imgxYM;
	Image imgyYP, imgyXP, imgyXM, imgyYM;
	Image From,From1,From2,From3,From4,From5,From6;
	/* pour l'affichage des variables */
	Image Affiche;
	/* Variables */
	int Choix[] = new int[50];
	int Xtabl[] = new int[50];
	int Ytabl[] = new int[50];
	int Xaff[] = new int[50];
	int Yaff[] = new int[50];
	int IndicPass[] = new int[50];
	int Trouve[] = new int[50];
	String[] Indic = new String[50]; 
	String[] Interdit = new String[50];
	int[][] TablHS = new int[27][13];
	int[][] TablBS = new int[27][13];
	int[][] TablGS = new int[27][13];
	int[][] TablDS = new int[27][13];
	int[][] TablHSs = new int[27][13];
	int[][] TablBSs = new int[27][13];
	int[][] TablGSs = new int[27][13];
	int[][] TablDSs = new int[27][13];
	int[] CheminX = new int[1000];
	int[] CheminY = new int[1000];
	int[] CheminRX = new int[1000];
	int[] CheminRY = new int[1000];
	int 	AvSouris1,n,Choix1,nCal1,nCal2,nCal3,nCal4,XFrom,YFrom,
		Ch,nn,ComptA,ComptB,Ninc,Nincs,ColorX,BoutonEff,NbrSouris;
	Button Button1 = new Button("Reconstruire");	
	Button Button2 = new Button("+ Souris");	
	public void init()
	{
		/* Couleur de fond de l'HTML */
		int x = Integer.parseInt(getParameter("bgcolor")); 
		setBackground( new Color(x));
		/* Image de la souris */
		imgEF = getImage(getCodeBase(), "souris0.gif");
		imgYP = getImage(getCodeBase(), "souris3.gif");
		imgXP = getImage(getCodeBase(), "souris2.gif");
		imgXM = getImage(getCodeBase(), "souris4.gif");
		imgYM = getImage(getCodeBase(), "souris1.gif");
		imgxYP = getImage(getCodeBase(), "sourisx3.gif");
		imgxXP = getImage(getCodeBase(), "sourisx2.gif");
		imgxXM = getImage(getCodeBase(), "sourisx4.gif");
		imgxYM = getImage(getCodeBase(), "sourisx1.gif");
		imgyYP = getImage(getCodeBase(), "sourisy3.gif");
		imgyXP = getImage(getCodeBase(), "sourisy2.gif");
		imgyXM = getImage(getCodeBase(), "sourisy4.gif");
		imgyYM = getImage(getCodeBase(), "sourisy1.gif");
		From = getImage(getCodeBase(), "froma.gif");
		From1 = getImage(getCodeBase(), "froma1.gif");
		From2 = getImage(getCodeBase(), "froma2.gif");
		From3 = getImage(getCodeBase(), "froma3.gif");
		From4 = getImage(getCodeBase(), "froma4.gif");
		From5 = getImage(getCodeBase(), "froma5.gif");
		From6 = getImage(getCodeBase(), "froma6.gif");
		/* Pour l'affichage des variables */
		Affiche = getImage(getCodeBase(), "AFFICHE.gif");
		/* Création d'un bloc note à la dimension de l'écran */
		Image Ecran = createImage(this.size().width, this.size().height);
		Graphics BlocNote = Ecran.getGraphics();
		/* Init programme */
		for (n=0; n<50; n++)
		{Xaff[n]=1; Yaff[n]=1; Xtabl[n]=0; Ytabl[n]=0;Indic[n]="";Interdit[n]="";}
		ComptA=0;ComptB=0;
		TablDS[Xtabl[49]][Ytabl[49]]=1;
		/* Appel de la création du labyrinthe */
		Labirinte();
		/* Création des BP en bordure */
		setLayout(new BorderLayout());
		Panel Sp = new Panel();
		add("South",Sp);
		Sp.setLayout(new FlowLayout(FlowLayout.CENTER, 1, 1));
		Sp.setBackground(Color.red);
		Sp.add(Button1);
		Sp.add(Button2);
		NbrSouris = 1;
		/* Pour accélérere l'affichage */
		{BlocNote.drawImage(From, XFrom, YFrom, null);}
		{BlocNote.drawImage(From1, XFrom, YFrom, null);}
		{BlocNote.drawImage(From2, XFrom, YFrom, null);}
		{BlocNote.drawImage(From3, XFrom, YFrom, null);}
		{BlocNote.drawImage(From4, XFrom, YFrom, null);}
		{BlocNote.drawImage(From5, XFrom, YFrom, null);}
		{BlocNote.drawImage(From6, XFrom, YFrom, null);}
	}
	public boolean action(Event evt, Object what )
	{
		if ("Reconstruire".equals(what))
		{
			BoutonEff=2;
		}
		if ("+ Souris".equals(what))
		{
			NbrSouris++;
			if (NbrSouris>48) {NbrSouris=48;}
		}
		return false;
	}	
	public void Labirinte()
	{
		for (int i=0; i<=26; i++)
		{
			for (int ii=0; ii<=12; ii++)
			{
				Choix1 = (int) (Math.random() * 4);	
				if (Choix1==1) { TablG[i][ii]=1;if ((i-1)>=0)  {TablD[i-1][ii]=1;}}
				if (Choix1==2) { TablD[i][ii]=1;if ((i+1)<=26) {TablG[i+1][ii]=1;}}
				if (Choix1==3) { TablH[i][ii]=1;if ((ii-1)>=0) {TablB[i][ii-1]=1;}}
				if (Choix1==4) { TablB[i][ii]=1;if ((ii+1)<=12){TablH[i][ii+1]=1;}}
			}
		}
		for (int i=0; i<=26; i++){TablH[i][0]=1;}
		for (int i=0; i<=12; i++){TablD[26][i]=1;}
		for (int i=0; i<=26; i++){TablB[i][12]=1;}
		for (int i=0; i<=12; i++){TablG[0][i]=1;}
		/* Création de l'espace fromage */
		XFrom=(22*(21+1))+1; YFrom=(22*(0+1))+1;
		TablD[22][1]=0; TablD[22][2]=0; TablD[23][1]=0; TablD[23][2]=0; 
		TablG[22][1]=0; TablG[22][2]=0; TablG[23][1]=0; TablG[23][2]=0; 
		TablH[22][1]=0; TablH[22][2]=0; TablH[23][1]=0; TablH[23][2]=0;
		TablB[22][1]=0; TablB[22][2]=0; TablB[23][1]=0; TablB[23][2]=0;
		/* Ouverture du labyrinthe pour les souris */
		TablD[0][0]=0; TablG[1][0]=0; TablH[0][1]=0; TablB[0][0]=0;
	}
	/* Déplacement de la souris 1 dans le bloc note */
	public void paint1(Graphics BlocNote)
	{
		AvSouris1 = 11; /* 1 2 11 22 */ 
		for (int n=0; n0)
			&& !(Interdit[n]=="G") && (Choix[n]==3)  
			&& ((Indic[n]=="G") || (Indic[n]=="")))  
			{
				if ((TablS[Xtabl[n]-1][Ytabl[n]]==0)||(Indic[n]=="G"))
				{
				TablS[Xtabl[n]-1][Ytabl[n]]=1;
				BlocNote.drawImage(imgEF, Xaff[n], Yaff[n], null);
				Xaff[n]=Xaff[n]-AvSouris1; Indic[n]="G";IndicPass[n]=0;
				BlocNote.drawImage(imgXM, Xaff[n], Yaff[n], null);
				if (Xaff[n]==(22*(Xtabl[n]-1))+1) 
				{ Indic[n]="";TablS[Xtabl[n]][Ytabl[n]]=0; Xtabl[n]--; Interdit[n]="D"; }
				}
			}
			if ((TablH[Xtabl[n]][Ytabl[n]]==0) && (IndicPass[n]==1) && (Ytabl[n]>0)
			&& !(Interdit[n]=="H") && (Choix[n]==4)  
			&& ((Indic[n]=="H") || (Indic[n]==""))) 
			{
				if ((TablS[Xtabl[n]][Ytabl[n]-1]==0)||(Indic[n]=="H"))
				{
				TablS[Xtabl[n]][Ytabl[n]-1]=1;
				BlocNote.drawImage(imgEF, Xaff[n], Yaff[n], null);
				Yaff[n]=Yaff[n]-AvSouris1; Indic[n]="H";IndicPass[n]=0;
				BlocNote.drawImage(imgYM, Xaff[n], Yaff[n], null);
				if (Yaff[n]==(22*(Ytabl[n]-1))+1) 
				{ Indic[n]="";TablS[Xtabl[n]][Ytabl[n]]=0; Ytabl[n]--; Interdit[n]="B"; }
				}
			}
			if (IndicPass[n]==1)	{Interdit[n]="";}
			if (Indic[n]=="") 
			{
				Choix[n] = (int) ((Math.random() * 4)+1);
				/* Choix imposé par la souris rouge */
				if (Trouve[49]==1)
				{
				for (int i=0; i(Ytabl[n])){Choix[n]=2;} else {Choix[n]=4;}
						}
						else
						{
							if ((CheminX[i+1])>(Xtabl[n])){Choix[n]=1;} else {Choix[n]=3;}
						}
					}
				}
				}
			}
			if ((((Xtabl[n]==22) && (Ytabl[n]==1)) ||((Xtabl[n]==22) && (Ytabl[n]==2)) 
			|| ((Xtabl[n]==23) && (Ytabl[n]==1)) ||((Xtabl[n]==23) && (Ytabl[n]==2)))
			&& (Trouve[n]==0))
			{
				Trouve[n]=1; TablS[Xtabl[n]][Ytabl[n]]=0;
			}
		}
	}
	/* Déplacement de la souris 2 dans le bloc note */
	public void paint2(Graphics BlocNote)
	{
		AvSouris1 = 11; /* 1 2 11 22 */ 
		nn=48;
		if (Trouve[nn]==0)
		{
			if ((TablD[Xtabl[nn]][Ytabl[nn]]==0) && (Xtabl[nn]<26)
			&& (Choix[nn]==2))
			{
				BlocNote.drawImage(imgEF, Xaff[nn], Yaff[nn], null);
				Xaff[nn]=Xaff[nn]+AvSouris1; Indic[nn]="D";IndicPass[nn]=0;
				BlocNote.drawImage(imgyXP, Xaff[nn], Yaff[nn], null);
				if (Xaff[nn]==(22*(Xtabl[nn]+1))+1) 
				{ 
					Indic[nn]=""; Xtabl[nn]++;
					TablDSs[Xtabl[nn]][Ytabl[nn]]=TablDSs[Xtabl[nn]][Ytabl[nn]]+Nincs;
				}
			}
			if ((TablB[Xtabl[nn]][Ytabl[nn]]==0) && (Ytabl[nn]<12)
			&& (Choix[nn]==4))
			{
				BlocNote.drawImage(imgEF, Xaff[nn], Yaff[nn], null);
				Yaff[nn]=Yaff[nn]+AvSouris1; Indic[nn]="B";IndicPass[nn]=0;
				BlocNote.drawImage(imgyYP, Xaff[nn], Yaff[nn], null);
				if (Yaff[nn]==(22*(Ytabl[nn]+1))+1) 
				{ 
					Indic[nn]=""; Ytabl[nn]++;
					TablBSs[Xtabl[nn]][Ytabl[nn]]=TablBSs[Xtabl[nn]][Ytabl[nn]]+Nincs;
				}
			}
			if ((TablG[Xtabl[nn]][Ytabl[nn]]==0) && (Xtabl[nn]>0)
			&& (Choix[nn]==1))
			{
				BlocNote.drawImage(imgEF, Xaff[nn], Yaff[nn], null);
				Xaff[nn]=Xaff[nn]-AvSouris1; Indic[nn]="G";IndicPass[nn]=0;
				BlocNote.drawImage(imgyXM, Xaff[nn], Yaff[nn], null);
				if (Xaff[nn]==(22*(Xtabl[nn]-1))+1) 
				{ 
					Indic[nn]=""; Xtabl[nn]--;
					TablGSs[Xtabl[nn]][Ytabl[nn]]=TablGSs[Xtabl[nn]][Ytabl[nn]]+Nincs;
				}
			}
			if ((TablH[Xtabl[nn]][Ytabl[nn]]==0) && (Ytabl[nn]>0)
			&& (Choix[nn]==3))
			{
				BlocNote.drawImage(imgEF, Xaff[nn], Yaff[nn], null);
				Yaff[nn]=Yaff[nn]-AvSouris1; Indic[nn]="H";IndicPass[nn]=0;
				BlocNote.drawImage(imgyYM, Xaff[nn], Yaff[nn], null);
				if (Yaff[nn]==(22*(Ytabl[nn]-1))+1) 
				{ 	
					Indic[nn]=""; Ytabl[nn]--;
					TablHSs[Xtabl[nn]][Ytabl[nn]]=TablHSs[Xtabl[nn]][Ytabl[nn]]+Nincs;
				}
			}
			if (Indic[nn]=="")
			{
				Nincs++;
				if ((Xtabl[nn]-1 >=0)&&(TablG[Xtabl[nn]][Ytabl[nn]]==0))
				{ 
				nCal1= TablGSs[Xtabl[nn]-1][Ytabl[nn]]+TablDSs[Xtabl[nn]-1][Ytabl[nn]]
					+TablHSs[Xtabl[nn]-1][Ytabl[nn]]+TablBSs[Xtabl[nn]-1][Ytabl[nn]];
				} else {nCal1=100000000;}
				if ((Xtabl[nn]+1 <=26)&&(TablD[Xtabl[nn]][Ytabl[nn]]==0))
				{ 
				nCal2= TablGSs[Xtabl[nn]+1][Ytabl[nn]]+TablDSs[Xtabl[nn]+1][Ytabl[nn]]
					+TablHSs[Xtabl[nn]+1][Ytabl[nn]]+TablBSs[Xtabl[nn]+1][Ytabl[nn]];
				} else {nCal2=10000000;}
				if ((Ytabl[nn]-1 >=0)&&(TablH[Xtabl[nn]][Ytabl[nn]]==0))
				{ 
				nCal3= TablGSs[Xtabl[nn]][Ytabl[nn]-1]+TablDSs[Xtabl[nn]][Ytabl[nn]-1]
					+TablHSs[Xtabl[nn]][Ytabl[nn]-1]+TablBSs[Xtabl[nn]][Ytabl[nn]-1];
				} else {nCal3=1000000;}
				if ((Ytabl[nn]+1 <=12)&&(TablB[Xtabl[nn]][Ytabl[nn]]==0))
				{ 
				nCal4= TablGSs[Xtabl[nn]][Ytabl[nn]+1]+TablDSs[Xtabl[nn]][Ytabl[nn]+1]
					+TablHSs[Xtabl[nn]][Ytabl[nn]+1]+TablBSs[Xtabl[nn]][Ytabl[nn]+1];
				} else {nCal4=100000;}
				if ((TablG[Xtabl[nn]][Ytabl[nn]]==0) 
					&& (nCal1<=nCal2)&& (nCal1<=nCal3)&& (nCal1<=nCal4))
				{Choix[nn] = 1;}
				if ((TablB[Xtabl[nn]][Ytabl[nn]]==0)
					&& (nCal4<=nCal2)&& (nCal4<=nCal1)&& (nCal4<=nCal3))
				{Choix[nn] = 4;}
  				if ((TablH[Xtabl[nn]][Ytabl[nn]]==0)
					&& (nCal3<=nCal1)&& (nCal3<=nCal2)&& (nCal3<=nCal4))
				{Choix[nn] = 3;}
				if ((TablD[Xtabl[nn]][Ytabl[nn]]==0)
					&& (nCal2<=nCal1)&& (nCal2<=nCal3)&& (nCal2<=nCal4))
				{Choix[nn] = 2;}
			}
		if ((((Xtabl[nn]==22) && (Ytabl[nn]==1)) ||((Xtabl[nn]==22) && (Ytabl[nn]==2)) 
		|| ((Xtabl[nn]==23) && (Ytabl[nn]==1)) ||((Xtabl[nn]==23) && (Ytabl[nn]==2)))
		&& (Trouve[nn]==0))
		{
			Trouve[nn]=1; int iii=0;
		}
		}
	}
	/* Déplacement de la souris 3 dans le bloc note */
	public void paint4(Graphics BlocNote)
	{
		AvSouris1 = 11; /* 1 2 11 22 */ 
		nn=49;
		if (Trouve[nn]==0)
		{
			IndicPass[nn]=1;
			if ((TablD[Xtabl[nn]][Ytabl[nn]]==0) && (IndicPass[nn]==1) && (Xtabl[nn]<26)
			&& !(Interdit[nn]=="D")/* && (TablDS[Xtabl[nn]+1][Ytabl[nn]]==0)  */
			&& ((Choix[nn]==2) || (Choix[nn]==5))
 			&& ((Indic[nn]=="D") || (Indic[nn]=="")))   
			{
				BlocNote.drawImage(imgEF, Xaff[nn], Yaff[nn], null);
				Xaff[nn]=Xaff[nn]+AvSouris1; Indic[nn]="D";IndicPass[nn]=0;
				BlocNote.drawImage(imgxXP, Xaff[nn], Yaff[nn], null);
				if (Xaff[nn]==(22*(Xtabl[nn]+1))+1) 
				{ 
					Indic[nn]=""; Xtabl[nn]++; Interdit[nn]="G"; 
					TablDS[Xtabl[nn]][Ytabl[nn]]++;
				}
			}
			if ((TablB[Xtabl[nn]][Ytabl[nn]]==0) && (IndicPass[nn]==1) && (Ytabl[nn]<12)
			&& !(Interdit[nn]=="B")/* && (TablBS[Xtabl[nn]][Ytabl[nn]+1]==0)   */
			&& ((Choix[nn]==4) || (Choix[nn]==5))
			&& ((Indic[nn]=="B") || (Indic[nn]=="")))  
			{
				BlocNote.drawImage(imgEF, Xaff[nn], Yaff[nn], null);
				Yaff[nn]=Yaff[nn]+AvSouris1; Indic[nn]="B";IndicPass[nn]=0;
				BlocNote.drawImage(imgxYP, Xaff[nn], Yaff[nn], null);
				if (Yaff[nn]==(22*(Ytabl[nn]+1))+1) 
				{ 
					Indic[nn]=""; Ytabl[nn]++; Interdit[nn]="H"; 
					TablBS[Xtabl[nn]][Ytabl[nn]]++;
				}
			}
			if ((TablG[Xtabl[nn]][Ytabl[nn]]==0) && (IndicPass[nn]==1) && (Xtabl[nn]>0)
			&& !(Interdit[nn]=="G")/*&& (TablGS[Xtabl[nn]-1][Ytabl[nn]]==0) */
			&& ((Choix[nn]==1) || (Choix[nn]==5))
			&& ((Indic[nn]=="G") || (Indic[nn]=="")))  
			{
				BlocNote.drawImage(imgEF, Xaff[nn], Yaff[nn], null);
				Xaff[nn]=Xaff[nn]-AvSouris1; Indic[nn]="G";IndicPass[nn]=0;
				BlocNote.drawImage(imgxXM, Xaff[nn], Yaff[nn], null);
				if (Xaff[nn]==(22*(Xtabl[nn]-1))+1) 
				{ 
					Indic[nn]=""; Xtabl[nn]--; Interdit[nn]="D"; 
					TablGS[Xtabl[nn]][Ytabl[nn]]++;
				}
			}
			if ((TablH[Xtabl[nn]][Ytabl[nn]]==0) && (IndicPass[nn]==1) && (Ytabl[nn]>0)
			&& !(Interdit[nn]=="H")/* && (TablHS[Xtabl[nn]][Ytabl[nn]-1]==0) */
			&& ((Choix[nn]==3) || (Choix[nn]==5))
			&& ((Indic[nn]=="H") || (Indic[nn]==""))) 
			{
				BlocNote.drawImage(imgEF, Xaff[nn], Yaff[nn], null);
				Yaff[nn]=Yaff[nn]-AvSouris1; Indic[nn]="H";IndicPass[nn]=0;
				BlocNote.drawImage(imgxYM, Xaff[nn], Yaff[nn], null);
				if (Yaff[nn]==(22*(Ytabl[nn]-1))+1) 
				{ 	
					Indic[nn]=""; Ytabl[nn]--; Interdit[nn]="B"; 
					TablHS[Xtabl[nn]][Ytabl[nn]]++;
				}
			}
			if (IndicPass[nn]==1)	
			{
				Interdit[nn]="";
			}
			if (Indic[nn]=="")
			{
				Interdit[nn]="";
				Choix[nn] = 5;
				if ((Ytabl[nn] >=0)&&(TablG[Xtabl[nn]][Ytabl[nn]]==0)&&(TablG[Xtabl[nn]][Ytabl[nn]]==0) )
				{ 
				nCal1= TablGS[Xtabl[nn]-1][Ytabl[nn]]+TablDS[Xtabl[nn]-1][Ytabl[nn]]
					+TablHS[Xtabl[nn]-1][Ytabl[nn]]+TablBS[Xtabl[nn]-1][Ytabl[nn]];
				} else {nCal1=100;}
				if ((Ytabl[nn] <26)&&(TablD[Xtabl[nn]][Ytabl[nn]]==0)&&(TablD[Xtabl[nn]][Ytabl[nn]]==0))
				{ 
				nCal2= TablGS[Xtabl[nn]+1][Ytabl[nn]]+TablDS[Xtabl[nn]+1][Ytabl[nn]]
					+TablHS[Xtabl[nn]+1][Ytabl[nn]]+TablBS[Xtabl[nn]+1][Ytabl[nn]];
				} else {nCal2=100;}
				if ((Ytabl[nn]-1 >=0)&&(TablH[Xtabl[nn]][Ytabl[nn]]==0)&&(TablH[Xtabl[nn]][Ytabl[nn]]==0))
				{ 
				nCal3= TablGS[Xtabl[nn]][Ytabl[nn]-1]+TablDS[Xtabl[nn]][Ytabl[nn]-1]
					+TablHS[Xtabl[nn]][Ytabl[nn]-1]+TablBS[Xtabl[nn]][Ytabl[nn]-1];
				} else {nCal3=100;}
				if ((Ytabl[nn]+1 <=12)&&(TablB[Xtabl[nn]][Ytabl[nn]]==0)&&(TablB[Xtabl[nn]][Ytabl[nn]]==0))
				{ 
				nCal4= TablGS[Xtabl[nn]][Ytabl[nn]+1]+TablDS[Xtabl[nn]][Ytabl[nn]+1]
					+TablHS[Xtabl[nn]][Ytabl[nn]+1]+TablBS[Xtabl[nn]][Ytabl[nn]+1];
				} else {nCal4=100;}
				if ((TablG[Xtabl[nn]][Ytabl[nn]]==0) 
					&& (nCal1<=nCal2)&& (nCal1<=nCal3)&& (nCal1<=nCal4))
				{Choix[nn] = 1;}
				if ((TablD[Xtabl[nn]][Ytabl[nn]]==0)
					&& (nCal2<=nCal1)&& (nCal2<=nCal3)&& (nCal2<=nCal4))
				{Choix[nn] = 2;}
  				if ((TablH[Xtabl[nn]][Ytabl[nn]]==0)
					&& (nCal3<=nCal1)&& (nCal3<=nCal2)&& (nCal3<=nCal4))
				{Choix[nn] = 3;}
				if ((TablB[Xtabl[nn]][Ytabl[nn]]==0)
					&& (nCal4<=nCal2)&& (nCal4<=nCal1)&& (nCal4<=nCal3))
				{Choix[nn] = 4;}
 				/* Mémorisation Chemin */
				CheminX[Ch]=Xtabl[nn];CheminY[Ch]=Ytabl[nn];
				Ch++; if (Ch==1000){Ch=0;}
			}
/*			BlocNote.drawImage(Affiche, 0, 0, null);
			BlocNote.drawString( Double.toString(Choix[nn])+"Choix",10,20);
			BlocNote.drawString( (Indic[nn])+"Indic",10,30);
			BlocNote.drawString( Double.toString(nCal1)+"G",10,40);
			BlocNote.drawString( Double.toString(nCal2)+"D",10,50);
			BlocNote.drawString( Double.toString(nCal3)+"H",10,60);
			BlocNote.drawString( Double.toString(nCal4)+"B",10,70);
			BlocNote.drawString( Interdit[nn]+"Interdit",10,80);
			BlocNote.drawString( Double.toString(IndicPass[nn])+"Pass",10,90);
			BlocNote.drawString( Double.toString(TablBS[Xtabl[nn]][Ytabl[nn]+1]),10,100);
			BlocNote.drawString( Double.toString(TablB[Xtabl[nn]][Ytabl[nn]]),10,110);*/
		if ((((Xtabl[nn]==22) && (Ytabl[nn]==1)) ||((Xtabl[nn]==22) && (Ytabl[nn]==2)) 
		|| ((Xtabl[nn]==23) && (Ytabl[nn]==1)) ||((Xtabl[nn]==23) && (Ytabl[nn]==2)))
		&& (Trouve[nn]==0))
		{
			Trouve[nn]=1; int iii=0;
			/* Fabrication du raccoursi */
			for (int i=0; i10){ComptB++; if (ComptB>=20000000) {ComptB=200000;}}
		if ((ComptB<=30)&&(ComptB>=0)&&(ComptA>=10))
		{BlocNote.drawImage(From1, XFrom, YFrom, null);}
		if ((ComptB<=60)&&(ComptB>30)&&(ComptA>=10))
		{BlocNote.drawImage(From2, XFrom, YFrom, null);}
		if ((ComptB<=90)&&(ComptB>60)&&(ComptA>=10))	
		{BlocNote.drawImage(From3, XFrom, YFrom, null);}
		if ((ComptB<=120)&&(ComptB>90)&&(ComptA>=10))	
		{BlocNote.drawImage(From4, XFrom, YFrom, null);}
		if ((ComptB>120)&&(ComptA>=10)&&(ComptA<48))	
		{BlocNote.drawImage(From5, XFrom, YFrom, null);}
		if ((ComptA>=48))	
		{BlocNote.drawImage(From6, XFrom, YFrom, null);}
	}
	/* Tracage du Bloc Note sur l'écran */
	public void update(Graphics BlocNote)
	{
		/* Couleur */
		if (BoutonEff==0) {BlocNote.setColor(new Color(ColorX));}
		if (BoutonEff==1)
		{
			BoutonEff--;
			ColorX = (int) (Math.random() * 555);
			for (int i=0; i<=26; i++)
			{
				for (int ii=0; ii<=12; ii++)
				{
					TablG[i][ii]=0;TablD[i][ii]=0;TablH[i][ii]=0;TablB[i][ii]=0;
					TablS[i][ii]=0;
					TablHS[i][ii]=0;TablBS[i][ii]=0;TablGS[i][ii]=0;TablDS[i][ii]=0;
					TablHSs[i][ii]=0;TablBSs[i][ii]=0;TablGSs[i][ii]=0;TablDSs[i][ii]=0;
				}
			}
			Labirinte();
			for (int n=0; n<50; n++)
			{
				BlocNote.drawImage(imgEF, Xaff[n], Yaff[n], null);
				Xaff[n]=1; Yaff[n]=1; Xtabl[n]=0; Ytabl[n]=0;Indic[n]="";Interdit[n]="";
				Choix[n] = 0; IndicPass[n] = 0; Trouve[n] = 0;
			}
			for (int n=0; n<1000; n++)
			{
				CheminX[n]=0;CheminY[n]=0;CheminRX[n]=0;CheminRY[n]=0;
			}
			NbrSouris = 1;
		}
		if (BoutonEff==2)
		{
			BoutonEff--;
			ColorX = Integer.parseInt(getParameter("bgcolor")); 
			BlocNote.setColor( new Color(ColorX));
		}
		paint(BlocNote);
		BlocNote.drawImage(Ecran,0,0,null);
	}
	/* Tracage du labyrinthe dans le bloc note */
	public void paint(Graphics BlocNote)
	{
		for (int i=0; i<=26; i++)
		{
			for (int ii=0; ii<=12; ii++)
			{
				if (TablG[i][ii]==1)
				{
					BlocNote.drawLine( i*22, ii*22, i*22, (ii*22)+21 );
				}
				if (TablD[i][ii]==1)
				{
					BlocNote.drawLine( (i*22)+21, ii*22, (i*22)+21, (ii*22)+21 );
				}
				if (TablH[i][ii]==1)
				{
					BlocNote.drawLine( i*22, ii*22, (i*22)+21, ii*22 );
				}
				if (TablB[i][ii]==1)
				{
					BlocNote.drawLine( i*22, (ii*22)+21, (i*22)+21, (ii*22)+21 );
				}
			}
		}
		paint1(BlocNote);
		paint2(BlocNote);
		paint4(BlocNote);
		paint3(BlocNote);
	}
	public void start() {
  	if(timer == null)
   	 {
 	     timer = new Thread(this);
 	     timer.start();
 	   }
	}
	public void stop() {
	  timer = null;
	}
	public void run() {
		while (timer != null) {
    		try {Thread.sleep(100);} catch (InterruptedException e){}
    		repaint();
  	}
  	timer = null;
}
}