diff --git a/CASE/Makefile b/CASE/Makefile deleted file mode 100644 index 4b579a4..0000000 --- a/CASE/Makefile +++ /dev/null @@ -1,52 +0,0 @@ -# PROJET DÉMINEUR MAKEFILE: -# -# Chapitre 1: But final; - -but: main_ex.class - -# Chapitre 2 : Variable -OFILES= Case.class\ - plateau.class\ - observateurCase.class\ - paintMenuJeu.class\ - observateurSAV.class\ - observateurFenetre.class - -CFLAGS= -implicit:none - -# Chapitre 3 : Dependances (règle implicite): -Case.class: Case.java - javac $(CFLAGS) Case.java - -plateau.class : plateau.java - javac $(CFLAGS) plateau.java - -observateurCase.class : observateurCase.java - javac $(CFLAGS) observateurCase.java - -paintMenuJeu.class: paintMenuJeu.java - javac $(CFLAGS) paintMenuJeu.java - -observateurSAV.class: observateurSAV.java - javac $(CFLAGS) observateurSAV.java - -observateurFenetre.class: observateurFenetre.java - javac $(CFLAGS) observateurFenetre.java - -# Chapitre 4 : Dependances - - main_ex.class: $(OFILES) main_ex.java - javac $(CFLAGS) main_ex.java - -#Chapitre 5: nettoyage des fichiers generes - -clean : - -rm -f $(OFILES) - -run : - java main_ex -#chapitre 6 : buts factices - -.PHONY : but clean - -.PHONY : but run diff --git a/Case.class b/Case.class index 1e7e19d..e4e47a6 100644 Binary files a/Case.class and b/Case.class differ diff --git a/Case.java b/Case.java index 751e649..abe31c5 100644 --- a/Case.java +++ b/Case.java @@ -117,7 +117,7 @@ public class Case extends JComponent{ secondPinceau.drawImage(quatre, this.getWidth()/20*5, this.getHeight()/20*5, this.getWidth()/20*10, this.getHeight()/20*10 ,this); } if(this.voisin==5){ - Image cinq=Toolkit.getDefaultToolkit().getImage("./IMAGE/cinq.jpg"); + Image cinq=Toolkit.getDefaultToolkit().getImage("./IMAGE/cinq.png"); secondPinceau.drawImage(cinq, this.getWidth()/20*5, this.getHeight()/20*5, this.getWidth()/20*10, this.getHeight()/20*10 ,this); } if(this.voisin==6){ diff --git a/IMAGE/cinq.png b/IMAGE/cinq.png new file mode 100644 index 0000000..7b3d7b1 Binary files /dev/null and b/IMAGE/cinq.png differ diff --git a/IMAGE/lose.jpg b/IMAGE/lose.jpg deleted file mode 100644 index 8168361..0000000 Binary files a/IMAGE/lose.jpg and /dev/null differ diff --git a/IMAGE/lose.png b/IMAGE/lose.png index 73189dc..846538e 100644 Binary files a/IMAGE/lose.png and b/IMAGE/lose.png differ diff --git a/IMAGE/nouveau.jpg b/IMAGE/nouveau.jpg index e81d9b2..dfad617 100644 Binary files a/IMAGE/nouveau.jpg and b/IMAGE/nouveau.jpg differ diff --git a/IMAGE/quitter.jpg b/IMAGE/quitter.jpg index 61e8d18..c4f76dd 100644 Binary files a/IMAGE/quitter.jpg and b/IMAGE/quitter.jpg differ diff --git a/IMAGE/reprendre.jpg b/IMAGE/reprendre.jpg deleted file mode 100644 index a47a87c..0000000 Binary files a/IMAGE/reprendre.jpg and /dev/null differ diff --git a/IMAGE/reprendre.png b/IMAGE/reprendre.png index c883774..138f2d9 100644 Binary files a/IMAGE/reprendre.png and b/IMAGE/reprendre.png differ diff --git a/observateurButtonEtText.class b/observateurButtonEtText.class index 8b590f3..b900e0a 100644 Binary files a/observateurButtonEtText.class and b/observateurButtonEtText.class differ diff --git a/observateurButtonEtText.java b/observateurButtonEtText.java index 2880442..5374d3d 100644 --- a/observateurButtonEtText.java +++ b/observateurButtonEtText.java @@ -3,7 +3,6 @@ import java.awt.event.*; import javax.swing.*; import java.awt.*; -import java.io.*; public class observateurButtonEtText implements ActionListener { private plateau plat; @@ -76,19 +75,5 @@ public class observateurButtonEtText implements ActionListener { this.plat.setBombe(-1); } } - if(this.fonction==3){ - this.plat.menuChoixLCB(); - } - if(this.fonction==4){ - try{ - FileInputStream fichier = new FileInputStream("./sauvegarde.data"); - this.plat.reprendrePartie(fichier); - }catch(FileNotFoundException e1){ - JOptionPane.showMessageDialog(this.fenetre, "sauvegarde introuvable"); - } - } - if(this.fonction==5){ - this.plat.getFenetre().dispose(); - } } } \ No newline at end of file diff --git a/observateurCase.class b/observateurCase.class index e235e14..d58f374 100644 Binary files a/observateurCase.class and b/observateurCase.class differ diff --git a/observateurCase.java b/observateurCase.java index c844a60..489429e 100644 --- a/observateurCase.java +++ b/observateurCase.java @@ -4,16 +4,21 @@ import java.awt.*; import java.awt.event.*; import javax.swing.*; +import java.time.*; public class observateurCase implements MouseListener{ private int ligne, collonne; private Case[][] tableau; private plateau plat; - public observateurCase(int ligne0, int collonne0, Case[][] tableau0, plateau plat0){ + private int minute; + private LocalTime temps; + public observateurCase(int ligne0, int collonne0, Case[][] tableau0, plateau plat0, int minute0, LocalTime temps0){ this.ligne=ligne0; this.collonne=collonne0; this.tableau=tableau0; this.plat=plat0; + this.minute=minute0; + this.temps=temps0; } @Override public void mouseClicked(MouseEvent evenement){ @@ -53,6 +58,13 @@ public class observateurCase implements MouseListener{ } //si gagner if(plat.etatDeVictoire()==1){ + if(LocalTime.now(ZoneId.systemDefault()).getHour()-this.temps.getHour()>0){ + this.minute+=LocalTime.now(ZoneId.systemDefault()).getHour()-this.temps.getHour()*60; + } + float resultatTemps=LocalTime.now(ZoneId.systemDefault()).getMinute()+this.minute-this.temps.getMinute()+1; + float frequenceBombe=(this.plat.getBombe()*this.plat.getLigne()*this.plat.getCollonne())/(this.plat.getLigne()*this.plat.getCollonne())*100; + float scorefinal=frequenceBombe/resultatTemps; + JOptionPane.showMessageDialog(this.plat.getFenetre(), "Vous avez Gagnez! \n votre score est de "+scorefinal); } } @Override // un bouton cliqué diff --git a/observateurChoix.class b/observateurChoix.class index 6cdf838..fb41ed4 100644 Binary files a/observateurChoix.class and b/observateurChoix.class differ diff --git a/observateurChoix.java b/observateurChoix.java index 1310757..e9d0449 100644 --- a/observateurChoix.java +++ b/observateurChoix.java @@ -4,6 +4,7 @@ import java.awt.*; import java.awt.event.*; import javax.swing.*; +import java.io.*; public class observateurChoix implements MouseListener{ private paintChoix pinceau, premier; @@ -19,15 +20,32 @@ public class observateurChoix implements MouseListener{ } @Override public void mouseClicked(MouseEvent evenement){ - this.premier.setClique(false); - this.pinceau.setClique(true); - if(this.pinceau.getFonction()==1){ - this.texte.setText("Ligne: "+String.valueOf(this.pinceau.getN())); - this.plat.setLigne(this.pinceau.getN()); - } - if(this.pinceau.getFonction()==2){ - this.texte.setText("Collonne: "+String.valueOf(this.pinceau.getN())); - this.plat.setCollonne(this.pinceau.getN()); + if(8>this.pinceau.getFonction() || this.pinceau.getFonction()>10){ + this.premier.setClique(false); + this.pinceau.setClique(true); + if(this.pinceau.getFonction()==1){ + this.texte.setText("Ligne: "+String.valueOf(this.pinceau.getN())); + this.plat.setLigne(this.pinceau.getN()); + } + if(this.pinceau.getFonction()==2){ + this.texte.setText("Collonne: "+String.valueOf(this.pinceau.getN())); + this.plat.setCollonne(this.pinceau.getN()); + } + }else{ + if(this.pinceau.getFonction()==9){ + this.plat.menuChoixLCB(); + } + if(this.pinceau.getFonction()==10){ + try{ + FileInputStream fichier = new FileInputStream("./sauvegarde.data"); + this.plat.reprendrePartie(fichier); + }catch(FileNotFoundException e1){ + JOptionPane.showMessageDialog(this.fenetre, "sauvegarde introuvable"); + } + } + if(this.pinceau.getFonction()==8){ + this.plat.getFenetre().dispose(); + } } } @Override // un bouton cliqué diff --git a/paintChoix.class b/paintChoix.class index 29d0a13..de93206 100644 Binary files a/paintChoix.class and b/paintChoix.class differ diff --git a/paintChoix.java b/paintChoix.java index bbda9d6..dd18f7e 100644 --- a/paintChoix.java +++ b/paintChoix.java @@ -64,5 +64,35 @@ public class paintChoix extends JComponent{ } secondPinceau.setColor(new Color(0,0,0)); secondPinceau.drawRect(0, 0, this.getWidth(), this.getHeight()); + if(this.fonction==8){ + secondPinceau.setColor(new Color(255, 255, 255)); + secondPinceau.fillRect(0, 0, this.getWidth(), this.getHeight()); + Image nouveau=Toolkit.getDefaultToolkit().getImage("./IMAGE/nouveau.jpg"); + if(this.selectionner==true){ + secondPinceau.drawImage(nouveau, 0, 0, this.getWidth(), this.getHeight(), this); + }else{ + secondPinceau.drawImage(nouveau, this.getWidth()/20, this.getHeight()/20, this.getWidth()/20*18, this.getHeight()/20*18, this); + } + } + if(this.fonction==9){ + secondPinceau.setColor(new Color(255, 255, 255)); + secondPinceau.fillRect(0, 0, this.getWidth(), this.getHeight()); + Image quitter=Toolkit.getDefaultToolkit().getImage("./IMAGE/quitter.jpg"); + if(this.selectionner==true){ + secondPinceau.drawImage(quitter, 0, 0, this.getWidth(), this.getHeight(), this); + }else{ + secondPinceau.drawImage(quitter, this.getWidth()/20, this.getHeight()/20, this.getWidth()/20*18, this.getHeight()/20*18, this); + } + } + if(this.fonction==10){ + secondPinceau.setColor(new Color(255, 255, 255)); + secondPinceau.fillRect(0, 0, this.getWidth(), this.getHeight()); + Image reprendre=Toolkit.getDefaultToolkit().getImage("./IMAGE/reprendre.png"); + if(this.selectionner==true){ + secondPinceau.drawImage(reprendre, 0, 0, this.getWidth(), this.getHeight(), this); + }else{ + secondPinceau.drawImage(reprendre, this.getWidth()/20, this.getHeight()/20, this.getWidth()/20*18, this.getHeight()/20*18, this); + } + } } } \ No newline at end of file diff --git a/paintMenuJeu.class b/paintMenuJeu.class index 9060df2..c3498ad 100644 Binary files a/paintMenuJeu.class and b/paintMenuJeu.class differ diff --git a/paintMenuJeu.java b/paintMenuJeu.java index f831302..5cf9f37 100644 --- a/paintMenuJeu.java +++ b/paintMenuJeu.java @@ -30,6 +30,9 @@ public class paintMenuJeu extends JComponent{ public int getScoreMax(){ return this.scoreMax; } + public int getFonction(){ + return this.choix; + } @Override protected void paintComponent(Graphics pinceau) { // obligatoire : on crée un nouveau pinceau pour pouvoir le modifier plus tard @@ -89,6 +92,7 @@ public class paintMenuJeu extends JComponent{ Image replay=Toolkit.getDefaultToolkit().getImage("./IMAGE/replay.png"); secondPinceau.drawImage(replay, this.getWidth()/6, this.getHeight()/6, this.getWidth()/6*4, this.getHeight()/6*4 ,this); } + } private void paintNombre(Graphics secondPinceau, int nombre){ if(this.score>=0){ diff --git a/plateau.class b/plateau.class index cec6f72..77968c6 100644 Binary files a/plateau.class and b/plateau.class differ diff --git a/plateau.java b/plateau.java index 1e6f2c0..df68bad 100644 --- a/plateau.java +++ b/plateau.java @@ -1,21 +1,22 @@ //Tom Monin et Clément Martins //Class pour des fonction static de jeu -//V2 - +//V4 import java.io.*; import java.util.*; import java.awt.event.*; import java.io.ObjectOutputStream; import java.awt.*; import javax.swing.*; +import java.time.*; public class plateau{ private paintMenuJeu logo; private JFrame fenetre; private observateurSAV observateur; - private int ligne, collonne, bombe; + private int ligne, collonne, bombe, minute; private paintMenuJeu[] tabScore= new paintMenuJeu[3]; private Case[][] tableau; + private LocalTime temps; public plateau(JFrame fenetre0){ this.fenetre=fenetre0; this.ligne=-1; @@ -206,6 +207,7 @@ public class plateau{ } //nous affichons le logo rejouer this.paintLogo(); + } //-------------------------------------Fonction pour modifier le Score des bombes restantes-------------------------------------- public void setScore(int n){ @@ -238,6 +240,7 @@ public class plateau{ this.setAllBombe(); //maitenant que les bombe sont mise nous pouvons modifier le nombre de voisin des cases this.setAllVoisin(); + this.minute=0; //on lance la partie avec le tableau de Case initialiser et le nombre de bombe en score(aucune Case n'est encore suspecter) this.launchGame(this.bombe); } @@ -252,43 +255,59 @@ Mettre les bloc try catch au bon endroit public void save(){ - //les fonctions vont lever des Exeption nous devons donc mettre un try Catch - try{ - //nous initialison le outputStream en créant le fichier "sauvegarde.data" - FileOutputStream sav = new FileOutputStream(new File("sauvegarde.data")); - try{ - //nous allons sérialiser le tableau de Case - ObjectOutputStream oos = new ObjectOutputStream(sav); - //nous écrivons donc tout d'abord la taille de celui-ci - oos.writeInt(this.ligne); - oos.writeInt(this.collonne); - //puis nous parcourons le tableau en sérialisant toute les Case - for(int i=0; i0){ + oos.writeInt(LocalTime.now(ZoneId.systemDefault()).getHour()-this.temps.getHour()*60+this.temps.getMinute()); + }else{ + oos.writeInt(this.temps.getMinute()); + } + + //nous fermons la sauvegardes + try{ + oos.close(); + }catch(IOException e){ + JOptionPane.showMessageDialog(this.fenetre, "erreur lors de l'ecriture final de la sauvegarde"); + this.fenetre.dispose(); + } + }catch(IOException e){ + JOptionPane.showMessageDialog(this.fenetre, "erreur lors de l'ecriture de la sauvegarde"); + this.fenetre.dispose(); + } + }catch(FileNotFoundException e1){ + JOptionPane.showMessageDialog(this.fenetre, "erreur impossible d'accèder au fichier de sauvegarde"); + this.fenetre.dispose(); + } + //nous fermons la fenetre et donc arrêtons l'applications et indiquons au joueur que tout c'est bien dérouler + JOptionPane.showMessageDialog(this.fenetre, "Partie sauvegarder"); this.fenetre.dispose(); } - //nous fermons la fenetre et donc arrêtons l'applications - this.fenetre.dispose(); + + } public void reprendrePartie(FileInputStream file){ @@ -314,6 +333,7 @@ Mettre les bloc try catch au bon endroit this.bombe=ois.readInt(); //puis le score score=ois.readInt(); + this.minute=ois.readInt(); try{ ois.close(); //nous pouvons maintenant lancer la partie sauvegarder @@ -337,6 +357,7 @@ Mettre les bloc try catch au bon endroit //----------------------------------------> Fonction pour Lancer une partie <-------------------------------------- private void launchGame(int score){ + this.temps=LocalTime.now(ZoneId.systemDefault()); //on ferme l'ancienne fenetre this.fenetre.dispose(); //on en crée une nouvelles @@ -388,7 +409,7 @@ Mettre les bloc try catch au bon endroit for(int i=0; i