MAJ
@ -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
|
BIN
Case.class
@ -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){
|
||||
|
BIN
IMAGE/cinq.png
Normal file
After Width: | Height: | Size: 22 KiB |
BIN
IMAGE/lose.jpg
Before Width: | Height: | Size: 112 KiB |
BIN
IMAGE/lose.png
Before Width: | Height: | Size: 93 KiB After Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 98 KiB After Width: | Height: | Size: 40 KiB |
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 40 KiB |
Before Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 95 KiB After Width: | Height: | Size: 83 KiB |
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
@ -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é
|
||||
|
@ -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é
|
||||
|
BIN
paintChoix.class
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -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){
|
||||
|
BIN
plateau.class
121
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; i<this.ligne; i++){
|
||||
for(int t=0; t<this.collonne; t++){
|
||||
oos.writeObject(this.tableau[i][t]);
|
||||
}
|
||||
}
|
||||
//nous écrivons ensuite le score Maximum(nombre de bombe) pour éviter de regarder toutes les Case plus tard
|
||||
oos.writeInt(this.tabScore[0].getScoreMax());
|
||||
//puis le score a l'instant T
|
||||
oos.writeInt(this.tabScore[0].getScore());
|
||||
//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");
|
||||
int resultat=JOptionPane.showConfirmDialog(this.fenetre, "Voulez vous sauvegarder?");
|
||||
if(resultat!=JOptionPane.YES_OPTION){
|
||||
if(resultat==JOptionPane.NO_OPTION){
|
||||
this.fenetre.dispose();
|
||||
}
|
||||
}catch(FileNotFoundException e1){
|
||||
JOptionPane.showMessageDialog(this.fenetre, "erreur impossible d'accèder au fichier de sauvegarde");
|
||||
}else{
|
||||
//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; i<this.ligne; i++){
|
||||
for(int t=0; t<this.collonne; t++){
|
||||
oos.writeObject(this.tableau[i][t]);
|
||||
}
|
||||
}
|
||||
//nous écrivons ensuite le score Maximum(nombre de bombe) pour éviter de regarder toutes les Case plus tard
|
||||
oos.writeInt(this.tabScore[0].getScoreMax());
|
||||
//puis le score a l'instant T
|
||||
oos.writeInt(this.tabScore[0].getScore());
|
||||
if(LocalTime.now(ZoneId.systemDefault()).getHour()-this.temps.getHour()>0){
|
||||
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<ligne; i++){
|
||||
for(int t=0;t<collonne; t++){
|
||||
panJeu.add(this.tableau[i][t]);
|
||||
this.tableau[i][t].addMouseListener(new observateurCase(i, t, this.tableau, this));
|
||||
this.tableau[i][t].addMouseListener(new observateurCase(i, t, this.tableau, this, this.minute, this.temps));
|
||||
}
|
||||
}
|
||||
this.fenetre.add(panMenu, BorderLayout.NORTH);
|
||||
@ -488,22 +509,16 @@ Mettre les bloc try catch au bon endroit
|
||||
this.fenetre.setLocation(0,0);
|
||||
this.fenetre.setSize(1600, 1000);
|
||||
this.fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
this.fenetre.setLayout(new FlowLayout());
|
||||
JPanel pan1 = new JPanel();
|
||||
JPanel pan2 = new JPanel();
|
||||
JPanel pan3 = new JPanel();
|
||||
JButton nouveau = new JButton("nouvelle partie");
|
||||
JButton reprende = new JButton("reprendrePartie");
|
||||
JButton quitter = new JButton("quitter");
|
||||
nouveau.addActionListener(new observateurButtonEtText(this, 3, null, this.fenetre));
|
||||
reprende.addActionListener(new observateurButtonEtText(this, 4, null, this.fenetre));
|
||||
quitter.addActionListener(new observateurButtonEtText(this, 5, null, this.fenetre));
|
||||
pan1.add(nouveau);
|
||||
pan2.add(reprende);
|
||||
pan3.add(quitter);
|
||||
this.fenetre.add(pan1);
|
||||
this.fenetre.add(pan2);
|
||||
this.fenetre.add(pan3);
|
||||
this.fenetre.setLayout(new GridLayout(1,3));
|
||||
paintChoix men1=new paintChoix(0, 8);
|
||||
paintChoix men2=new paintChoix(0, 9);
|
||||
paintChoix men3=new paintChoix(0, 10);
|
||||
this.fenetre.add(men3);
|
||||
this.fenetre.add(men2);
|
||||
this.fenetre.add(men1);
|
||||
men1.addMouseListener(new observateurChoix(men1, null, null, this));
|
||||
men3.addMouseListener(new observateurChoix(men3, null, null, this));
|
||||
men2.addMouseListener(new observateurChoix(men2, null, null, this));
|
||||
this.fenetre.setVisible(true);
|
||||
}
|
||||
}
|