//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;i0 && 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(ligneDelta0 && 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 && ligneDelta0 && 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(collonneDelta0 && 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(ligneDelta0){ this.tableau[ligneDelta+1][collonneDelta].setVisibiliter(true); this.tableau[ligneDelta+1][collonneDelta].repaint(); } if(collonneDelta0){ 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 && ligneDelta0){ this.tableau[ligneDelta+1][collonneDelta-1].setVisibiliter(true); this.tableau[ligneDelta+1][collonneDelta-1].repaint(); } if(collonneDelta0 && 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(collonneDelta0){ this.tableau[ligneDelta+1][collonneDelta+1].setVisibiliter(true); this.tableau[ligneDelta+1][collonneDelta+1].repaint(); } } }