ok
BIN
IMAGE/bombe.png
Before Width: | Height: | Size: 5.5 KiB |
BIN
IMAGE/cinq.jpg
Before Width: | Height: | Size: 17 KiB |
BIN
IMAGE/cinq.png
Before Width: | Height: | Size: 22 KiB |
BIN
IMAGE/cinqD.png
Before Width: | Height: | Size: 20 KiB |
BIN
IMAGE/deux.jpg
Before Width: | Height: | Size: 18 KiB |
BIN
IMAGE/deuxD.png
Before Width: | Height: | Size: 18 KiB |
BIN
IMAGE/err.png
Before Width: | Height: | Size: 17 KiB |
BIN
IMAGE/etoile.png
Before Width: | Height: | Size: 5.7 KiB |
BIN
IMAGE/huit.jpg
Before Width: | Height: | Size: 20 KiB |
BIN
IMAGE/huitD.png
Before Width: | Height: | Size: 17 KiB |
BIN
IMAGE/lose.png
Before Width: | Height: | Size: 66 KiB |
BIN
IMAGE/neufD.png
Before Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 40 KiB |
Before Width: | Height: | Size: 35 KiB |
BIN
IMAGE/quatre.jpg
Before Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 40 KiB |
BIN
IMAGE/replay.png
Before Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 83 KiB |
BIN
IMAGE/sav.png
Before Width: | Height: | Size: 14 KiB |
BIN
IMAGE/sept.jpg
Before Width: | Height: | Size: 15 KiB |
BIN
IMAGE/septD.png
Before Width: | Height: | Size: 13 KiB |
BIN
IMAGE/six.jpg
Before Width: | Height: | Size: 19 KiB |
BIN
IMAGE/sixD.png
Before Width: | Height: | Size: 18 KiB |
BIN
IMAGE/trois.jpg
Before Width: | Height: | Size: 18 KiB |
BIN
IMAGE/troisD.png
Before Width: | Height: | Size: 18 KiB |
BIN
IMAGE/un.jpg
Before Width: | Height: | Size: 15 KiB |
BIN
IMAGE/unD.png
Before Width: | Height: | Size: 9.9 KiB |
BIN
IMAGE/win.png
Before Width: | Height: | Size: 75 KiB |
BIN
IMAGE/zeroD.png
Before Width: | Height: | Size: 20 KiB |
68
Makefile
@ -1,68 +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\
|
|
||||||
paintChoix.class\
|
|
||||||
observateurChoix.class\
|
|
||||||
plusoumoins.class\
|
|
||||||
observateurButtonEtText.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
|
|
||||||
|
|
||||||
paintChoix.class: paintChoix.java
|
|
||||||
javac $(CFLAGS) paintChoix.java
|
|
||||||
|
|
||||||
observateurChoix.class: observateurChoix.java
|
|
||||||
javac $(CFLAGS) observateurChoix.java
|
|
||||||
|
|
||||||
plusoumoins.class: plusoumoins.java
|
|
||||||
javac $(CFLAGS) plusoumoins.java
|
|
||||||
|
|
||||||
observateurButtonEtText.class: observateurButtonEtText.java
|
|
||||||
javac $(CFLAGS) observateurButtonEtText.java
|
|
||||||
|
|
||||||
#Chapitre 5: nettoyage des fichiers generes
|
|
||||||
|
|
||||||
clean :
|
|
||||||
-rm -f $(OFILES) main_ex.class
|
|
||||||
|
|
||||||
run :
|
|
||||||
java main_ex
|
|
||||||
#chapitre 6 : buts factices
|
|
||||||
|
|
||||||
.PHONY : but clean
|
|
||||||
|
|
||||||
.PHONY : but run
|
|
@ -1,79 +0,0 @@
|
|||||||
//Clément Martins et Tom Monin
|
|
||||||
//Class utiliser pour observateur avec plusieur action ossible (en fonction de sa fonction défini a la création)
|
|
||||||
import java.awt.event.*;
|
|
||||||
import javax.swing.*;
|
|
||||||
import java.awt.*;
|
|
||||||
|
|
||||||
public class observateurButtonEtText implements ActionListener {
|
|
||||||
private plateau plat;
|
|
||||||
private int fonction;
|
|
||||||
private JTextField zone;
|
|
||||||
private JFrame fenetre;
|
|
||||||
public observateurButtonEtText(plateau plat0, int fonction0, JTextField zone0, JFrame fenetre0){
|
|
||||||
this.plat=plat0;
|
|
||||||
this.fonction=fonction0;
|
|
||||||
this.zone=zone0;
|
|
||||||
this.fenetre=fenetre0;
|
|
||||||
}
|
|
||||||
@Override
|
|
||||||
public void actionPerformed(ActionEvent evenement){
|
|
||||||
if(this.fonction==1){
|
|
||||||
int nombre=0;
|
|
||||||
try{
|
|
||||||
this.zone.setBackground(new Color(255,255,255));
|
|
||||||
nombre=Integer.parseInt(evenement.getActionCommand());
|
|
||||||
if(nombre<0){
|
|
||||||
nombre=0;
|
|
||||||
}
|
|
||||||
if(this.plat.getLigne()!=-1 && this.plat.getCollonne()!=-1){
|
|
||||||
if(nombre>this.plat.getLigne()*this.plat.getCollonne()){
|
|
||||||
nombre=this.plat.getLigne()*this.plat.getCollonne();
|
|
||||||
}
|
|
||||||
this.zone.setText(String.valueOf(nombre));
|
|
||||||
}else{
|
|
||||||
this.zone.setBackground(Color.red);
|
|
||||||
this.zone.setText("Selectionner Ligne et Collonne Avant");
|
|
||||||
this.plat.setBombe(-1);
|
|
||||||
}
|
|
||||||
this.plat.setBombe(nombre);
|
|
||||||
}catch(NumberFormatException e1){
|
|
||||||
this.zone.setBackground(Color.red);
|
|
||||||
this.zone.setText("rentrer un nombre valide");
|
|
||||||
this.plat.setBombe(-1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(this.fonction==2){
|
|
||||||
int nombre=0;
|
|
||||||
try{
|
|
||||||
this.zone.setBackground(new Color(255,255,255));
|
|
||||||
nombre=Integer.parseInt(this.zone.getText());
|
|
||||||
if(nombre<0){
|
|
||||||
nombre=0;
|
|
||||||
}
|
|
||||||
if(this.plat.getLigne()!=-1 && this.plat.getCollonne()!=-1){
|
|
||||||
if(nombre>this.plat.getLigne()*this.plat.getCollonne()){
|
|
||||||
nombre=this.plat.getLigne()*this.plat.getCollonne();
|
|
||||||
}
|
|
||||||
this.plat.setBombe(nombre);
|
|
||||||
if(this.plat.getLigne()!=-1 && this.plat.getCollonne()!=-1 && this.plat.getBombe()!=-1){
|
|
||||||
this.plat.newGame();
|
|
||||||
}else{
|
|
||||||
if(this.plat.getBombe()==-1){
|
|
||||||
this.zone.setBackground(Color.red);
|
|
||||||
this.zone.setText("Rentrer un nombre de Bobme");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
this.zone.setBackground(Color.red);
|
|
||||||
this.zone.setText("Selectionner Ligne et Collonne Avant");
|
|
||||||
this.plat.setBombe(-1);
|
|
||||||
}
|
|
||||||
this.plat.setBombe(nombre);
|
|
||||||
}catch(NumberFormatException e1){
|
|
||||||
this.zone.setBackground(Color.red);
|
|
||||||
this.zone.setText("rentrer un nombre valide");
|
|
||||||
this.plat.setBombe(-1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,165 +0,0 @@
|
|||||||
//Tom Monin et Clément Martins
|
|
||||||
// observateurChoix V4
|
|
||||||
//Class de l'observateur des Cases
|
|
||||||
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;
|
|
||||||
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){
|
|
||||||
//si on clique gauche
|
|
||||||
if(evenement.getButton() == MouseEvent.BUTTON1 && plat.etatDeVictoire()==0){
|
|
||||||
//si la case n'est pas suspecter(d'etre une bombe ou je sais pas) et que elle n'est pas visible
|
|
||||||
if(this.tableau[this.ligne][this.collonne].getSuspition()==0 && this.tableau[this.ligne][this.collonne].getVisibiliter()==false){
|
|
||||||
//nous la rendons visible et la reafichons
|
|
||||||
this.tableau[this.ligne][this.collonne].setVisibiliter(true);
|
|
||||||
this.tableau[this.ligne][this.collonne].repaint();
|
|
||||||
//si elle n'a pas de voisin nous pouvons afficher les case aux alentours qui serons évidentes a cliquer
|
|
||||||
if(this.tableau[this.ligne][this.collonne].getVoisin()==0 && this.tableau[this.ligne][this.collonne].getBombe()==false){
|
|
||||||
this.cliqueEvident(this.ligne, this.collonne);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//si clique droit
|
|
||||||
if(evenement.getButton() == MouseEvent.BUTTON3 && plat.etatDeVictoire()==0){
|
|
||||||
//nous modifions la suspitions de la case et la reafichons si la case n'est pas visible
|
|
||||||
if(this.tableau[this.ligne][this.collonne].getVisibiliter()==false){
|
|
||||||
this.tableau[this.ligne][this.collonne].suspition();
|
|
||||||
this.tableau[this.ligne][this.collonne].repaint();
|
|
||||||
}
|
|
||||||
//nous testons si le joeur a gagner/perdu
|
|
||||||
if(this.tableau[this.ligne][this.collonne].getSuspition()==1){
|
|
||||||
plat.setScore(-1);
|
|
||||||
}if(this.tableau[this.ligne][this.collonne].getSuspition()==2){
|
|
||||||
plat.setScore(+1);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
//nous testons si le joueur a gagner/perdu
|
|
||||||
//si perdu
|
|
||||||
if(plat.etatDeVictoire()==-1){
|
|
||||||
//on precise quelle case a exploser
|
|
||||||
this.tableau[this.ligne][this.collonne].setSuspition(4);
|
|
||||||
}
|
|
||||||
//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é
|
|
||||||
public void mouseEntered(MouseEvent evenement){
|
|
||||||
|
|
||||||
}
|
|
||||||
@Override // debut du survol
|
|
||||||
public void mouseExited(MouseEvent evenement){
|
|
||||||
}
|
|
||||||
@Override // fin du survol
|
|
||||||
public void mousePressed(MouseEvent evenement){
|
|
||||||
|
|
||||||
}
|
|
||||||
@Override // un bouton appuyé
|
|
||||||
public void mouseReleased(MouseEvent evenement){
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------fonction permettant d'afficher toutes les case n'ayant pas de voisin adjacente utilisant plusieur fonction récursive-----------------------------
|
|
||||||
|
|
||||||
|
|
||||||
private void cliqueEvident(int ligneDelta, int collonneDelta){
|
|
||||||
//nous affichons la case si elle n'est pas suspecter (pour laisser l'erreur au joueur)
|
|
||||||
if(this.tableau[ligneDelta][collonneDelta].getSuspition()==0){
|
|
||||||
this.tableau[ligneDelta][collonneDelta].setVisibiliter(true);
|
|
||||||
this.tableau[ligneDelta][collonneDelta].repaint();
|
|
||||||
}
|
|
||||||
//nous affichons les cases possédants des voisins
|
|
||||||
this.affichageVoisinEvident(ligneDelta, collonneDelta);
|
|
||||||
//si la case du haut existe et n'est pas visible et n'a pas de voisin et n'est pas une bombe
|
|
||||||
if(ligneDelta>0 && this.tableau[ligneDelta-1][collonneDelta].getVisibiliter()==false && this.tableau[ligneDelta-1][collonneDelta].getVoisin()==0 && this.tableau[ligneDelta-1][collonneDelta].getBombe()==false){
|
|
||||||
//on utilise la fonction recurisve sur la case du haut
|
|
||||||
this.cliqueEvident(ligneDelta-1, collonneDelta);
|
|
||||||
}
|
|
||||||
//la même chose pour les 8 cases possible donc recursivite possible (voir principe en haut)
|
|
||||||
if(collonneDelta>0 && ligneDelta>0 && this.tableau[ligneDelta-1][collonneDelta-1].getVisibiliter()==false && this.tableau[ligneDelta-1][collonneDelta-1].getVoisin()==0 && this.tableau[ligneDelta-1][collonneDelta-1].getBombe()==false){
|
|
||||||
this.cliqueEvident(ligneDelta-1, collonneDelta-1);
|
|
||||||
}
|
|
||||||
if(ligneDelta<tableau.length-1 && this.tableau[ligneDelta+1][collonneDelta].getVisibiliter()==false && this.tableau[ligneDelta+1][collonneDelta].getVoisin()==0 && this.tableau[ligneDelta+1][collonneDelta].getBombe()==false){
|
|
||||||
this.cliqueEvident(ligneDelta+1, collonneDelta);
|
|
||||||
}
|
|
||||||
if(collonneDelta<tableau[ligneDelta].length-1 && this.tableau[ligneDelta][collonneDelta+1].getVisibiliter()==false && this.tableau[ligneDelta][collonneDelta+1].getVoisin()==0 && this.tableau[ligneDelta][collonneDelta+1].getBombe()==false){
|
|
||||||
this.cliqueEvident(ligneDelta, collonneDelta+1);
|
|
||||||
}
|
|
||||||
if(collonneDelta>0 && this.tableau[ligneDelta][collonneDelta-1].getVisibiliter()==false && this.tableau[ligneDelta][collonneDelta-1].getVoisin()==0 && this.tableau[ligneDelta][collonneDelta-1].getBombe()==false){
|
|
||||||
this.cliqueEvident(ligneDelta, collonneDelta-1);
|
|
||||||
}
|
|
||||||
if(collonneDelta>0 && ligneDelta<this.tableau.length-1 && this.tableau[ligneDelta+1][collonneDelta-1].getVisibiliter()==false && this.tableau[ligneDelta+1][collonneDelta-1].getVoisin()==0 && this.tableau[ligneDelta+1][collonneDelta-1].getBombe()==false){
|
|
||||||
this.cliqueEvident(ligneDelta+1, collonneDelta-1);
|
|
||||||
}
|
|
||||||
if(collonneDelta<this.tableau[ligneDelta].length-1 && ligneDelta>0 && this.tableau[ligneDelta-1][collonneDelta+1].getVisibiliter()==false && this.tableau[ligneDelta-1][collonneDelta+1].getVoisin()==0 && this.tableau[ligneDelta-1][collonneDelta+1].getBombe()==false){
|
|
||||||
this.cliqueEvident(ligneDelta-1, collonneDelta+1);
|
|
||||||
}
|
|
||||||
if(collonneDelta<this.tableau[ligneDelta].length-1 && ligneDelta<this.tableau.length-1 && this.tableau[ligneDelta+1][collonneDelta+1].getVisibiliter()==false && this.tableau[ligneDelta+1][collonneDelta+1].getVoisin()==0 && this.tableau[ligneDelta+1][collonneDelta+1].getBombe()==false){
|
|
||||||
this.cliqueEvident(ligneDelta+1, collonneDelta+1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------fonction qui affiche toutes les case possédant un voisin d'une case donnée------------------------------------------
|
|
||||||
|
|
||||||
|
|
||||||
private void affichageVoisinEvident(int ligneDelta, int collonneDelta){
|
|
||||||
//nous regardons les 8 case adjacentes et si elle a des voisin
|
|
||||||
//si elle en a alors nous la rendons visible
|
|
||||||
if(ligneDelta>0 && this.tableau[ligneDelta-1][collonneDelta].getVisibiliter()==false && this.tableau[ligneDelta-1][collonneDelta].getVoisin()>0 && this.tableau[ligneDelta-1][collonneDelta].getSuspition()==0){
|
|
||||||
this.tableau[ligneDelta-1][collonneDelta].setVisibiliter(true);
|
|
||||||
this.tableau[ligneDelta-1][collonneDelta].repaint();
|
|
||||||
}
|
|
||||||
if(ligneDelta<tableau.length-1 && this.tableau[ligneDelta+1][collonneDelta].getVisibiliter()==false && this.tableau[ligneDelta+1][collonneDelta].getVoisin()>0 && this.tableau[ligneDelta+1][collonneDelta].getSuspition()==0){
|
|
||||||
this.tableau[ligneDelta+1][collonneDelta].setVisibiliter(true);
|
|
||||||
this.tableau[ligneDelta+1][collonneDelta].repaint();
|
|
||||||
}
|
|
||||||
if(collonneDelta<tableau[ligneDelta].length-1 && this.tableau[ligneDelta][collonneDelta+1].getVisibiliter()==false && this.tableau[ligneDelta][collonneDelta+1].getVoisin()>0 && this.tableau[ligneDelta][collonneDelta+1].getSuspition()==0){
|
|
||||||
this.tableau[ligneDelta][collonneDelta+1].setVisibiliter(true);
|
|
||||||
this.tableau[ligneDelta][collonneDelta+1].repaint();
|
|
||||||
}
|
|
||||||
if(collonneDelta>0 && this.tableau[ligneDelta][collonneDelta-1].getVisibiliter()==false && this.tableau[ligneDelta][collonneDelta-1].getVoisin()>0 && this.tableau[ligneDelta][collonneDelta-1].getSuspition()==0){
|
|
||||||
this.tableau[ligneDelta][collonneDelta-1].setVisibiliter(true);
|
|
||||||
this.tableau[ligneDelta][collonneDelta-1].repaint();
|
|
||||||
}
|
|
||||||
if(collonneDelta>0 && ligneDelta>0 && this.tableau[ligneDelta-1][collonneDelta-1].getVisibiliter()==false && this.tableau[ligneDelta-1][collonneDelta-1].getVoisin()>0 && this.tableau[ligneDelta-1][collonneDelta-1].getSuspition()==0){
|
|
||||||
this.tableau[ligneDelta-1][collonneDelta-1].setVisibiliter(true);
|
|
||||||
this.tableau[ligneDelta-1][collonneDelta-1].repaint();
|
|
||||||
}
|
|
||||||
if(collonneDelta>0 && ligneDelta<this.tableau.length-1 && this.tableau[ligneDelta+1][collonneDelta-1].getVisibiliter()==false && this.tableau[ligneDelta+1][collonneDelta-1].getVoisin()>0 && this.tableau[ligneDelta+1][collonneDelta-1].getSuspition()==0){
|
|
||||||
this.tableau[ligneDelta+1][collonneDelta-1].setVisibiliter(true);
|
|
||||||
this.tableau[ligneDelta+1][collonneDelta-1].repaint();
|
|
||||||
}
|
|
||||||
if(collonneDelta<this.tableau[ligneDelta].length-1 && ligneDelta>0 && this.tableau[ligneDelta-1][collonneDelta+1].getVisibiliter()==false && this.tableau[ligneDelta-1][collonneDelta+1].getVoisin()>0 && this.tableau[ligneDelta-1][collonneDelta+1].getSuspition()==0){
|
|
||||||
this.tableau[ligneDelta-1][collonneDelta+1].setVisibiliter(true);
|
|
||||||
this.tableau[ligneDelta-1][collonneDelta+1].repaint();
|
|
||||||
}
|
|
||||||
if(collonneDelta<this.tableau[ligneDelta].length-1 && ligneDelta<this.tableau.length-1 && this.tableau[ligneDelta+1][collonneDelta+1].getVisibiliter()==false && this.tableau[ligneDelta+1][collonneDelta+1].getVoisin()>0 && this.tableau[ligneDelta+1][collonneDelta+1].getSuspition()==0){
|
|
||||||
this.tableau[ligneDelta+1][collonneDelta+1].setVisibiliter(true);
|
|
||||||
this.tableau[ligneDelta+1][collonneDelta+1].repaint();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,68 +0,0 @@
|
|||||||
//Tom Monin et Clément Martins
|
|
||||||
// observateurChoix V1
|
|
||||||
//Class pour la selection du nombre de collone et ligne et de Mine a la souris
|
|
||||||
import java.awt.*;
|
|
||||||
import java.awt.event.*;
|
|
||||||
import javax.swing.*;
|
|
||||||
import java.io.*;
|
|
||||||
|
|
||||||
public class observateurChoix implements MouseListener{
|
|
||||||
private paintChoix pinceau, premier;
|
|
||||||
private JFrame fenetre;
|
|
||||||
private JLabel texte;
|
|
||||||
private plateau plat;
|
|
||||||
public observateurChoix(paintChoix pinceau0, paintChoix premier0, JLabel texte0, plateau plat0){
|
|
||||||
// pour savoir si c'est l'observateur de la fleche de gauche ou droite
|
|
||||||
this.pinceau=pinceau0;
|
|
||||||
this.premier=premier0;
|
|
||||||
this.texte=texte0;
|
|
||||||
this.plat=plat0;
|
|
||||||
}
|
|
||||||
@Override
|
|
||||||
public void mouseClicked(MouseEvent evenement){
|
|
||||||
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é
|
|
||||||
public void mouseEntered(MouseEvent evenement){
|
|
||||||
this.pinceau.selectionner(true);
|
|
||||||
}
|
|
||||||
@Override // debut du survol
|
|
||||||
public void mouseExited(MouseEvent evenement){
|
|
||||||
this.pinceau.selectionner(false);
|
|
||||||
}
|
|
||||||
@Override // fin du survol
|
|
||||||
public void mousePressed(MouseEvent evenement){
|
|
||||||
|
|
||||||
}
|
|
||||||
@Override // un bouton appuyé
|
|
||||||
public void mouseReleased(MouseEvent evenement){
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,34 +0,0 @@
|
|||||||
import java.awt.event.*;
|
|
||||||
|
|
||||||
public class observateurFenetre implements WindowListener{
|
|
||||||
private plateau plat;
|
|
||||||
public observateurFenetre(plateau plat0){
|
|
||||||
this.plat=plat0;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void windowActivated(WindowEvent evenement){
|
|
||||||
|
|
||||||
} // premier plan
|
|
||||||
public void windowClosed(WindowEvent evenement){
|
|
||||||
|
|
||||||
} // après fermeture
|
|
||||||
public void windowClosing(WindowEvent evenement){
|
|
||||||
//si la partie n'est pas encore fini
|
|
||||||
if(this.plat.etatDeVictoire()==0){
|
|
||||||
//on sauvegarde
|
|
||||||
this.plat.save();
|
|
||||||
}
|
|
||||||
} // avant fermeture
|
|
||||||
public void windowDeactivated(WindowEvent evenement){
|
|
||||||
|
|
||||||
} // arrière-plan
|
|
||||||
public void windowDeiconified(WindowEvent evenement){
|
|
||||||
|
|
||||||
} // restauration
|
|
||||||
public void windowIconified(WindowEvent evenement){
|
|
||||||
|
|
||||||
} // minimisation
|
|
||||||
public void windowOpened(WindowEvent evenement){
|
|
||||||
|
|
||||||
} // après ouverture
|
|
||||||
}
|
|
@ -1,43 +0,0 @@
|
|||||||
import java.awt.*;
|
|
||||||
import java.awt.event.*;
|
|
||||||
import javax.swing.*;
|
|
||||||
|
|
||||||
public class observateurSAV implements MouseListener{
|
|
||||||
private plateau plat;
|
|
||||||
private paintMenuJeu button;
|
|
||||||
private boolean fonction;
|
|
||||||
public observateurSAV(paintMenuJeu button0, plateau plat0){
|
|
||||||
this.button=button0;
|
|
||||||
this.plat=plat0;
|
|
||||||
this.fonction=false;
|
|
||||||
}
|
|
||||||
public void setFonction(boolean fonction0){
|
|
||||||
this.fonction=fonction0;
|
|
||||||
}
|
|
||||||
@Override
|
|
||||||
public void mouseClicked(MouseEvent evenement){
|
|
||||||
if(this.fonction==false){
|
|
||||||
plat.save();
|
|
||||||
}
|
|
||||||
if(this.fonction==true){
|
|
||||||
plat= new plateau(plat.getFenetre());
|
|
||||||
plat.menuChoixTypePartie();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@Override // un bouton cliqué
|
|
||||||
public void mouseEntered(MouseEvent evenement){
|
|
||||||
this.button.setSurvol(true);
|
|
||||||
}
|
|
||||||
@Override // debut du survol
|
|
||||||
public void mouseExited(MouseEvent evenement){
|
|
||||||
this.button.setSurvol(false);
|
|
||||||
}
|
|
||||||
@Override // fin du survol
|
|
||||||
public void mousePressed(MouseEvent evenement){
|
|
||||||
|
|
||||||
}
|
|
||||||
@Override // un bouton appuyé
|
|
||||||
public void mouseReleased(MouseEvent evenement){
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
BIN
paintChoix.class
@ -1,98 +0,0 @@
|
|||||||
|
|
||||||
// Tom Monin et Clément Martins
|
|
||||||
// paintChoix V1
|
|
||||||
// class pour l'affichage de la selection des lignes, collonnes et nombre de mines
|
|
||||||
|
|
||||||
import java.awt.*;
|
|
||||||
import javax.swing.*;
|
|
||||||
import javax.swing.JComponent;
|
|
||||||
|
|
||||||
public class paintChoix extends JComponent{
|
|
||||||
private boolean selectionner;
|
|
||||||
private paintChoix pinceau;
|
|
||||||
private boolean clique;
|
|
||||||
private int x;
|
|
||||||
private int fonction;
|
|
||||||
public paintChoix(int x0, int fonction0){
|
|
||||||
this.clique=false;
|
|
||||||
this.pinceau=null;
|
|
||||||
this.selectionner=false;
|
|
||||||
this.x=30-x0;
|
|
||||||
this.fonction=fonction0;
|
|
||||||
//de base ce n'est pas selectionner
|
|
||||||
}
|
|
||||||
public void selectionner(boolean verif){
|
|
||||||
this.selectionner=verif;
|
|
||||||
if(this.pinceau!=null){
|
|
||||||
this.pinceau.selectionner(verif);
|
|
||||||
}
|
|
||||||
this.repaint();
|
|
||||||
}
|
|
||||||
public void setPaintChoix(paintChoix pinceau0){
|
|
||||||
this.pinceau=pinceau0;
|
|
||||||
}
|
|
||||||
public void setClique(boolean verif){
|
|
||||||
this.clique=verif;
|
|
||||||
if(this.pinceau!=null){
|
|
||||||
this.pinceau.setClique(verif);
|
|
||||||
}
|
|
||||||
this.repaint();
|
|
||||||
}
|
|
||||||
public int getFonction(){
|
|
||||||
return this.fonction;
|
|
||||||
}
|
|
||||||
public int getN(){
|
|
||||||
return this.x;
|
|
||||||
}
|
|
||||||
@Override
|
|
||||||
protected void paintComponent(Graphics pinceau) {
|
|
||||||
// obligatoire : on crée un nouveau pinceau pour pouvoir le modifier plus tard
|
|
||||||
Graphics secondPinceau = pinceau.create();
|
|
||||||
// obligatoire : si le composant n'est pas censé être transparent
|
|
||||||
if (this.isOpaque()) {
|
|
||||||
// obligatoire : on repeint toute la surface avec la couleur de fond
|
|
||||||
secondPinceau.setColor(this.getBackground());
|
|
||||||
secondPinceau.fillRect(0, 0, this.getWidth(), this.getHeight());
|
|
||||||
}
|
|
||||||
if(this.clique==true){
|
|
||||||
secondPinceau.setColor(new Color(0, 127, 255));
|
|
||||||
secondPinceau.fillRect(0, 0, this.getWidth(), this.getHeight());
|
|
||||||
}
|
|
||||||
if(selectionner==true){
|
|
||||||
secondPinceau.setColor(new Color(255, 127, 0));
|
|
||||||
secondPinceau.fillRect(0, 0, this.getWidth(), this.getHeight());
|
|
||||||
}
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,145 +0,0 @@
|
|||||||
import java.awt.*;
|
|
||||||
import javax.swing.*;
|
|
||||||
import javax.swing.JComponent;
|
|
||||||
|
|
||||||
public class paintMenuJeu extends JComponent{
|
|
||||||
private int choix;
|
|
||||||
private int scoreMax, score;
|
|
||||||
private boolean survol;
|
|
||||||
public paintMenuJeu(int choix0, int score0, int scoreMax0){
|
|
||||||
this.choix=choix0;
|
|
||||||
this.score=score0;
|
|
||||||
this.scoreMax=scoreMax0;
|
|
||||||
this.survol=false;
|
|
||||||
}
|
|
||||||
public void setChoix(int choix0){
|
|
||||||
this.choix=choix0;
|
|
||||||
this.repaint();
|
|
||||||
}
|
|
||||||
public void setScore(int score0){
|
|
||||||
this.score=score0;
|
|
||||||
this.repaint();
|
|
||||||
}
|
|
||||||
public int getScore(){
|
|
||||||
return this.score;
|
|
||||||
}
|
|
||||||
public void setSurvol(boolean survol0){
|
|
||||||
this.survol=survol0;
|
|
||||||
this.repaint();
|
|
||||||
}
|
|
||||||
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
|
|
||||||
Graphics secondPinceau = pinceau.create();
|
|
||||||
// obligatoire : si le composant n'est pas censé être transparent
|
|
||||||
if (this.isOpaque()) {
|
|
||||||
// obligatoire : on repeint toute la surface avec la couleur de fond
|
|
||||||
secondPinceau.setColor(this.getBackground());
|
|
||||||
secondPinceau.fillRect(0, 0, this.getWidth(), this.getHeight());
|
|
||||||
}
|
|
||||||
//On paint ce que l'on veut maintenant
|
|
||||||
secondPinceau.setColor(new Color(0,0,0));
|
|
||||||
secondPinceau.fillRect(0, 0, this.getWidth(), this.getHeight());
|
|
||||||
if(this.choix==1){
|
|
||||||
int nombre=this.score/100;
|
|
||||||
this.paintNombre(secondPinceau, nombre);
|
|
||||||
}
|
|
||||||
if(this.choix==2){
|
|
||||||
int nombre=this.score;
|
|
||||||
if(nombre>=100){
|
|
||||||
nombre=this.score-100*(this.score/100);
|
|
||||||
}
|
|
||||||
nombre=nombre/10;
|
|
||||||
this.paintNombre(secondPinceau, nombre);
|
|
||||||
}
|
|
||||||
if(this.choix==3){
|
|
||||||
int nombre=this.score;
|
|
||||||
if(nombre>=100){
|
|
||||||
nombre=this.score-100*(this.score/100);
|
|
||||||
}
|
|
||||||
if(nombre>=10){
|
|
||||||
nombre=this.score-10*(this.score/10);
|
|
||||||
}
|
|
||||||
this.paintNombre(secondPinceau, nombre);
|
|
||||||
}
|
|
||||||
if(this.choix==4){
|
|
||||||
if(this.survol==true){
|
|
||||||
secondPinceau.setColor(new Color(0,255,0));
|
|
||||||
secondPinceau.fillRect(0, 0, this.getWidth(), this.getHeight());
|
|
||||||
}
|
|
||||||
Image sav=Toolkit.getDefaultToolkit().getImage("./IMAGE/sav.png");
|
|
||||||
secondPinceau.drawImage(sav, this.getWidth()/6, this.getHeight()/6, this.getWidth()/6*4, this.getHeight()/6*4 ,this);
|
|
||||||
}
|
|
||||||
if(this.choix==5){
|
|
||||||
Image lose=Toolkit.getDefaultToolkit().getImage("./IMAGE/lose.png");
|
|
||||||
secondPinceau.drawImage(lose, this.getWidth()/6, this.getHeight()/6, this.getWidth()/6*4, this.getHeight()/6*4 ,this);
|
|
||||||
}
|
|
||||||
if(this.choix==6){
|
|
||||||
Image win=Toolkit.getDefaultToolkit().getImage("./IMAGE/win.png");
|
|
||||||
secondPinceau.drawImage(win, this.getWidth()/6, this.getHeight()/6, this.getWidth()/6*4, this.getHeight()/6*4 ,this);
|
|
||||||
}
|
|
||||||
if(this.choix==7){
|
|
||||||
if(this.survol==true){
|
|
||||||
secondPinceau.setColor(new Color(0,255,0));
|
|
||||||
secondPinceau.fillRect(0, 0, this.getWidth(), this.getHeight());
|
|
||||||
}
|
|
||||||
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){
|
|
||||||
if(nombre==1){
|
|
||||||
Image un=Toolkit.getDefaultToolkit().getImage("./IMAGE/unD.png");
|
|
||||||
secondPinceau.drawImage(un, this.getWidth()/6, this.getHeight()/6, this.getWidth()/6*4, this.getHeight()/6*4 ,this);
|
|
||||||
}
|
|
||||||
if(nombre==2){
|
|
||||||
Image deux=Toolkit.getDefaultToolkit().getImage("./IMAGE/deuxD.png");
|
|
||||||
secondPinceau.drawImage(deux, this.getWidth()/6, this.getHeight()/6, this.getWidth()/6*4, this.getHeight()/6*4 ,this);
|
|
||||||
}
|
|
||||||
if(nombre==3){
|
|
||||||
Image trois=Toolkit.getDefaultToolkit().getImage("./IMAGE/troisD.png");
|
|
||||||
secondPinceau.drawImage(trois, this.getWidth()/6, this.getHeight()/6, this.getWidth()/6*4, this.getHeight()/6*4 ,this);
|
|
||||||
}
|
|
||||||
if(nombre==4){
|
|
||||||
Image quatre=Toolkit.getDefaultToolkit().getImage("./IMAGE/quatreD.png");
|
|
||||||
secondPinceau.drawImage(quatre, this.getWidth()/6, this.getHeight()/6, this.getWidth()/6*4, this.getHeight()/6*4 ,this);
|
|
||||||
}
|
|
||||||
if(nombre==5){
|
|
||||||
Image cinq=Toolkit.getDefaultToolkit().getImage("./IMAGE/cinqD.png");
|
|
||||||
secondPinceau.drawImage(cinq, this.getWidth()/6, this.getHeight()/6, this.getWidth()/6*4, this.getHeight()/6*4 ,this);
|
|
||||||
}
|
|
||||||
if(nombre==6){
|
|
||||||
Image six=Toolkit.getDefaultToolkit().getImage("./IMAGE/sixD.png");
|
|
||||||
secondPinceau.drawImage(six, this.getWidth()/6, this.getHeight()/6, this.getWidth()/6*4, this.getHeight()/6*4 ,this);
|
|
||||||
}
|
|
||||||
if(nombre==7){
|
|
||||||
Image sept=Toolkit.getDefaultToolkit().getImage("./IMAGE/septD.png");
|
|
||||||
secondPinceau.drawImage(sept, this.getWidth()/6, this.getHeight()/6, this.getWidth()/6*4, this.getHeight()/6*4 ,this);
|
|
||||||
}
|
|
||||||
if(nombre==8){
|
|
||||||
Image huit=Toolkit.getDefaultToolkit().getImage("./IMAGE/huitD.png");
|
|
||||||
secondPinceau.drawImage(huit, this.getWidth()/6, this.getHeight()/6, this.getWidth()/6*4, this.getHeight()/6*4 ,this);
|
|
||||||
}
|
|
||||||
if(nombre==9){
|
|
||||||
Image neuf=Toolkit.getDefaultToolkit().getImage("./IMAGE/neufD.png");
|
|
||||||
secondPinceau.drawImage(neuf, this.getWidth()/6, this.getHeight()/6, this.getWidth()/6*4, this.getHeight()/6*4 ,this);
|
|
||||||
}
|
|
||||||
if(nombre==0){
|
|
||||||
Image zero=Toolkit.getDefaultToolkit().getImage("./IMAGE/zeroD.png");
|
|
||||||
secondPinceau.drawImage(zero, this.getWidth()/6, this.getHeight()/6, this.getWidth()/6*4, this.getHeight()/6*4 ,this);
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
Image err=Toolkit.getDefaultToolkit().getImage("./IMAGE/err.png");
|
|
||||||
secondPinceau.drawImage(err, this.getWidth()/20*5, this.getHeight()/20*5, this.getWidth()/6*4, this.getHeight()/6*4 ,this);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
BIN
plateau.class
524
plateau.java
@ -1,40 +0,0 @@
|
|||||||
import java.awt.event.*;
|
|
||||||
import javax.swing.*;
|
|
||||||
import java.awt.*;
|
|
||||||
|
|
||||||
public class plusoumoins implements ActionListener {
|
|
||||||
private JTextField zone;
|
|
||||||
private int n;
|
|
||||||
private plateau plat;
|
|
||||||
public plusoumoins(JTextField zone0, int n0, plateau plat0){
|
|
||||||
this.zone=zone0;
|
|
||||||
this.n=n0;
|
|
||||||
this.plat=plat0;
|
|
||||||
}
|
|
||||||
@Override
|
|
||||||
public void actionPerformed(ActionEvent evenement){
|
|
||||||
int nombre=0;
|
|
||||||
try{
|
|
||||||
this.zone.setBackground(new Color(255,255,255));
|
|
||||||
nombre=Integer.parseInt(this.zone.getText())+this.n;
|
|
||||||
if(nombre<0){
|
|
||||||
nombre=0;
|
|
||||||
}
|
|
||||||
if(this.plat.getLigne()!=-1 && this.plat.getCollonne()!=-1){
|
|
||||||
if(nombre>this.plat.getLigne()*this.plat.getCollonne()){
|
|
||||||
nombre=this.plat.getLigne()*this.plat.getCollonne();
|
|
||||||
}
|
|
||||||
this.zone.setText(String.valueOf(nombre));
|
|
||||||
}else{
|
|
||||||
this.zone.setBackground(Color.red);
|
|
||||||
this.zone.setText("Selectionner Ligne et Collonne Avant");
|
|
||||||
this.plat.setBombe(-1);
|
|
||||||
}
|
|
||||||
this.plat.setBombe(nombre);
|
|
||||||
}catch(NumberFormatException e1){
|
|
||||||
this.zone.setBackground(Color.red);
|
|
||||||
this.zone.setText("rentrer un nombre valide");
|
|
||||||
this.plat.setBombe(-1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|