0% ont trouvé ce document utile (0 vote)
241 vues24 pages

Demineur

Ce document décrit une classe Java nommée Aide qui permet d'afficher une aide sous forme d'arborescence de fichiers XML dans une interface graphique. La classe utilise SAX pour parser les fichiers XML et remplir l'arborescence, et gère également l'affichage d'un éditeur de texte pour le contenu de l'aide.

Transféré par

Fabio R. D. Rodrigues
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Thèmes abordés

  • Java,
  • JPanel,
  • JRadioButtonMenuItem,
  • FocusListener,
  • Gestion des mines,
  • JEditorPane,
  • Chronomètre,
  • DPanel,
  • DChronoLabel,
  • Gestion des événements
0% ont trouvé ce document utile (0 vote)
241 vues24 pages

Demineur

Ce document décrit une classe Java nommée Aide qui permet d'afficher une aide sous forme d'arborescence de fichiers XML dans une interface graphique. La classe utilise SAX pour parser les fichiers XML et remplir l'arborescence, et gère également l'affichage d'un éditeur de texte pour le contenu de l'aide.

Transféré par

Fabio R. D. Rodrigues
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Thèmes abordés

  • Java,
  • JPanel,
  • JRadioButtonMenuItem,
  • FocusListener,
  • Gestion des mines,
  • JEditorPane,
  • Chronomètre,
  • DPanel,
  • DChronoLabel,
  • Gestion des événements

Printed by Colette JOHNEN (profs)

jui 17, 09 15:51 [Link] Page 1/3 jui 17, 09 15:51 [Link] Page 2/3
import [Link];
import [Link].*; return panel;
import [Link].*; }
import [Link].*;
import [Link].*; private JPanel bouton(){
import [Link].*; JPanel panel = new JPanel();
import [Link].*; btnFermer = new JButton("Fermer");
import [Link].*;
[Link](new FlowLayout([Link]));
public class Aide{ [Link](btnFermer);
SAXParserFactory saxParserFactory;
SAXParser saxParser; return panel;
DefaultMutableTreeNode racine; }
DefaultTreeModel dtm;
JTree tree; public Aide(File rep){
HandlerArbre handler;
XMLReader r; // creation de l’arboresence
JFrame maFen; creerArbo(rep);
JEditorPane jep;
JButton btnFermer; // ajout de l’arbre dans la fenetre
AideListener ecouteur; dtm = new DefaultTreeModel(racine);
tree = new JTree(dtm);
private void creerArbo(File rep){
Reader unReader; maFen = new JFrame("Aide");
racine = new DefaultMutableTreeNode("Aide"); JScrollPane jsp = new JScrollPane(tree);
Container c = [Link]();
File dossier[] = [Link](); [Link](new BorderLayout());
for(int i=0; i<[Link]; i++){ [Link](jsp, [Link]);
try{
[Link](centerPanel(), [Link]);
saxParserFactory = [Link](); [Link](bouton(), [Link]);
saxParser = [Link]();
// ecouteur
File fichier = dossier[i]; ecouteur = new AideListener(this);
unReader = new FileReader(fichier); [Link](ecouteur);
r = [Link](); [Link](ecouteur);
handler = new HandlerArbre(fichier);
[Link](handler); [Link](400, 500);
[Link](true);
[Link](new InputSource(unReader)); }

}catch(Exception e){}; }
[Link]([Link]()); class HandlerArbre extends DefaultHandler{
} DefaultMutableTreeNode branche;
} File fichier;
//creer pile
public void chargerEditor(String url){
public HandlerArbre(File f){
fichier = f;
try{ branche = new DefaultMutableTreeNode([Link]());
}
[Link]("text/html");
//[Link]("−−−> Passe"); public DefaultMutableTreeNode getBranche(){
[Link](new FileReader(url), null); return branche;
[Link](false); }
}catch(Exception ioe){/*[Link]("Erreur");*/}
} public void startDocument(){
//[Link]("Les balises de " + [Link]() + " s
private JPanel centerPanel(){ ont ");
JPanel panel = new JPanel();
[Link](new BorderLayout()); }
jep = new JEditorPane(); public void endDocument(){
chargerEditor("./Aide/[Link]"); }
JScrollPane jsp = new JScrollPane(jep);
[Link](jsp, [Link]); public void startElement(String uri, String locName, String qName, Attri

vendredi juillet 17, 2009 [Link] 1/24


Printed by Colette JOHNEN (profs)
jui 17, 09 15:51 [Link] Page 3/3
butes atr){
int nb = [Link]();
if (nb!=0){
for(int i=0; i<nb; i++){
if([Link](i).compareTo("name")==0){
DefaultMutableTreeNode feuille = new DefaultMuta
bleTreeNode([Link](i));
//DefaultMutableTreeNode feuille = new DefaultMu
tableTreeNode("toto");
[Link](feuille);
//[Link]("\t "+ [Link](i));
}
}
}
}
public void endElement(String uri, String locName, String qName){
}

public void characters(char[] chrs, int d, int n){


}
}

vendredi juillet 17, 2009 [Link] 2/24


