import java.awt.*; import java.applet.*; import java.awt.event.*; public class demi8 extends Applet implements ActionListener,MouseListener,MouseMotionListener { String Import1,Import2;// variable pour importer depuis le HTMl int i,j,Nc, Nl, fWi,fHi,cW,cH,tW,tH, contenu, nm, mt;//nombre ligne, fentre.height, colo, tabl int Lc, Cc, LC,CC, LC2,CC2,i2,i3,j2,j3; // ligne et colone cliquéeint caseb[][]=new int[100][100]; // contient les mines int caseb[][]=new int [100][100]; //contient les mines String cases[][]=new String[100][100]; // affiche les cases String casev[][]=new String[100][100]; // " " invisible, "A" montre mines String casen[][]=new String[100][100]; // contient le nombre de mine adjacent int Px,Py; //coordonnées de la souris. int vide = 40, tot; // bande vide supérieure int jeu = 0; // si =1 => perdu int diff = 15; // diffulté en % String message="bouge souris"; Button bouton1 = new Button ("plus"); Button bouton2 = new Button ("moins"); public void init() { addMouseListener(this); addMouseMotionListener(this); Import1 = getParameter("para1"); Import2 = getParameter("para2"); Nc = Integer.parseInt(Import1,10); // nombre de colonne Nl = Integer.parseInt(Import2,10); // nombre de ligne Dimension appletSize = this.getSize(); fWi= appletSize.width-1; // largeur de la fenetre fHi= appletSize.height-1; // hauteur de la fenetre calcul(); aleat(); donnen(); add (bouton1); add (bouton2); bouton1.addActionListener(this); bouton1.setActionCommand("plus"); bouton2.addActionListener(this); bouton2.setActionCommand("moins"); } public void paint(Graphics g) { message =message+" jeu :"+ Integer.toString(jeu,10); if (jeu==1) { // fin du jeu g.drawString("T'AS PERDU",5,10); g.drawString("clique en dehors de la zone puis presse F5 pour recommencer",fWi-200,10); for (Lc=0;Lc perdu jeu=1; casev [Lc][Cc]=casen [Lc][Cc]; if (casev[Lc][Cc]=="-"){ i=Lc; j=Cc; if (Lc!=0){ do { i--; affiche2(); casev [i][Cc]=casen [i][Cc]; // affiche en haut } while (casev[i][Cc]== "-" && i >=1 ); } i=Lc; j=Cc; do { i++; affiche2(); casev [i][Cc]=casen [i][Cc]; // affiche en bas } while (casev[i][Cc]== "-" ); i=Lc; j=Cc; if (Cc!=0){ do { j--; affiche2(); casev [Lc][j]=casen [Lc][j]; // affiche à gauche } while (casev[Lc][j]== "-" && j >=1); } i=Lc; j=Cc; do { j++; affiche2(); casev [Lc][j]=casen [Lc][j]; // affiche à droite } while (casev[Lc][j]== "-" ); i=Lc; j=Cc; do { i++; j++; affiche2(); casev [i][j]=casen [i][j]; // affiche diagonale } while (casev[i][j]== "-" ); i=Lc; j=Cc; do { i--; j--; affiche2(); casev [i][j]=casen [i][j]; // affiche diagonale } while (casev[i][j]== "-" && i >= 1 && j >= 1); i=Lc; j=Cc; do { i++; j--; affiche2(); casev [i][j]=casen [i][j]; // affiche diagonale } while (casev[i][j]== "-" && j >= 1); i=Lc; j=Cc; do { i--; j++; affiche2(); casev [i][j]=casen [i][j]; // affiche diagonale } while (casev[i][j]== "-"&& i >=1 ); } // fin if } // fin affiche public void affiche2() { // affiche si vide LC = i; CC = j; if (casen[LC][CC]=="-" && LC >=1 && CC >=1){ i2=LC; if (LC!=0){ do { i2--; affiche3(); casev [i2][CC]=casen [i2][CC]; // affiche en haut } while (casev[i2][CC]== "-" && i2 >=1 ); } i2=LC; do { i2++; affiche3(); casev [i2][CC]=casen [i2][CC]; // affiche en bas } while (casev[i2][CC]== "-" ); i2=CC; if (CC!=0){ do { i2--; affiche3(); casev [LC][i2]=casen [LC][i2]; // affiche à gauche } while (casev[LC][i2]== "-" && i2 >=1 ); } i2=CC; do { i2++; affiche3(); casev [LC][i2]=casen [LC][i2]; // affiche à droite } while (casev[LC][i2]== "-" ); i2=LC; j2=CC; do { i2++; j2++; affiche3(); casev [i2][j2]=casen [i2][j2]; // affiche diagonale } while (casev[i2][j2]== "-" ); i2=LC; j2=CC; do { i2--; j2--; affiche3(); casev [i2][j2]=casen [i2][j2]; // affiche diagonale } while (casev[i2][j2]== "-" && i2 >=1 && j2 >=1 ); i2=LC; j2=CC; do { i2++; j2--; affiche3(); casev [i2][j2]=casen [i2][j2]; // affiche diagonale } while (casev[i2][j2]== "-"&& j2 >=1 ); i2=LC; j2=CC; do { i2--; j2++; affiche3(); casev [i2][j2]=casen [i2][j2]; // affiche diagonale } while (casev[i2][j2]== "-" && i2 >=1 ); }} // fin affiche2 + fin if public void affiche3() { // affiche si vide /* */} // fin affiche2 + fin if public void donnen() { // détemine le nombre de mines contigue for (Lc=0;Lc0) tot= caseb[Lc][Cc-1]+caseb[Lc][Cc+1]+caseb[Lc+1][Cc-1]+caseb[Lc+1][Cc]+caseb[Lc+1][Cc+1]; if (Lc>0 && Cc==0) tot= +caseb[Lc-1][Cc]+ caseb[Lc-1][Cc+1]+caseb[Lc][Cc+1]+caseb[Lc+1][Cc]+caseb[Lc+1][Cc+1]; if (Lc>0 && Cc>0) tot= caseb[Lc-1][Cc-1]+caseb[Lc-1][Cc]+ caseb[Lc-1][Cc+1]+caseb[Lc][Cc-1]+caseb[Lc][Cc+1]+caseb[Lc+1][Cc-1]+caseb[Lc+1][Cc]+caseb[Lc+1][Cc+1]; if (tot==0) casen [Lc][Cc]="-"; else casen [Lc][Cc]=Integer.toString (tot,10); } } } public void marque() { // marque comme suspect if (casev [Lc][Cc]!= "!") { // case pas marquée casev [Lc][Cc]="!"; mt += 1; } else { casev[Lc][Cc]=" "; // supprime la marque mt -=1; } } public void mousePressed(MouseEvent evt) { } public void mouseReleased(MouseEvent evt) { message="souris marque "; Px=evt.getX(); //mémorise le point x Py=evt.getY(); quellecase(); marque(); repaint(); } public void mouseEntered(MouseEvent evt) { } public void mouseExited(MouseEvent evt) { } public void mouseClicked(MouseEvent evt) { // message="souris click "; Px=evt.getX(); //mémorise le point x Py=evt.getY(); //mémorise le point y quellecase(); if (casev [Lc][Cc]== "!") // permet de clicker pour démarquer mt -= 1; affiche(); repaint(); } public void mouseMoved(MouseEvent evt) { } public void mouseDragged(MouseEvent evt) { } public void actionPerformed(ActionEvent evt) { //traitement des boutons if (evt.getActionCommand().equals("plus")) diff = diff + 2; else diff = diff - 2; if (diff<10) diff = 10; if (diff > 90) diff = 90; calcul(); aleat(); repaint(); donnen(); } }