This commit is contained in:
Monin 2022-05-20 13:39:53 +02:00
parent 9fa232d759
commit eae357cb0c
24 changed files with 143 additions and 131 deletions

View File

@ -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

Binary file not shown.

View File

@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 93 KiB

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 98 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 95 KiB

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

View File

@ -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();
}
}
}

Binary file not shown.

View File

@ -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é

Binary file not shown.

View File

@ -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é

Binary file not shown.

View File

@ -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);
}
}
}
}

Binary file not shown.

View File

@ -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){

Binary file not shown.

View File

@ -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);
}
}

Binary file not shown.

Binary file not shown.