Printed by Colette JOHNEN (profs)
jui 17, 09 15:51 [Link] Page 1/1
import [Link].*;
import [Link].*;
import [Link].*;
import [Link].*;
import [Link].*;
import [Link].*;
import [Link].*;
public class AideListener implements ActionListener, TreeSelectionListener{
Aide arbo;
JButton fermer;
JEditorPane jep;

public AideListener(Aide a){


arbo = a;
fermer = [Link];
jep = [Link];
}

public void actionPerformed(ActionEvent e){


try{
[Link]("./Aide/[Link]#Statistiques");
}catch(IOException ioe){[Link]("Erreur chgt jep");}
[Link]("Statistiques");
}
private String chemin(TreePath tp){
StringTokenizer st = new StringTokenizer([Link](), "[, ]");
String ficSelect = new String(".");
while([Link]()){
ficSelect = new String(ficSelect +"/"+ [Link]() );
}
return ficSelect;
}

public void valueChanged(TreeSelectionEvent tse){


try{
JTree tree = (JTree)[Link]();
TreePath tp = [Link]();
String dernier = [Link]().toString();
if([Link]()==2){
[Link](chemin(tp));
[Link]("Charger " + chemin(tp)
);
}
if([Link]()==3){
[Link](chemin(tp));
[Link](dernier);
[Link]("Charger " + chemin([Link]
ath()));
[Link](" // " + dernier);
}
[Link]();
}catch(NullPointerException npe){};
}

vendredi juillet 17, 2009 [Link] 3/24


Printed by Colette JOHNEN (profs)
jui 17, 09 16:24 [Link] Page 1/1
import [Link].*;
import [Link].*;
public class DButton extends JButton{
int x,y;

public DButton(int i, int j){


super();
x = i;
y = j;
}
public int getX(){
return x;
}
public int getY(){
return y;
}
}

vendredi juillet 17, 2009 [Link] 4/24


Printed by Colette JOHNEN (profs)
jui 17, 09 16:25 [Link] Page 1/1
public class DCase{

private boolean mine;


private int mimesAlentour;
private boolean drapeau;
private boolean decouverte;
private boolean selection;
public DCase(){
mine = false;
decouverte = false;
drapeau = false;
selection = false;
mimesAlentour = −1;
}

public boolean estMine(){


return mine;
}
public int getMinesAlentour(){
return mimesAlentour;
}
public boolean yaDrapreau(){
return drapeau;
}
public boolean estDecouverte(){
return decouverte;
}

public void setDecouverte(){


decouverte = true;
}
public void selectionner(){
selection = true;
}

public void deselectionner(){


selection = false;
}
public boolean select(){
return selection;
}

public void drapeauAction(){


if(!decouverte)
drapeau = (!drapeau);
}
public void poserBombe(){
mine = true;
}

public void setMinesAlentour(int nb){


mimesAlentour = nb;
}
}

vendredi juillet 17, 2009 [Link] 5/24


Printed by Colette JOHNEN (profs)
jui 17, 09 16:45 [Link] Page 1/1
import [Link].*;
import [Link].*;
public class DChronoLabel extends JLabel implements Runnable{
private Thread t;
private boolean enMarche, pause;
private int temps;
public DChronoLabel(){
super();
initChrono();
}
public boolean estActif(){ return enMarche; }
public Thread getThread(){ return t; }

public void run(){


temps = 0;
enMarche = true;
pause = false;
while(enMarche){
temps++;
setText(convertirTemps());
while(pause){ }
try{
[Link](1000);
}
catch (InterruptedException ie){;}
}
}
public void mettreEnPause(){ pause = true; }

public void enleverPause(){ pause = false; }


public void stop(){ enMarche = false; }
String convertirTemps(){
Integer i = new Integer(temps);
if(temps<10)
return ("00"+[Link]());
else
if(temps<100)
return ("0"+[Link]());
else
return [Link]();
}
public void initChrono(){
setText("000");
temps = 0;
enMarche = false;
t = new Thread(this);
}
public int getTime(){return temps;}
}

vendredi juillet 17, 2009 [Link] 6/24


Printed by Colette JOHNEN (profs)
jui 17, 09 16:26 [Link] Page 1/5 jui 17, 09 16:26 [Link] Page 2/5
import [Link].*; [Link](20*nb_col + 6, 20*nb_lgn + 50 + 23 + 25);
import [Link].*; [Link](false);
import [Link].*; [Link](true);
[Link]();
public class DFenetre extends JFrame {
}
final static int DEBUTANT = 1;
final static int INTER = 2; private void menu(){
final static int EXPERT = 3; /* creation du menu de jeu */
final static int PERSO = 4; jeu = new JMenu("Jeu");
nouvelle = new JMenuItem("Nouvelle partie");
int nb_col; [Link]([Link](KeyEvent.VK_N,
int nb_lgn; InputEvent.CTRL_MASK));
int nb_mines; [Link]("Partie avec les mêmes paramètres");
[Link](nouvelle);
JMenuBar barreMenus; [Link]();
JMenu jeu, options, aPropos;
ButtonGroup groupRadio=new ButtonGroup();
public JRadioButtonMenuItem debutant, intermediaire, expert, perso;
public JMenuItem nouvelle, quitter, aide, createur, design, stat; debutant = new JRadioButtonMenuItem("Débutant");
[Link]([Link](KeyEvent.VK_D,
private JLabel minesRestantes; InputEvent.CTRL_MASK));
private DChronoLabel temps; [Link]("81 cases 10 mines");
private JPanel nord;
private int tailleX, tailleY; intermediaire = new JRadioButtonMenuItem("Intermédiaire");
[Link]([Link](KeyEvent.VK_I,
private JButton go; InputEvent.CTRL_MASK));
private DButton[][] boutons; [Link]("256 cases 40 mines");
private DPartie partie;
expert = new JRadioButtonMenuItem("Expert");
private DImageur imageur; [Link]([Link](KeyEvent.VK_E,
private DPanneau centre; InputEvent.CTRL_MASK));
[Link]("480 cases 99 mines");
int type;
perso = new JRadioButtonMenuItem("Personnalisé...");
public DFenetre(DPartie p){ [Link]([Link](KeyEvent.VK_P,
super("Demineur"); InputEvent.CTRL_MASK));
menu(); [Link]("Partie avec vos votres paramètres");
type = DEBUTANT;
imageur = new DImageur(p); [Link](debutant);
miseEnPage(); [Link](intermediaire);
connecterPartie(p); [Link](expert);
} [Link](perso);
public void connecterPartie(DPartie p){ [Link](debutant);
partie = p; [Link](intermediaire);
nb_lgn = [Link]().getHauteur(); [Link](expert);
nb_col = [Link]().getLargeur(); [Link](perso);
nb_mines = [Link]().getMines();
[Link]();
miseAJourCompteur(); quitter = new JMenuItem("Quitter");
goCool(); [Link]([Link](KeyEvent.VK_Q,
InputEvent.CTRL_MASK));
/* partie centrale : damier */
if(centre!=null) [Link](quitter);
getContentPane().remove(centre);
centre = new DPanneau(imageur, nb_lgn, nb_col); /* creation du menu de options */
options = new JMenu("Options");
EcouteurSouris ecouteurSouris =
new EcouteurSouris(this, partie); design = new JMenuItem("Graphisme");
[Link](ecouteurSouris); [Link]([Link](KeyEvent.VK_G,
[Link](ecouteurSouris); InputEvent.CTRL_MASK));
[Link]("Pour choisir le style d’image");
getContentPane().add(centre, [Link]); [Link](design);
[Link]();
/* Affichage */
stat = new JMenuItem("Statistiques");

vendredi juillet 17, 2009 [Link] 7/24


Printed by Colette JOHNEN (profs)
jui 17, 09 16:26 [Link] Page 3/5 jui 17, 09 16:26 [Link] Page 4/5
[Link]([Link](KeyEvent.VK_S,
InputEvent.CTRL_MASK)); public JMenuItem getStat(){
[Link]("Pour connaitre les scores"); return stat;
[Link](stat); }
/* creation du menu A propos */ public JMenuItem getQuitter(){
aPropos = new JMenu("?"); return quitter;
}
aide = new JMenuItem("Aide");
[Link]([Link](KeyEvent.VK_A, public JMenuItem getAide(){
InputEvent.CTRL_MASK)); return aide;
[Link]("Pour obtenir de l’aide"); }
[Link](aide);
public JMenuItem getCreateur(){
[Link](); return createur;
}
createur = new JMenuItem("Créateurs");
[Link]([Link](KeyEvent.VK_C, public int getHauteur(){
InputEvent.CTRL_MASK)); return nb_lgn;
[Link]("Par qui ?"); }
[Link](createur);
public int getLargeur(){
/* ajout des menus à la barre */ return nb_col;
barreMenus = new JMenuBar(); }
[Link](jeu);
[Link](options); public int getMines(){
[Link](aPropos); return nb_mines;
[Link](barreMenus); }
}
private void miseEnPage(){
public void ecouterMenu(ActionListener al){ Container c = [Link]();
[Link](al); [Link](new BorderLayout(5, 5));
[Link](al);
[Link](al); /* partie haute de l’IHM */
[Link](al); nord = new JPanel();
[Link](al); [Link](new GridBagLayout());
[Link](al); GridBagConstraints gbc = new GridBagConstraints();
[Link](al); [Link] = [Link];
[Link](al); [Link] = 1;
[Link](al); [Link] = 1;
[Link](al); [Link] = new Insets(5,0,1,0);

} /* en haut a gauche */
minesRestantes = new JLabel("00");
public JMenuItem getNouvelle(){ //[Link](minesRestantes, [Link]);
return nouvelle; [Link](minesRestantes, gbc);
} /* centre */
go = new JButton();
public JMenuItem getDebutant(){
return debutant; goCool();
} [Link](go, gbc);

public JMenuItem getIntermediaire(){ temps = new DChronoLabel();


return intermediaire; [Link](temps,gbc);
} [Link](nord, [Link]);
}
public JMenuItem getExpert(){
return expert; public JButton getGo(){
} return go;
}
public JMenuItem getPerso(){
return perso; public JMenu getMenuPartie(){
} return jeu;
}
public JMenuItem getDesign(){
return design; public DPanneau getPanneauCentral(){
} return centre;

vendredi juillet 17, 2009 [Link] 8/24


Printed by Colette JOHNEN (profs)
jui 17, 09 16:26 [Link] Page 5/5
}

public DImageur getImageur(){


return imageur;
}
public void goPerdu(){
[Link](new ImageIcon([Link]()+"/[Link]"));
}

public void goGagne(){


[Link](new ImageIcon([Link]()+"/[Link]"));
}
public void goOups(){
[Link](new ImageIcon([Link]()+"/[Link]"));
}
public void goCool(){
[Link](new ImageIcon([Link]()+"/[Link]"));
}
public void miseAJourCompteur(){
int nb = [Link]().getMines()
−[Link]().nbrDrapeau();
Integer integer = new Integer(nb);
if((nb>9) || (nb<0))
[Link]([Link]());
else
[Link]("0"+[Link]());
}
public void lancerChrono(){
if(![Link]())
[Link]().start();
}
public void arretChrono(){
[Link]();
}
public void initChrono(){
[Link]();
}
public void pauseChrono(){
[Link]();
}
public void repriseChrono(){
[Link]();
}
public int getChrono(){
return [Link]();
}
}

vendredi juillet 17, 2009 [Link] 9/24


Printed by Colette JOHNEN (profs)
jui 17, 09 16:28 [Link] Page 1/3 jui 17, 09 16:28 [Link] Page 2/3
import [Link].*; if(i==nbrFichiers)
import [Link].*; return "[Link]";
import [Link].*;
import [Link].*; for(i=0; i<nbrFichiers ;i++)
if(fichiers[i].equals("[Link]"))
public class DImageChooser extends JFileChooser { break;
if(i==nbrFichiers)
public DImageChooser(DImageur imageur, DPanneau panneau){ return "[Link]";
super("./Images/");
setApproveButtonText("OK"); for(i=0; i<nbrFichiers ;i++)
setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); if(fichiers[i].equals("[Link]"))
int returnVal = [Link](new JFrame()); break;
if(returnVal == JFileChooser.APPROVE_OPTION){ if(i==nbrFichiers)
String path = getSelectedFile().getPath(); return "[Link]";
String fichier;
if((fichier= estValide(path))==null){ for(i=0; i<nbrFichiers ;i++)
[Link](); if(fichiers[i].equals("[Link]"))
[Link](path); break;
} if(i==nbrFichiers)
else return "[Link]";
[Link](this,
fichier + " est manquant ou invalide" for(i=0; i<nbrFichiers ;i++)
,"Répertoire invalide",JOptionPane.ERROR_MESSAGE); if(fichiers[i].equals("[Link]"))
} break;
} if(i==nbrFichiers)
return "[Link]";
public String estValide(String rep){ for(i=0; i<nbrFichiers ;i++)
int i; if(fichiers[i].equals("[Link]"))
File path = new File(rep); break;
String[] fichiers = [Link](); if(i==nbrFichiers)
int nbrFichiers = [Link]; return "[Link]";

for(i=0; i<nbrFichiers ;i++)


for(i=0; i<nbrFichiers ;i++) if(fichiers[i].equals("[Link]"))
if(fichiers[i].equals("[Link]")) break;
break; if(i==nbrFichiers)
if(i==nbrFichiers) return "[Link]";
return "[Link]";
for(i=0; i<nbrFichiers ;i++)
for(i=0; i<nbrFichiers ;i++) if(fichiers[i].equals("[Link]"))
if(fichiers[i].equals("[Link]")) break;
break; if(i==nbrFichiers)
if(i==nbrFichiers) return "[Link]";
return "[Link]";
for(i=0; i<nbrFichiers ;i++)
for(i=0; i<nbrFichiers ;i++) if(fichiers[i].equals("[Link]"))
if(fichiers[i].equals("[Link]")) break;
break; if(i==nbrFichiers)
if(i==nbrFichiers) return "[Link]";
return "[Link]";
for(i=0; i<nbrFichiers ;i++)
for(i=0; i<nbrFichiers ;i++) if(fichiers[i].equals("[Link]"))
if(fichiers[i].equals("[Link]")) break;
break; if(i==nbrFichiers)
if(i==nbrFichiers) return "[Link]";
return "[Link]";
for(i=0; i<nbrFichiers ;i++)
for(i=0; i<nbrFichiers ;i++) if(fichiers[i].equals("[Link]"))
if(fichiers[i].equals("[Link]")) break;
break; if(i==nbrFichiers)
if(i==nbrFichiers) return "[Link]";
return "[Link]";
for(i=0; i<nbrFichiers ;i++)
for(i=0; i<nbrFichiers ;i++) if(fichiers[i].equals("[Link]"))
if(fichiers[i].equals("[Link]")) break;
break; if(i==nbrFichiers)

vendredi juillet 17, 2009 [Link] 10/24


Printed by Colette JOHNEN (profs)
jui 17, 09 16:28 [Link] Page 3/3
return "[Link]";

for(i=0; i<nbrFichiers ;i++)


if(fichiers[i].equals("[Link]"))
break;
if(i==nbrFichiers)
return "[Link]";
return null;
}
}

