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