probleme de git regler
BIN
CASE/Case.class
155
CASE/Case.java
@ -1,155 +0,0 @@
|
|||||||
// Tom Monin et Clément Martins
|
|
||||||
// paintChoix V3
|
|
||||||
// class représentant une case dans la partie
|
|
||||||
|
|
||||||
import java.awt.*;
|
|
||||||
import javax.swing.*;
|
|
||||||
import javax.swing.JComponent;
|
|
||||||
|
|
||||||
public class Case extends JComponent{
|
|
||||||
//Etat de la case:
|
|
||||||
private boolean visibilite; //Visible ou pas
|
|
||||||
private boolean bombe; //Miner ou pas
|
|
||||||
private int voisin; //Le nombre de mine aux alentours
|
|
||||||
private int suspition; // son Etat de suspition ( 0:pas une bombe, 1:en est une, 2:je doute)
|
|
||||||
// Les Images de la case (point d'interogation, etoile et bombe...) ne sont pas des attributs de la classe Case car
|
|
||||||
//pour faciliter la sauvegarde et donc permettre de sérialiser l'objet les attribut devrons être des classes réalisant Serializable ou Externialisable
|
|
||||||
|
|
||||||
//Constructeur de la Case
|
|
||||||
public Case(){
|
|
||||||
//nous initialisons les valeurs
|
|
||||||
this.visibilite=false; //la visibiler est fausse donc la case est cacher
|
|
||||||
this.bombe=false; // ce n'est pas une bombe
|
|
||||||
this.voisin=0; // elle n'a pas de voisin bombe
|
|
||||||
this.suspition=0; // la suspition est a 0 (pas une bombe)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Nous mettons les getter/setter
|
|
||||||
|
|
||||||
public void setVisibiliter(boolean trueorfalse){
|
|
||||||
this.visibilite=trueorfalse;
|
|
||||||
}
|
|
||||||
public void setBombe(){
|
|
||||||
this.bombe=true;
|
|
||||||
}
|
|
||||||
public void suspition(){
|
|
||||||
this.suspition++;
|
|
||||||
if(this.suspition==3){
|
|
||||||
this.suspition=0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public boolean getBombe(){
|
|
||||||
return this.bombe;
|
|
||||||
}
|
|
||||||
public void setVoisin(int nvoisin){
|
|
||||||
this.voisin=nvoisin;
|
|
||||||
}
|
|
||||||
public boolean getSuspition(){
|
|
||||||
if(this.suspition>0){
|
|
||||||
return true;
|
|
||||||
}else{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// il y a deux suspition pour faciliter( le deux pour savoir si elle est suspecter sur 1:c'est une bombe et l'autre sur 0:pas une bombe)
|
|
||||||
public boolean getSuspition2(){
|
|
||||||
if(this.suspition==1){
|
|
||||||
return true;
|
|
||||||
}else{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public boolean getVisibiliter(){
|
|
||||||
return this.visibilite;
|
|
||||||
}
|
|
||||||
public int getVoisin(){
|
|
||||||
return this.voisin;
|
|
||||||
}
|
|
||||||
|
|
||||||
//on paint la case en fonction de ses attribut et donc son etat
|
|
||||||
@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
|
|
||||||
//si la case est cacher (pas visible)
|
|
||||||
if(this.visibilite==false){
|
|
||||||
//on dessinne un rectangle gris sur un fond noir
|
|
||||||
secondPinceau.setColor(new Color(0,0,0));
|
|
||||||
secondPinceau.fillRect(0, 0, this.getWidth(), this.getHeight());
|
|
||||||
secondPinceau.setColor(new Color(100, 100, 100));
|
|
||||||
secondPinceau.fillRect(this.getWidth()/20, this.getHeight()/20, this.getWidth()/20*18, this.getHeight()/20*18);
|
|
||||||
//si on supecte que c'est une bome
|
|
||||||
if(this.suspition==1){
|
|
||||||
//on affiche l'etoile
|
|
||||||
Image etoile= Toolkit.getDefaultToolkit().getImage("./IMAGE/etoile.png");
|
|
||||||
secondPinceau.drawImage(etoile, this.getWidth()/20*5, this.getHeight()/20*5, this.getWidth()/20*10, this.getHeight()/20*10 ,this);
|
|
||||||
}
|
|
||||||
//si on suspecte que on ne sais pas
|
|
||||||
if(this.suspition==2){
|
|
||||||
Image interogation= Toolkit.getDefaultToolkit().getImage("./IMAGE/pointintero.png");
|
|
||||||
//on affiche le point d'interogation
|
|
||||||
secondPinceau.drawImage(interogation, this.getWidth()/20*5, this.getHeight()/20*5, this.getWidth()/20*10, this.getHeight()/20*10 ,this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//si la case est afficher(visible)
|
|
||||||
if(this.visibilite==true){
|
|
||||||
//on dessine un rectangle blanc sur un fond noir
|
|
||||||
secondPinceau.setColor(new Color(0,0,0));
|
|
||||||
secondPinceau.fillRect(0, 0, this.getWidth(), this.getHeight());
|
|
||||||
secondPinceau.setColor(new Color(255, 255, 255));
|
|
||||||
secondPinceau.fillRect(this.getWidth()/20, this.getHeight()/20, this.getWidth()/20*18, this.getHeight()/20*18);
|
|
||||||
//si la case a au moins 1 voisin qui est une bombe
|
|
||||||
if(this.voisin>0){
|
|
||||||
//on ecrit le nombre de voisin que elle a
|
|
||||||
if(this.voisin==1){
|
|
||||||
Image un=Toolkit.getDefaultToolkit().getImage("./IMAGE/un.jpg");
|
|
||||||
secondPinceau.drawImage(un, this.getWidth()/20*5, this.getHeight()/20*5, this.getWidth()/20*10, this.getHeight()/20*10 ,this);
|
|
||||||
}
|
|
||||||
if(this.voisin==2){
|
|
||||||
Image deux=Toolkit.getDefaultToolkit().getImage("./IMAGE/deux.jpg");
|
|
||||||
secondPinceau.drawImage(deux, this.getWidth()/20*5, this.getHeight()/20*5, this.getWidth()/20*10, this.getHeight()/20*10 ,this);
|
|
||||||
}
|
|
||||||
if(this.voisin==3){
|
|
||||||
Image trois=Toolkit.getDefaultToolkit().getImage("./IMAGE/trois.jpg");
|
|
||||||
secondPinceau.drawImage(trois, this.getWidth()/20*5, this.getHeight()/20*5, this.getWidth()/20*10, this.getHeight()/20*10 ,this);
|
|
||||||
}
|
|
||||||
if(this.voisin==4){
|
|
||||||
Image quatre=Toolkit.getDefaultToolkit().getImage("./IMAGE/quatre.jpg");
|
|
||||||
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");
|
|
||||||
secondPinceau.drawImage(cinq, this.getWidth()/20*5, this.getHeight()/20*5, this.getWidth()/20*10, this.getHeight()/20*10 ,this);
|
|
||||||
}
|
|
||||||
if(this.voisin==6){
|
|
||||||
Image six=Toolkit.getDefaultToolkit().getImage("./IMAGE/six.jpg");
|
|
||||||
secondPinceau.drawImage(six, this.getWidth()/20*5, this.getHeight()/20*5, this.getWidth()/20*10, this.getHeight()/20*10 ,this);
|
|
||||||
}
|
|
||||||
if(this.voisin==7){
|
|
||||||
Image sept=Toolkit.getDefaultToolkit().getImage("./IMAGE/sept.jpg");
|
|
||||||
secondPinceau.drawImage(sept, this.getWidth()/20*5, this.getHeight()/20*5, this.getWidth()/20*10, this.getHeight()/20*10 ,this);
|
|
||||||
}
|
|
||||||
if(this.voisin==8){
|
|
||||||
Image huit=Toolkit.getDefaultToolkit().getImage("./IMAGE/huit.jpg");
|
|
||||||
secondPinceau.drawImage(huit, this.getWidth()/20*5, this.getHeight()/20*5, this.getWidth()/20*10, this.getHeight()/20*10 ,this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//si la case est une bombe
|
|
||||||
if(this.bombe==true){
|
|
||||||
Image imgboombe= Toolkit.getDefaultToolkit().getImage("./IMAGE/bombe.png");
|
|
||||||
//on remplace le rectangle blanc par un rectangle rouge
|
|
||||||
secondPinceau.setColor(new Color(255,0,125));
|
|
||||||
secondPinceau.fillRect(this.getWidth()/20, this.getHeight()/20, this.getWidth()/20*18, this.getHeight()/20*18);
|
|
||||||
//on affiche la bombe
|
|
||||||
secondPinceau.drawImage(imgboombe, this.getWidth()/20*5, this.getHeight()/20*5, this.getWidth()/20*10, this.getHeight()/20*10 ,this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
Before Width: | Height: | Size: 5.5 KiB |
Before Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 5.7 KiB |
Before Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 4.4 KiB |
Before Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 9.9 KiB |
Before Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 20 KiB |
@ -1,25 +0,0 @@
|
|||||||
// Tom Monint et Clément Martins
|
|
||||||
// main_ex V4
|
|
||||||
// Classe ayant pour but d'être executer
|
|
||||||
|
|
||||||
//importons les packages necessaires
|
|
||||||
import java.awt.*;
|
|
||||||
import javax.swing.*;
|
|
||||||
|
|
||||||
public class main_ex{
|
|
||||||
public static void main(String[] Args){
|
|
||||||
// on initialise une fenettre
|
|
||||||
JFrame fenetre = new JFrame("Démineur");
|
|
||||||
int ligne=5;
|
|
||||||
int collonne=10;
|
|
||||||
int bombe=10;
|
|
||||||
fenetre.setLocation(0,0);
|
|
||||||
fenetre.setSize(1500,500);
|
|
||||||
fenetre.setVisible(true);
|
|
||||||
//on choisi une taille arbitraire
|
|
||||||
|
|
||||||
//nous utiliserons un gestionnaire GridLayout de dimensions choisi précédament
|
|
||||||
plateau jeu = new plateau(fenetre);
|
|
||||||
jeu.reprendrePartie();
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,161 +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.*;
|
|
||||||
|
|
||||||
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){
|
|
||||||
this.ligne=ligne0;
|
|
||||||
this.collonne=collonne0;
|
|
||||||
this.tableau=tableau0;
|
|
||||||
this.plat=plat0;
|
|
||||||
}
|
|
||||||
@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()==false && 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].getSuspition2()==true){
|
|
||||||
plat.setScore(-1);
|
|
||||||
}
|
|
||||||
if(this.tableau[this.ligne][this.collonne].getSuspition2()==false && this.tableau[this.ligne][this.collonne].getSuspition()==true){
|
|
||||||
plat.setScore(+1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//nous testons si le joueur a gagner/perdu
|
|
||||||
//si perdu
|
|
||||||
if(plat.etatDeVictoire()==-1){
|
|
||||||
plateau.removeListener(this.tableau);
|
|
||||||
for(int i=0;i<this.tableau.length;i++){
|
|
||||||
for(int t=0;t<this.tableau[i].length;t++){
|
|
||||||
this.tableau[i][t].setVisibiliter(true);
|
|
||||||
this.tableau[i][t].repaint();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
plat.perdu();
|
|
||||||
plat.paintLogo();
|
|
||||||
}
|
|
||||||
//si gagner
|
|
||||||
if(plat.etatDeVictoire()==1){
|
|
||||||
plateau.removeListener(this.tableau);
|
|
||||||
plat.gagner();
|
|
||||||
plat.paintLogo();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@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
|
|
||||||
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].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].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].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].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].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].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].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].setVisibiliter(true);
|
|
||||||
this.tableau[ligneDelta+1][collonneDelta+1].repaint();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,30 +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){
|
|
||||||
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,42 +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.newGame(plat.getLigne(), plat.getCollonne(), plat.getBombe());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@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){
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,142 +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 Image un, deux, trois, quatre, cinq, six, sept, huit, neuf, zero, err, sav, lose, win, replay;
|
|
||||||
private boolean survol;
|
|
||||||
public paintMenuJeu(int choix0, int score0, int scoreMax0){
|
|
||||||
this.choix=choix0;
|
|
||||||
this.score=score0;
|
|
||||||
this.scoreMax=scoreMax0;
|
|
||||||
this.un=Toolkit.getDefaultToolkit().getImage("./IMAGE/unD.png");
|
|
||||||
this.deux=Toolkit.getDefaultToolkit().getImage("./IMAGE/deuxD.png");
|
|
||||||
this.trois=Toolkit.getDefaultToolkit().getImage("./IMAGE/troisD.png");
|
|
||||||
this.quatre=Toolkit.getDefaultToolkit().getImage("./IMAGE/quatreD.png");
|
|
||||||
this.cinq=Toolkit.getDefaultToolkit().getImage("./IMAGE/cinqD.png");
|
|
||||||
this.six=Toolkit.getDefaultToolkit().getImage("./IMAGE/sixD.png");
|
|
||||||
this.sept=Toolkit.getDefaultToolkit().getImage("./IMAGE/septD.png");
|
|
||||||
this.huit=Toolkit.getDefaultToolkit().getImage("./IMAGE/huitD.png");
|
|
||||||
this.neuf=Toolkit.getDefaultToolkit().getImage("./IMAGE/neufD.png");
|
|
||||||
this.zero=Toolkit.getDefaultToolkit().getImage("./IMAGE/zeroD.png");
|
|
||||||
this.err=Toolkit.getDefaultToolkit().getImage("./IMAGE/err.png");
|
|
||||||
this.sav=Toolkit.getDefaultToolkit().getImage("./IMAGE/sav.png");
|
|
||||||
this.lose=Toolkit.getDefaultToolkit().getImage("./IMAGE/lose.png");
|
|
||||||
this.win=Toolkit.getDefaultToolkit().getImage("./IMAGE/win.png");
|
|
||||||
this.replay=Toolkit.getDefaultToolkit().getImage("./IMAGE/replay.png");
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
@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());
|
|
||||||
}
|
|
||||||
secondPinceau.drawImage(this.sav, this.getWidth()/6, this.getHeight()/6, this.getWidth()/6*4, this.getHeight()/6*4 ,this);
|
|
||||||
}
|
|
||||||
if(this.choix==5){
|
|
||||||
secondPinceau.drawImage(this.lose, this.getWidth()/6, this.getHeight()/6, this.getWidth()/6*4, this.getHeight()/6*4 ,this);
|
|
||||||
}
|
|
||||||
if(this.choix==6){
|
|
||||||
secondPinceau.drawImage(this.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());
|
|
||||||
}
|
|
||||||
secondPinceau.drawImage(this.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){
|
|
||||||
secondPinceau.drawImage(this.un, this.getWidth()/6, this.getHeight()/6, this.getWidth()/6*4, this.getHeight()/6*4 ,this);
|
|
||||||
}
|
|
||||||
if(nombre==2){
|
|
||||||
secondPinceau.drawImage(this.deux, this.getWidth()/6, this.getHeight()/6, this.getWidth()/6*4, this.getHeight()/6*4 ,this);
|
|
||||||
}
|
|
||||||
if(nombre==3){
|
|
||||||
secondPinceau.drawImage(this.trois, this.getWidth()/6, this.getHeight()/6, this.getWidth()/6*4, this.getHeight()/6*4 ,this);
|
|
||||||
}
|
|
||||||
if(nombre==4){
|
|
||||||
secondPinceau.drawImage(this.quatre, this.getWidth()/6, this.getHeight()/6, this.getWidth()/6*4, this.getHeight()/6*4 ,this);
|
|
||||||
}
|
|
||||||
if(nombre==5){
|
|
||||||
secondPinceau.drawImage(this.cinq, this.getWidth()/6, this.getHeight()/6, this.getWidth()/6*4, this.getHeight()/6*4 ,this);
|
|
||||||
}
|
|
||||||
if(nombre==6){
|
|
||||||
secondPinceau.drawImage(this.six, this.getWidth()/6, this.getHeight()/6, this.getWidth()/6*4, this.getHeight()/6*4 ,this);
|
|
||||||
}
|
|
||||||
if(nombre==7){
|
|
||||||
secondPinceau.drawImage(this.sept, this.getWidth()/6, this.getHeight()/6, this.getWidth()/6*4, this.getHeight()/6*4 ,this);
|
|
||||||
}
|
|
||||||
if(nombre==8){
|
|
||||||
secondPinceau.drawImage(this.huit, this.getWidth()/6, this.getHeight()/6, this.getWidth()/6*4, this.getHeight()/6*4 ,this);
|
|
||||||
}
|
|
||||||
if(nombre==9){
|
|
||||||
secondPinceau.drawImage(this.neuf, this.getWidth()/6, this.getHeight()/6, this.getWidth()/6*4, this.getHeight()/6*4 ,this);
|
|
||||||
}
|
|
||||||
if(nombre==0){
|
|
||||||
secondPinceau.drawImage(this.zero, this.getWidth()/6, this.getHeight()/6, this.getWidth()/6*4, this.getHeight()/6*4 ,this);
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
secondPinceau.drawImage(this.err, this.getWidth()/20*5, this.getHeight()/20*5, this.getWidth()/6*4, this.getHeight()/6*4 ,this);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,323 +0,0 @@
|
|||||||
//Tom Monin et Clément Martins
|
|
||||||
//Class pour des fonction static de jeu
|
|
||||||
//V2
|
|
||||||
|
|
||||||
import java.io.*;
|
|
||||||
import java.util.*;
|
|
||||||
import java.awt.event.*;
|
|
||||||
import java.io.ObjectOutputStream;
|
|
||||||
import java.awt.*;
|
|
||||||
import javax.swing.*;
|
|
||||||
|
|
||||||
public class plateau{
|
|
||||||
private paintMenuJeu logo;
|
|
||||||
private JFrame fenetre;
|
|
||||||
private observateurSAV observateur;
|
|
||||||
private int ligne, collonne, bombe;
|
|
||||||
private paintMenuJeu[] tabScore= new paintMenuJeu[3];
|
|
||||||
private Case[][] tableau;
|
|
||||||
public plateau(JFrame fenetre0){
|
|
||||||
this.fenetre=fenetre0;
|
|
||||||
}
|
|
||||||
public void setLogo(paintMenuJeu logo0){
|
|
||||||
this.logo=logo0;
|
|
||||||
}
|
|
||||||
public void setObservateur(observateurSAV observateur0){
|
|
||||||
this.observateur=observateur0;
|
|
||||||
}
|
|
||||||
public int getLigne(){
|
|
||||||
return this.ligne;
|
|
||||||
}
|
|
||||||
public int getCollonne(){
|
|
||||||
return this.collonne;
|
|
||||||
}
|
|
||||||
public int getBombe(){
|
|
||||||
return this.bombe;
|
|
||||||
}
|
|
||||||
public JFrame getFenetre(){
|
|
||||||
return this.fenetre;
|
|
||||||
}
|
|
||||||
//-------------------------Fonction plaçant les bombes aléatoirement------------------------
|
|
||||||
|
|
||||||
private void setAllBombe(){
|
|
||||||
Random rand = new Random();
|
|
||||||
//on répète le nombre de fois le nombre de bombe a placer
|
|
||||||
for(int i=0; i<this.bombe; i++){
|
|
||||||
//on genere 2 chiffre aléatoire(ligne et collonne)
|
|
||||||
int x=rand.nextInt(this.ligne);
|
|
||||||
int y=rand.nextInt(this.collonne);
|
|
||||||
//si il n'y a pas de bombe ici
|
|
||||||
if(this.tableau[x][y].getBombe()==false){
|
|
||||||
//on en place une
|
|
||||||
this.tableau[x][y].setBombe();
|
|
||||||
}else{
|
|
||||||
//autrement nous recomencerons 1 fois de plus le tirage pour ne pas modifier le nombre de bombe
|
|
||||||
i--;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//-------------------------Fonction mettant le nombre de bombe voisin a chaque Case------------------
|
|
||||||
|
|
||||||
public void setAllVoisin(){
|
|
||||||
//nous parcourons le tableau du jeu
|
|
||||||
for(int i=0; i<this.tableau.length; i++){
|
|
||||||
for(int t=0; t<this.tableau[i].length; t++){
|
|
||||||
int voisin=0;
|
|
||||||
//nous regardons dans les cases adjacentes(si elles existe) si elle sont des bombes
|
|
||||||
if(i>0){
|
|
||||||
if(this.tableau[i-1][t].getBombe()==true){
|
|
||||||
//si elle le sont alors nous augmentons le nombre de voisin
|
|
||||||
voisin++;
|
|
||||||
}
|
|
||||||
if(t>0){
|
|
||||||
if(this.tableau[i-1][t-1].getBombe()==true){
|
|
||||||
voisin++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(t<this.tableau[i].length-1){
|
|
||||||
if(this.tableau[i-1][t+1].getBombe()==true){
|
|
||||||
voisin++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(i<this.tableau.length-1){
|
|
||||||
if(this.tableau[i+1][t].getBombe()==true){
|
|
||||||
voisin++;
|
|
||||||
}
|
|
||||||
if(t>0){
|
|
||||||
if(this.tableau[i+1][t-1].getBombe()==true){
|
|
||||||
voisin++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(t<this.tableau[i].length-1){
|
|
||||||
if(this.tableau[i+1][t+1].getBombe()==true){
|
|
||||||
voisin++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(t>0){
|
|
||||||
if(this.tableau[i][t-1].getBombe()==true){
|
|
||||||
voisin++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(t<this.tableau[i].length-1){
|
|
||||||
if(this.tableau[i][t+1].getBombe()==true){
|
|
||||||
voisin++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//finalement nous mettons pour cette case sont nombre de voisin
|
|
||||||
this.tableau[i][t].setVoisin(voisin);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//-------------------------------Fonction qui verifie l'etat de jeu(perdu, gagner)------------------------
|
|
||||||
|
|
||||||
public int etatDeVictoire(){
|
|
||||||
//variable pour une condition
|
|
||||||
int condition=0;
|
|
||||||
//nous parcourons le tableau du jeu
|
|
||||||
for(int i=0; i<this.tableau.length; i++){
|
|
||||||
for(int t=0; t<this.tableau[i].length; t++){
|
|
||||||
//si une case n'est pas visible mais que ce n'est pas une bombe
|
|
||||||
if(this.tableau[i][t].getVisibiliter()==false && this.tableau[i][t].getBombe()==false){
|
|
||||||
//nous augmentons la conditions pour montrer que la partie est toujour en cours
|
|
||||||
condition++;
|
|
||||||
}
|
|
||||||
//si une bombe est visible
|
|
||||||
if(this.tableau[i][t].getVisibiliter()==true && this.tableau[i][t].getBombe()==true){
|
|
||||||
//on retourne une valeur représentant la défaite: -1
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
//si une bombe n'est pas susposer comme tel
|
|
||||||
if(this.tableau[i][t].getSuspition2()==false && this.tableau[i][t].getBombe()==true){
|
|
||||||
//nous augmentons la conditions pour montrer que la partie n'est pas fini
|
|
||||||
condition++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//si la partie n'est pas fini
|
|
||||||
if(condition>0){
|
|
||||||
//on retourne 0 ici comme une valleur null
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
//sinon le joueur a donc gagner on renvoie 1
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
//-----------------------------------Fonction après victoire/defaite pour enlever les observateur a chaque Case--------------------------------
|
|
||||||
|
|
||||||
public static void removeListener(Case[][] tableau0){
|
|
||||||
//on parcour le tableau du jeu
|
|
||||||
for(int i=0; i<tableau0.length; i++){
|
|
||||||
for(int t=0; t<tableau0[i].length; t++){
|
|
||||||
//on récupere le tableau d'observateur
|
|
||||||
MouseListener[] tabListener;
|
|
||||||
tabListener=tableau0[i][t].getMouseListeners();
|
|
||||||
//que nous parcourons
|
|
||||||
for(int longeur=0; longeur<=tabListener.length-1; longeur++){
|
|
||||||
//on enleve a chaque case les observateur 1 par 1
|
|
||||||
tableau0[i][t].removeMouseListener(tabListener[longeur]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public void perdu(){
|
|
||||||
for(int i=0; i<tabScore.length; i++){
|
|
||||||
this.tabScore[i].setChoix(5);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public void gagner(){
|
|
||||||
for(int i=0; i<tabScore.length; i++){
|
|
||||||
this.tabScore[i].setChoix(6);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public void setScore(int n){
|
|
||||||
for(int i=0; i<tabScore.length; i++){
|
|
||||||
tabScore[i].setScore(tabScore[i].getScore()+n);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public void paintLogo(){
|
|
||||||
this.logo.setChoix(7);
|
|
||||||
this.observateur.setFonction(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void newGame(int ligne0, int collonne0, int bombe0){
|
|
||||||
this.ligne=ligne0;
|
|
||||||
this.collonne=collonne0;
|
|
||||||
this.bombe=bombe0;
|
|
||||||
this.tableau=new Case[ligne][collonne];
|
|
||||||
this.fenetre.dispose();
|
|
||||||
this.fenetre=new JFrame("démineur");
|
|
||||||
GridLayout grille = new GridLayout(ligne+1,collonne);
|
|
||||||
for(int i=0; i<collonne; i++){
|
|
||||||
paintMenuJeu menu= new paintMenuJeu(0, bombe, bombe);
|
|
||||||
menu.setPreferredSize(new Dimension(100,100));
|
|
||||||
if(i==0){
|
|
||||||
this.tabScore[0]=menu;
|
|
||||||
menu.setChoix(1);
|
|
||||||
}
|
|
||||||
if(i==1){
|
|
||||||
this.tabScore[1]=menu;
|
|
||||||
menu.setChoix(2);
|
|
||||||
}
|
|
||||||
if(i==2){
|
|
||||||
this.tabScore[2]=menu;
|
|
||||||
menu.setChoix(3);
|
|
||||||
}
|
|
||||||
if(i==collonne-1){
|
|
||||||
menu.setChoix(4);
|
|
||||||
this.setLogo(menu);
|
|
||||||
observateurSAV observateur=new observateurSAV(menu, this);
|
|
||||||
menu.addMouseListener(observateur);
|
|
||||||
this.setObservateur(observateur);
|
|
||||||
}
|
|
||||||
fenetre.add(menu);
|
|
||||||
}
|
|
||||||
fenetre.setLayout(grille);
|
|
||||||
// l'application ne se fermera que si on clique sur
|
|
||||||
fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
|
||||||
fenetre.setVisible(true);
|
|
||||||
// nous creons le tableau de Case qui représente l'etat du jeu
|
|
||||||
// on ajoute a la fenetre toute les case (ligne*collonne)
|
|
||||||
for(int i=0; i<ligne; i++){
|
|
||||||
for(int t=0; t<collonne; t++){
|
|
||||||
this.tableau[i][t]= new Case();
|
|
||||||
this.tableau[i][t].setPreferredSize(new Dimension(50,50));
|
|
||||||
//nous ajoutons aussi a chaque case son observateur de case
|
|
||||||
this.tableau[i][t].addMouseListener(new observateurCase(i, t, this.tableau, this));
|
|
||||||
fenetre.add(this.tableau[i][t]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
fenetre.addWindowListener(new observateurFenetre(this));
|
|
||||||
//nous disposons les bombe dans le jeu
|
|
||||||
this.setAllBombe();
|
|
||||||
//maitenant que les bombe sont mise nous pouvons modifier le nombre de voisin des cases
|
|
||||||
this.setAllVoisin();
|
|
||||||
this.fenetre.pack();
|
|
||||||
}
|
|
||||||
public void save(){
|
|
||||||
try{
|
|
||||||
OutputStream sav = new FileOutputStream(new File("sauvegarde.data"));
|
|
||||||
ObjectOutputStream oos = new ObjectOutputStream(sav);
|
|
||||||
oos.writeInt(this.ligne);
|
|
||||||
oos.writeInt(this.collonne);
|
|
||||||
for(int i=0; i<this.ligne; i++){
|
|
||||||
for(int t=0; t<this.collonne; t++){
|
|
||||||
oos.writeObject(this.tableau[i][t]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
oos.writeInt(this.tabScore[0].getScoreMax());
|
|
||||||
oos.writeInt(this.tabScore[0].getScore());
|
|
||||||
oos.close();
|
|
||||||
sav.close();
|
|
||||||
}catch(FileNotFoundException e1){
|
|
||||||
}catch(IOException e2){
|
|
||||||
}
|
|
||||||
this.fenetre.dispose();
|
|
||||||
|
|
||||||
}
|
|
||||||
public void reprendrePartie(){
|
|
||||||
int score=0;
|
|
||||||
try{
|
|
||||||
FileInputStream file = new FileInputStream("./sauvegarde.data");
|
|
||||||
ObjectInputStream ois = new ObjectInputStream(file);
|
|
||||||
this.ligne=ois.readInt();
|
|
||||||
this.collonne=ois.readInt();
|
|
||||||
this.tableau=new Case[this.ligne][this.collonne];
|
|
||||||
for(int i=0; i<ligne; i++){
|
|
||||||
for(int t=0; t<collonne; t++){
|
|
||||||
this.tableau[i][t]=(Case) ois.readObject();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this.bombe=ois.readInt();
|
|
||||||
score=ois.readInt();
|
|
||||||
}catch(FileNotFoundException e1){
|
|
||||||
System.out.println("FNF");
|
|
||||||
}catch(IOException e2){
|
|
||||||
System.out.println("IOE");
|
|
||||||
}catch(ClassNotFoundException e3){
|
|
||||||
System.out.println("CNF");
|
|
||||||
}
|
|
||||||
this.fenetre.dispose();
|
|
||||||
this.fenetre=new JFrame("démineur");
|
|
||||||
GridLayout grille = new GridLayout(ligne+1,collonne);
|
|
||||||
for(int i=0; i<collonne; i++){
|
|
||||||
paintMenuJeu menu= new paintMenuJeu(0, score, bombe);
|
|
||||||
menu.setPreferredSize(new Dimension(100,100));
|
|
||||||
if(i==0){
|
|
||||||
this.tabScore[0]=menu;
|
|
||||||
menu.setChoix(1);
|
|
||||||
}
|
|
||||||
if(i==1){
|
|
||||||
this.tabScore[1]=menu;
|
|
||||||
menu.setChoix(2);
|
|
||||||
}
|
|
||||||
if(i==2){
|
|
||||||
this.tabScore[2]=menu;
|
|
||||||
menu.setChoix(3);
|
|
||||||
}
|
|
||||||
if(i==collonne-1){
|
|
||||||
menu.setChoix(4);
|
|
||||||
this.setLogo(menu);
|
|
||||||
observateurSAV observateur=new observateurSAV(menu, this);
|
|
||||||
menu.addMouseListener(observateur);
|
|
||||||
this.setObservateur(observateur);
|
|
||||||
}
|
|
||||||
fenetre.add(menu);
|
|
||||||
}
|
|
||||||
fenetre.setLayout(grille);
|
|
||||||
// l'application ne se fermera que si on clique sur
|
|
||||||
fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
|
||||||
fenetre.setVisible(true);
|
|
||||||
fenetre.addWindowListener(new observateurFenetre(this));
|
|
||||||
for(int i=0; i<ligne; i++){
|
|
||||||
for(int t=0;t<collonne; t++){
|
|
||||||
this.fenetre.add(this.tableau[i][t]);
|
|
||||||
this.tableau[i][t].repaint();
|
|
||||||
this.tableau[i][t].addMouseListener(new observateurCase(i, t, this.tableau, this));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this.fenetre.pack();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,62 +0,0 @@
|
|||||||
import java.awt.event.*;
|
|
||||||
import javax.swing.*;
|
|
||||||
import java.awt.*;
|
|
||||||
import java.io.*;
|
|
||||||
|
|
||||||
public class bombeEtValider implements ActionListener {
|
|
||||||
private plateau plat;
|
|
||||||
private int fonction;
|
|
||||||
private JTextField zone;
|
|
||||||
public bombeEtValider(plateau plat0, int fonction0, JTextField zone0){
|
|
||||||
this.plat=plat0;
|
|
||||||
this.fonction=fonction0;
|
|
||||||
this.zone=zone0;
|
|
||||||
}
|
|
||||||
@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){
|
|
||||||
if(this.plat.getLigne()!=-1 && this.plat.getLigne()!=-1 && this.plat.getBombe()!=-1){
|
|
||||||
this.plat.newGame();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(this.fonction==3){
|
|
||||||
this.plat.menuChoixLCB();
|
|
||||||
}
|
|
||||||
if(this.fonction==4){
|
|
||||||
try{
|
|
||||||
FileInputStream fichier = new FileInputStream("./sauvegarde.data");
|
|
||||||
this.plat.reprendrePartie();
|
|
||||||
}catch(FileNotFoundException e1){
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(this.fonction==5){
|
|
||||||
this.plat.getFenetre().dispose();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,71 +0,0 @@
|
|||||||
import java.awt.*;
|
|
||||||
import javax.swing.*;
|
|
||||||
|
|
||||||
public class nombreCollonnesLigneEtBombe{
|
|
||||||
private int collonne, ligne, bombe, max, min;
|
|
||||||
JFrame fenetre;
|
|
||||||
public nombreCollonnesLigneEtBombe(JFrame fenetre0){
|
|
||||||
this.min=4;
|
|
||||||
// il y a au minimun 4 ligne et 4 collonnes
|
|
||||||
this.max=30;
|
|
||||||
// il y a 30 ligne et collonne au max
|
|
||||||
this.collonne=1;
|
|
||||||
this.ligne=3;
|
|
||||||
this.bombe=0;
|
|
||||||
this.fenetre=fenetre0;
|
|
||||||
this.Choix();
|
|
||||||
}
|
|
||||||
public void setCollonne(int n){
|
|
||||||
this.collonne=n;
|
|
||||||
if(this.collonne<this.min){
|
|
||||||
this.collonne=this.min;
|
|
||||||
}
|
|
||||||
if(this.collonne>this.max){
|
|
||||||
this.collonne=this.max;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public void setLigne(int n){
|
|
||||||
this.ligne=n;
|
|
||||||
if(this.ligne<this.min){
|
|
||||||
this.ligne=this.min;
|
|
||||||
}
|
|
||||||
if(this.ligne>this.max){
|
|
||||||
this.ligne=this.max;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public void setBombe(int n){
|
|
||||||
this.bombe=n;
|
|
||||||
if(this.bombe<this.min){
|
|
||||||
this.bombe=this.min;
|
|
||||||
}
|
|
||||||
if(this.bombe>this.max){
|
|
||||||
this.bombe=this.max;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public int getMax(){
|
|
||||||
return this.max;
|
|
||||||
}
|
|
||||||
public int getMin(){
|
|
||||||
return this.min;
|
|
||||||
}
|
|
||||||
public int getLignes(){
|
|
||||||
return this.ligne;
|
|
||||||
}
|
|
||||||
public int getCollonnes(){
|
|
||||||
return this.collonne;
|
|
||||||
}
|
|
||||||
public JFrame getJFrame(){
|
|
||||||
JFrame fen2 = new JFrame();
|
|
||||||
GridLayout grille = new GridLayout(this.ligne, this.collonne, 5, 5);
|
|
||||||
fen2.setLayout(grille);
|
|
||||||
fen2.setSize(1000,800);
|
|
||||||
fen2.setLocation(0,0);
|
|
||||||
fen2.setVisible(true);
|
|
||||||
fen2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
|
||||||
return fen2;
|
|
||||||
}
|
|
||||||
private void Choix(){
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
@ -9,10 +9,12 @@ public class observateurButtonEtText implements ActionListener {
|
|||||||
private plateau plat;
|
private plateau plat;
|
||||||
private int fonction;
|
private int fonction;
|
||||||
private JTextField zone;
|
private JTextField zone;
|
||||||
public observateurButtonEtText(plateau plat0, int fonction0, JTextField zone0){
|
private JFrame fenetre;
|
||||||
|
public observateurButtonEtText(plateau plat0, int fonction0, JTextField zone0, JFrame fenetre0){
|
||||||
this.plat=plat0;
|
this.plat=plat0;
|
||||||
this.fonction=fonction0;
|
this.fonction=fonction0;
|
||||||
this.zone=zone0;
|
this.zone=zone0;
|
||||||
|
this.fenetre=fenetre0;
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public void actionPerformed(ActionEvent evenement){
|
public void actionPerformed(ActionEvent evenement){
|
||||||
@ -82,7 +84,7 @@ public class observateurButtonEtText implements ActionListener {
|
|||||||
FileInputStream fichier = new FileInputStream("./sauvegarde.data");
|
FileInputStream fichier = new FileInputStream("./sauvegarde.data");
|
||||||
this.plat.reprendrePartie(fichier);
|
this.plat.reprendrePartie(fichier);
|
||||||
}catch(FileNotFoundException e1){
|
}catch(FileNotFoundException e1){
|
||||||
|
JOptionPane.showMessageDialog(this.fenetre, "sauvegarde introuvable");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(this.fonction==5){
|
if(this.fonction==5){
|
||||||
|
BIN
paintFond.class
@ -1,27 +0,0 @@
|
|||||||
//Clément martins
|
|
||||||
|
|
||||||
import java.awt.*;
|
|
||||||
import javax.swing.*;
|
|
||||||
|
|
||||||
public class paintFond extends JComponent {
|
|
||||||
private Image tuile= Toolkit.getDefaultToolkit().getImage("./tuile.jpg");
|
|
||||||
|
|
||||||
@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());
|
|
||||||
}
|
|
||||||
// maintenant on dessine ce que l'on veut
|
|
||||||
for(int y=0; y<this.getHeight(); y+=512){
|
|
||||||
for(int x=0; x<this.getWidth(); x+=512){
|
|
||||||
secondPinceau.drawImage(this.tuile, x, y, 512, 512, this);
|
|
||||||
// on peint l'image (512x512) tout les 512 pixel en fonction de la taille de la fenetre
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|