vendredi juillet 17, 2009 [Link] 11/24


Printed by Colette JOHNEN (profs)
jui 17, 09 16:28 [Link] Page 1/2 jui 17, 09 16:28 [Link] Page 2/2
import [Link].*; switch([Link]().getCase(i,j).getMinesAlentour()){
import [Link].*; case 0: return new ImageIcon(repertoire+"/[Link]");
case 1: return new ImageIcon(repertoire+"/[Link]");
public class DImageur{ case 2: return new ImageIcon(repertoire+"/[Link]");
case 3: return new ImageIcon(repertoire+"/[Link]");
private DPartie partie; case 4: return new ImageIcon(repertoire+"/[Link]");
public String repertoire = "./Images/Classic"; case 5: return new ImageIcon(repertoire+"/[Link]");
case 6: return new ImageIcon(repertoire+"/[Link]");
public DImageur(DPartie p){ case 7: return new ImageIcon(repertoire+"/[Link]");
partie = p; case 8: return new ImageIcon(repertoire+"/[Link]");
} default : return new ImageIcon(repertoire+"/[Link]");
}
public String getRepertoire(){ }
return repertoire; }
} }
public void setRepertoire(String s){ }
repertoire = s;
}

ImageIcon getImage(int i, int j){


if(![Link]() && ![Link]()){
if([Link]().getCase(i,j).yaDrapreau())
return new ImageIcon(repertoire+"/[Link]");
if(![Link]().getCase(i,j).estDecouverte()){
if([Link]().getCase(i,j).select())
return new ImageIcon(repertoire+"/[Link]");
else
return new ImageIcon(repertoire+"/[Link]");
}
switch([Link]().getCase(i,j).getMinesAlentour()){
case 0: return new ImageIcon(repertoire+"/[Link]");
case 1: return new ImageIcon(repertoire+"/[Link]");
case 2: return new ImageIcon(repertoire+"/[Link]");
case 3: return new ImageIcon(repertoire+"/[Link]");
case 4: return new ImageIcon(repertoire+"/[Link]");
case 5: return new ImageIcon(repertoire+"/[Link]");
case 6: return new ImageIcon(repertoire+"/[Link]");
case 7: return new ImageIcon(repertoire+"/[Link]");
case 8: return new ImageIcon(repertoire+"/[Link]");
default : return new ImageIcon(repertoire+"/[Link]");
}
}
else{
if([Link]()){
if(([Link]().getCase(i,j).yaDrapreau())
&& !([Link]().getCase(i,j).estMine() ))
return new ImageIcon(repertoire+"/[Link]");
if([Link]().getCase(i,j).estMine())
return new ImageIcon(repertoire+"/[Link]");
if(![Link]().getCase(i,j).estDecouverte())
return new ImageIcon(repertoire+"/[Link]");
switch([Link]().getCase(i,j).getMinesAlentour()){
case 0: return new ImageIcon(repertoire+"/[Link]");
case 1: return new ImageIcon(repertoire+"/[Link]");
case 2: return new ImageIcon(repertoire+"/[Link]");
case 3: return new ImageIcon(repertoire+"/[Link]");
case 4: return new ImageIcon(repertoire+"/[Link]");
case 5: return new ImageIcon(repertoire+"/[Link]");
case 6: return new ImageIcon(repertoire+"/[Link]");
case 7: return new ImageIcon(repertoire+"/[Link]");
case 8: return new ImageIcon(repertoire+"/[Link]");
default : return new ImageIcon(repertoire+"/[Link]");
}
}
else {

vendredi juillet 17, 2009 [Link] 12/24


Printed by Colette JOHNEN (profs)
jui 17, 09 16:46 [Link] Page 1/4 jui 17, 09 16:46 [Link] Page 2/4
import [Link].*; if(!matrice[i−1][j].estDecouverte())
import [Link]; devoilerCase(i−1,j);
}
public class DMatrice{ catch(ArrayIndexOutOfBoundsException e){ }
private int hauteur, largeur, nbMines; // parametres de la partie try{
private DCase[][] matrice; if(!matrice[i−1][j+1].estDecouverte())
private int caseNonMineeRestante; devoilerCase(i−1,j+1);
private boolean explosion; }
catch(ArrayIndexOutOfBoundsException e){ }
public DMatrice(int h, int l, int nb){
hauteur = h; try{
largeur = l; if(!matrice[i][j−1].estDecouverte())
nbMines = nb; devoilerCase(i,j−1);
explosion = false; }
matrice = new DCase[h][l]; catch(ArrayIndexOutOfBoundsException e){ }
for(int i=0; i<hauteur; i++)
for(int j=0; j<largeur; j++) try{
matrice[i][j] = new DCase(); if(!matrice[i][j+1].estDecouverte())
miner(); devoilerCase(i,j+1);
preparerAlentour(); }
caseNonMineeRestante = hauteur*largeur−nbMines; catch(ArrayIndexOutOfBoundsException e){ }
}
try{
public DCase getCase(int i, int j) { if(!matrice[i+1][j−1].estDecouverte())
try{ devoilerCase(i+1,j−1);
return matrice[i][j]; }
} catch(ArrayIndexOutOfBoundsException e){ }
catch(ArrayIndexOutOfBoundsException e){ return null; }
} try{
if(!matrice[i+1][j].estDecouverte())
public int getHauteur(){ devoilerCase(i+1,j);
return hauteur; }
} catch(ArrayIndexOutOfBoundsException e){ }
public int getLargeur(){ try{
return largeur; if(!matrice[i+1][j+1].estDecouverte())
} devoilerCase(i+1,j+1);
}
public int getMines(){ catch(ArrayIndexOutOfBoundsException e){ }
return nbMines; }
} }
}
catch(ArrayIndexOutOfBoundsException e){ }
public void devoilerCase(int i,int j){ }
/* Case découverte */
try{ public void drapeauAction(int i, int j){
matrice[i][j].setDecouverte(); matrice[i][j].drapeauAction();
caseNonMineeRestante−−; }
}
catch(ArrayIndexOutOfBoundsException e){ } private void preparerAlentour(){
int minesCompteur;
/* on regarde si la case est minée */ for(int i=0; i<hauteur; i++)
try{ for(int j=0; j<largeur; j++){
if(matrice[i][j].estMine()) minesCompteur=0;
explosion = true; if(!matrice[i][j].estMine()){
else{ try{
/* propagation éventuelle */ if(matrice[i−1][j−1].estMine())
if(matrice[i][j].getMinesAlentour()==0){ minesCompteur++;
try{ }
if(!matrice[i−1][j−1].estDecouverte()) catch(ArrayIndexOutOfBoundsException e){ }
devoilerCase(i−1,j−1);
} try{
catch(ArrayIndexOutOfBoundsException e){ } if(matrice[i−1][j].estMine())
minesCompteur++;
try{ }

vendredi juillet 17, 2009 [Link] 13/24


Printed by Colette JOHNEN (profs)
jui 17, 09 16:46 [Link] Page 3/4 jui 17, 09 16:46 [Link] Page 4/4
catch(ArrayIndexOutOfBoundsException e){ } return compteur;
}
try{
if(matrice[i−1][j+1].estMine()) public boolean aExplose(){
minesCompteur++; return explosion;
} }
catch(ArrayIndexOutOfBoundsException e){ }
public int getCaseNonMineeRestante(){
try{ return caseNonMineeRestante;
if(matrice[i][j−1].estMine()) }
minesCompteur++;
} public void afficher(){
catch(ArrayIndexOutOfBoundsException e){ } [Link]("****carte****");
for(int i=0; i<hauteur; i++){
try{ for(int j=0; j<largeur; j++){
if(matrice[i][j+1].estMine()) if(matrice[i][j].estMine())
minesCompteur++; [Link]("M ");
} else
catch(ArrayIndexOutOfBoundsException e){ } [Link](matrice[i][j].getMinesAlentour()+" ");
}
try{ [Link]("");
if(matrice[i+1][j−1].estMine())
minesCompteur++; }
} [Link]("****carte connue****");
catch(ArrayIndexOutOfBoundsException e){ } for(int i=0; i<hauteur; i++){
for(int j=0; j<largeur; j++){
try{ if(!matrice[i][j].estDecouverte())
if(matrice[i+1][j].estMine()) [Link]("* ");
minesCompteur++; else
} if(matrice[i][j].estMine())
catch(ArrayIndexOutOfBoundsException e){ } [Link]("M ");
else
try{ [Link](matrice[i][j].getMinesAlentour()+" ");
if(matrice[i+1][j+1].estMine()) }
minesCompteur++; [Link]("");
} }
catch(ArrayIndexOutOfBoundsException e){ } }
}
/* les mines ont étés comptés*/
matrice[i][j].setMinesAlentour(minesCompteur);
}
}
}

private void miner(){


int x,y;
int i=0;
Random alea = new Random();
while(i<nbMines){
x = [Link](hauteur);
y = [Link](largeur);
if(!matrice[x][y].estMine()){
matrice[x][y].poserBombe();
i++;
}
}
}
public int nbrDrapeau(){
int compteur = 0;
for(int i=0;i<hauteur;i++)
for(int j=0;j<largeur;j++){
if(matrice[i][j].yaDrapreau())
compteur++;
}

vendredi juillet 17, 2009 [Link] 14/24


Printed by Colette JOHNEN (profs)
jui 17, 09 16:32 [Link] Page 1/1
import [Link].*;
import [Link].*;
public class DPanneau extends JPanel{
private DImageur imageur;
private int hauteur, largeur;
public DPanneau(DImageur im, int h, int l){
super();
imageur = im;
hauteur = h;
largeur = l;
}

public void paintComponent(Graphics g){


[Link](g);
for(int i=0; i<hauteur; i++)
for(int j=0;j<largeur; j++){
[Link]([Link](i,j).getImage(),j*20,i*20,this);
}
}
}

vendredi juillet 17, 2009 [Link] 15/24


Printed by Colette JOHNEN (profs)
jui 17, 09 16:33 [Link] Page 1/1
public class DPartie {

private DMatrice dm;


private boolean commence, perdu;
public DPartie(int h, int l, int nb){
nouvellePartie(h,l,nb);
}
public void nouvellePartie(int h, int l, int nb){
commence = false;
perdu = false;
dm = new DMatrice(h,l,nb);
}

public DMatrice getMatrice(){


return dm;
}
public void commencer(){
commence = true;
}

public boolean gagne(){


return ([Link]()==0);
}
public boolean perdu(){
return [Link]();
}
public boolean fini(){
return(commence && (!perdu()) && (!gagne()));
}
}

vendredi juillet 17, 2009 [Link] 16/24


Printed by Colette JOHNEN (profs)
jui 17, 09 16:33 [Link] Page 1/1
import [Link].*;

public class EcouteurFenetre extends WindowAdapter{


private DFenetre fenetre;
public EcouteurFenetre(DFenetre f){
fenetre = f;
}

public void windowClosing(WindowEvent e){


[Link](0);
}
public void windowIconified(WindowEvent e){
[Link]();
}
public void windowDeiconified(WindowEvent e){
[Link]();
}
}

vendredi juillet 17, 2009 [Link] 17/24


Printed by Colette JOHNEN (profs)
jui 17, 09 16:33 [Link] Page 1/1
import [Link].*;

public class EcouteurGo implements ActionListener{


DFenetre fenetre;
DPartie partie;

public EcouteurGo(DFenetre f, DPartie p){


fenetre = f;
partie = p;
}

public void actionPerformed(ActionEvent ae){


[Link]();
[Link]();
[Link]([Link]().getHauteur(),
[Link]().getLargeur(),
[Link]().getMines());
[Link](partie);
}
}

vendredi juillet 17, 2009 [Link] 18/24


Printed by Colette JOHNEN (profs)
jui 17, 09 16:50 [Link] Page 1/2 jui 17, 09 16:50 [Link] Page 2/2
import [Link].*; "Réalisé par Igor DAURIAC et Nicolas FRANCOIS, Projet IHM",
import [Link].*; "Créateurs...",JOptionPane.INFORMATION_MESSAGE);
import [Link].*; }
}
public class EcouteurMenu implements ActionListener{
private DPartie partie;
private DFenetre fenetre;
public EcouteurMenu(DFenetre f, DPartie p){
partie = p;
fenetre = f;
}

public void actionPerformed(ActionEvent ae){


if([Link]() == [Link]()){
[Link]();
[Link]();
[Link]([Link]().getHauteur(),
[Link]().getLargeur(),
[Link]().getMines());
[Link](partie);
}
if([Link]() == [Link]()){
[Link]();
[Link]();
[Link](9,9,10);
[Link] = [Link];
[Link](partie);
}
if([Link]() == [Link]()){
[Link]();
[Link]();
[Link](16,16,40);
[Link] = [Link];
[Link](partie);
}
if([Link]() == [Link]()){
[Link]();
[Link]();
[Link](16,30,99);
[Link] = [Link];
[Link](partie);
}
if([Link]() == [Link]()){
Pref pref = new Pref(fenetre, partie);
[Link] = [Link];
}
if([Link]() == [Link]()){
DImageChooser choix =
new DImageChooser([Link](),
[Link]() );
}
if([Link]() == [Link]())
[Link](0);
if([Link]()==[Link]()){
File f = new File("./Aide");
Aide a = new Aide(f);;
}
if([Link]()==[Link]())
[Link](fenetre,

vendredi juillet 17, 2009 [Link] 19/24


Printed by Colette JOHNEN (profs)
jui 17, 09 16:43 [Link] Page 1/2 jui 17, 09 16:43 [Link] Page 2/2
import [Link].*;
import [Link].*; }
}
[Link]().repaint();
public class EcouteurSouris implements MouseListener, MouseMotionListener{ }
private DPartie partie; public void mouseExited(MouseEvent me){
private DFenetre fenetre; if(gauchePresse)
private int sourisX, sourisY; [Link]();
private boolean gauchePresse; }
public EcouteurSouris(DFenetre f, DPartie p){ public void mouseEntered(MouseEvent me){
partie = p; if(gauchePresse)
fenetre = f; [Link]();
gauchePresse = false; }
}
public void mouseDragged(MouseEvent me){
public void mouseReleased(MouseEvent me){ int x = [Link]()/20;
sourisX = [Link]()/20; int y = [Link]()/20;
sourisY = [Link]()/20; if(((x!=sourisX) || (y!=sourisY)) && gauchePresse){
try{ try{
if(![Link]() && ![Link]() [Link]().getCase(sourisY,
&& !([Link]().getCase(sourisY, sourisX).deselectionner();
sourisX).yaDrapreau())){ }
catch(NullPointerException npe){ }
if([Link]()==me.BUTTON1){ sourisX = x;
gauchePresse = false; sourisY = y;
try{ try{
[Link]().getCase(sourisY, [Link]().getCase(sourisY,
sourisX).selectionner(); sourisX).selectionner();
} }
catch(NullPointerException npe){ } catch(NullPointerException npe){ }
try{ [Link]().repaint();
[Link]().devoilerCase(sourisY,sourisX); }
} }
catch(NullPointerException npe){ } public void mouseMoved(MouseEvent me){ }
[Link]();
if([Link]()){ public void mouseClicked(MouseEvent e){ }
[Link](); }
[Link]();
}
else
if([Link]()){
[Link]();
[Link]();
}
else
[Link]();
}
}
}
catch(NullPointerException npe){ }
[Link]().repaint();
}
public void mousePressed(MouseEvent me){
sourisX = [Link]()/20;
sourisY = [Link]()/20;
if(![Link]() && ![Link]()){
if([Link]()==me.BUTTON1){
gauchePresse = true;
[Link]().getCase(sourisY,sourisX).selectionner();
[Link]();
}
if([Link]()==me.BUTTON3){
[Link]().drapeauAction(sourisY,sourisX);
[Link]();

vendredi juillet 17, 2009 [Link] 20/24


Printed by Colette JOHNEN (profs)
jui 17, 09 16:24 [Link] Page 1/1
import [Link].*;
import [Link].*;
public class Main{
public static void main(String[] args){
DPartie partie = new DPartie(9,9,10);
DFenetre fenetre = new DFenetre(partie);
EcouteurGo e = new EcouteurGo(fenetre,partie);
[Link]().addActionListener(e);
EcouteurFenetre ecouteurFenetre = new EcouteurFenetre(fenetre);
[Link](ecouteurFenetre);
EcouteurMenu ecouteurMenu = new EcouteurMenu(fenetre,partie);
[Link](ecouteurMenu);
}
}

vendredi juillet 17, 2009 [Link] 21/24


Printed by Colette JOHNEN (profs)
jui 17, 09 16:38 [Link] Page 1/2 jui 17, 09 16:38 [Link] Page 2/2
import [Link].*; }
import [Link].*;
import [Link].*;
public Onglet(){
public class Onglet{ maFen = new JFrame("Onglet");
JFrame maFen; /* mise en page */
JTabbedPane jtp; miseEnPage();
/* affichage */
private JPanel panelCarte(){ [Link](300, 200);
JPanel panel = new JPanel(); [Link](true);
[Link](new BorderLayout(10,10)); }
[Link](new JTextArea("Carte"), [Link]); }
return panel;
}

private JPanel panelCasierJud(){


JPanel panel = new JPanel();
[Link](new BorderLayout(10,10));
[Link](new JTextArea("Casier Judiciaire"),
[Link]);
return panel;
}

private JPanel panelDebutant(){


JPanel panel = new JPanel();
[Link](new BorderLayout(10,10));
[Link](new JTextArea("Debutant"), [Link]);
return panel;
}
private JPanel panelConfirme(){
JPanel panel = new JPanel();
[Link](new BorderLayout(10,10));
[Link](new JTextArea("Confirme"), [Link]);
return panel;
}
private JPanel panelExpert(){
JPanel panel = new JPanel();
[Link](new BorderLayout(10,10));
[Link](new JTextArea("Expert"), [Link]);
return panel;
}
private void miseEnPage(){
Container c = [Link]();
[Link](new BorderLayout());
JTabbedPane jtp1 = new JTabbedPane();
JTabbedPane jtp2 = new JTabbedPane();
try{
jtp = new JTabbedPane();
}catch(IllegalArgumentException iae){
[Link]("Erreur construction jtp");
}
[Link](panelCarte(), "Carte");
[Link](panelCasierJud(), "Casier Judiciaire");

[Link](panelDebutant(), "Debutant");
[Link](panelConfirme(), "Confirme");
[Link](panelExpert(), "Expert");
[Link](jtp1, "jtp1");
[Link](jtp2, "jtp2");
[Link](jtp, [Link]);

vendredi juillet 17, 2009 [Link] 22/24


Printed by Colette JOHNEN (profs)
jui 17, 09 16:41 [Link] Page 1/3 jui 17, 09 16:41 [Link] Page 2/3
import [Link].*;
import [Link].*; private JPanel saisie(){
import [Link].*; /* Creation */
jtfLargeur = new JTextField([Link](largeur));
public class Pref implements ActionListener, FocusListener{ jtfHauteur = new JTextField([Link](hauteur));
jtfMines = new JTextField([Link](mines));
JFrame maFen; JPanel panel = new JPanel();
JTextField jtfLargeur, jtfHauteur, jtfMines; /* Ajout */
JLabel jlLargeur, jlHauteur, jlMines; [Link](new GridLayout(3,1, 15,5));
JButton btnOk, btnAnnuler; [Link](jtfLargeur);
[Link](jtfHauteur);
static int NB_MINES_MIN = 10; [Link](jtfMines);
static int NB_MINES_MAX = 665; /* Retour */
static int DIMENSION_MIN = 9; return panel;
static int DIMENSION_MAX = 25; }
int hauteur, largeur, mines; private JPanel boutons(){
/* Creation */
boolean validation = false; btnOk = new JButton("Ok");
btnAnnuler = new JButton("Annuler");
private DFenetre fenetre; /* Ajout */
private DPartie partie; JPanel panel = new JPanel();
[Link](new BorderLayout());
public Pref(int lng, int lrg, int nbMines){ [Link](btnOk, [Link]);
maFen = new JFrame("Preferences"); [Link](btnAnnuler, [Link]);
hauteur = lng; /* Retour */
largeur = lrg; return panel;
mines = nbMines; }
miseEnPage();
ajoutEcouteurs(); private void ajoutEcouteurs(){
[Link](300, 200); [Link](this);
[Link](true); [Link](this);
}
[Link](this);
[Link](this);
public Pref(DFenetre fen, DPartie p){ [Link](this);
maFen = new JFrame("Preferences"); }
fenetre = fen;
partie = p; private void miseEnPage(){
[Link]("Choix"); Container c = [Link]();

hauteur = [Link](); // Ajout des lables, zones de saisie et des boutons


largeur = [Link](); Container container = new Container();
mines = [Link](); [Link](new BorderLayout(20, 0));
[Link](label(), [Link]);
miseEnPage(); [Link](saisie(), [Link]);
ajoutEcouteurs(); [Link](boutons(), [Link]);
[Link](300, 200); [Link](new BorderLayout());
[Link](true); [Link](container, [Link]);
} }

private JPanel label(){


/* Creation */ public void actionPerformed(ActionEvent e){
jlLargeur = new JLabel("Largeur");
jlHauteur = new JLabel("Hauteur"); if([Link]().equals(btnOk)){
jlMines = new JLabel("Mines"); validation = true;
JPanel panel = new JPanel(); [Link](false);
/* Ajout */
[Link](new GridLayout(3,1, 15,5)); hauteur = [Link]([Link]());
[Link](jlLargeur); largeur = [Link]([Link]());
[Link](jlHauteur); mines = [Link]([Link]());
[Link](jlMines); if (mines>hauteur*largeur)
/* Retour */ mines = hauteur*largeur−5;
return panel;
} [Link]();

vendredi juillet 17, 2009 [Link] 23/24


Printed by Colette JOHNEN (profs)
jui 17, 09 16:41 [Link] Page 3/3
[Link]();

[Link](hauteur,largeur,mines);
[Link](partie);
}
else{
validation = false;
}
}
public void focusGained(FocusEvent e){ }
public void focusLost(FocusEvent e){
JTextField jtf = (JTextField)[Link]();
int val = [Link]([Link]());
if([Link](jtfMines)){
if(val<NB_MINES_MIN)
[Link]([Link](NB_MINES_MIN));
if(val>NB_MINES_MAX)
[Link]([Link](NB_MINES_MAX));
}
else{
if(val<DIMENSION_MIN)
[Link]([Link](DIMENSION_MIN));
if(val>DIMENSION_MAX)
[Link]([Link](DIMENSION_MAX));
}
}
public boolean getValidation(){return validation;}
public int getLargeur(){return largeur; }

public int getHauteur(){return hauteur;}


public int getMines(){return mines;}
public static void main(String[] args){
Pref p = new Pref(10, 10 ,10);
[Link]("Fin");
[Link]([Link]()+" "+[Link]()+" "
+[Link]());
}
}

vendredi juillet 17, 2009 [Link] 24/24

Vous aimerez peut-être aussi