diff --git a/CASE/Case.class b/CASE/Case.class index 8dbc20f..e663edb 100644 Binary files a/CASE/Case.class and b/CASE/Case.class differ diff --git a/CASE/Case.java b/CASE/Case.java index 167e530..60cf67b 100644 --- a/CASE/Case.java +++ b/CASE/Case.java @@ -46,6 +46,12 @@ public class Case extends JComponent{ return false; } } + public boolean getVisibiliter(){ + return this.visibilite; + } + public int getVoisin(){ + return this.voisin; + } @Override protected void paintComponent(Graphics pinceau) { // obligatoire : on crée un nouveau pinceau pour pouvoir le modifier plus tard @@ -57,13 +63,19 @@ public class Case extends JComponent{ secondPinceau.fillRect(0, 0, this.getWidth(), this.getHeight()); } if(this.visibilite==false){ - secondPinceau.setColor(new Color(100,100,100)); + secondPinceau.setColor(new Color(0,0,0)); secondPinceau.fillRect(0, 0, this.getWidth(), this.getHeight()); - secondPinceau.setColor(new Color(200, 200, 200)); + secondPinceau.setColor(new Color(100, 100, 100)); secondPinceau.fillRect(this.getWidth()/20, this.getHeight()/20, this.getWidth()/20*18, this.getHeight()/20*18); + if(this.suspition==1){ + secondPinceau.drawImage(this.etoile, this.getWidth()/20*5, this.getHeight()/20*5, this.getWidth()/20*10, this.getHeight()/20*10 ,this); + } + if(this.suspition==2){ + secondPinceau.drawImage(this.interogation, this.getWidth()/20*5, this.getHeight()/20*5, this.getWidth()/20*10, this.getHeight()/20*10 ,this); + } } if(this.visibilite==true){ - secondPinceau.setColor(new Color(100,100,100)); + 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); @@ -71,18 +83,11 @@ public class Case extends JComponent{ if(this.voisin>0){ secondPinceau.drawString(String.valueOf(voisin), this.getWidth()/2, this.getHeight()/2); } - } - - if(this.suspition==1 && this.visibilite==false){ - secondPinceau.drawImage(this.etoile, this.getWidth()/20*5, this.getHeight()/20*5, this.getWidth()/20*10, this.getHeight()/20*10 ,this); - } - if(this.suspition==2 && this.visibilite==false){ - secondPinceau.drawImage(this.interogation, this.getWidth()/20*5, this.getHeight()/20*5, this.getWidth()/20*10, this.getHeight()/20*10 ,this); - } - if(this.bombe==true && this.visibilite==true){ - secondPinceau.setColor(new Color(255,0,125)); - secondPinceau.fillRect(this.getWidth()/20, this.getHeight()/20, this.getWidth()/20*18, this.getHeight()/20*18); - secondPinceau.drawImage(this.imgboombe, this.getWidth()/20*5, this.getHeight()/20*5, this.getWidth()/20*10, this.getHeight()/20*10 ,this); + if(this.bombe==true){ + secondPinceau.setColor(new Color(255,0,125)); + secondPinceau.fillRect(this.getWidth()/20, this.getHeight()/20, this.getWidth()/20*18, this.getHeight()/20*18); + secondPinceau.drawImage(this.imgboombe, this.getWidth()/20*5, this.getHeight()/20*5, this.getWidth()/20*10, this.getHeight()/20*10 ,this); + } } } } \ No newline at end of file diff --git a/CASE/main_ex.class b/CASE/main_ex.class index c21b85b..ee5ee76 100644 Binary files a/CASE/main_ex.class and b/CASE/main_ex.class differ diff --git a/CASE/main_ex.java b/CASE/main_ex.java index 1087e33..f725679 100644 --- a/CASE/main_ex.java +++ b/CASE/main_ex.java @@ -10,25 +10,27 @@ public class main_ex{ public static void main(String[] Args){ // on initialise une fenettre JFrame fenetre = new JFrame("Démineur"); + int ligne=8; + int collonne=10; fenetre.setLocation(0,0); //on choisi une taille arbitraire fenetre.setSize(1500,800); //nous utiliserons un gestionnaire GridLayout - GridLayout grille = new GridLayout(14,8); + GridLayout grille = new GridLayout(ligne,collonne); fenetre.setLayout(grille); // l'application ne se fermera que si on clique sur fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); fenetre.setVisible(true); - Case[][] tab = new Case[14][8]; - for(int i=0; i<14; i++){ - for(int t=0; t<8; t++){ + Case[][] tab = new Case[ligne][collonne]; + 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){ + this.haut(ligneDelta-1, collonneDelta); + } + if(ligneDelta0 && this.tableau[ligneDelta][collonneDelta-1].getVisibiliter()==false && this.tableau[ligneDelta][collonneDelta-1].getVoisin()==0 && this.tableau[ligneDelta][collonneDelta-1].getBombe()==false){ + this.gauche(ligneDelta, collonneDelta-1); + } + 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.diaghautgauche(ligneDelta-1, 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.diaghautdroite(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].getBombe()==false){ + this.haut(ligneDelta-1, collonneDelta); + } + if(collonneDelta0 && this.tableau[ligneDelta][collonneDelta-1].getVisibiliter()==false && this.tableau[ligneDelta][collonneDelta-1].getVoisin()==0 && this.tableau[ligneDelta][collonneDelta-1].getBombe()==false){ + this.gauche(ligneDelta, collonneDelta-1); + } + 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.diaghautgauche(ligneDelta-1, 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.diaghautdroite(ligneDelta-1, collonneDelta+1); + } + if(collonneDelta0 && this.tableau[ligneDelta][collonneDelta-1].getVisibiliter()==false && this.tableau[ligneDelta][collonneDelta-1].getVoisin()==0 && this.tableau[ligneDelta][collonneDelta-1].getBombe()==false){ + this.gauche(ligneDelta, collonneDelta-1); + } + 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.diaghautgauche(ligneDelta-1, 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.diaghautdroite(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].getBombe()==false){ + this.haut(ligneDelta-1, collonneDelta); + } + if(ligneDelta0 && this.tableau[ligneDelta][collonneDelta-1].getVisibiliter()==false && this.tableau[ligneDelta][collonneDelta-1].getVoisin()==0 && this.tableau[ligneDelta][collonneDelta-1].getBombe()==false){ + this.gauche(ligneDelta, collonneDelta-1); + } + 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.diaghautgauche(ligneDelta-1, 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.diaghautdroite(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].getBombe()==false){ + this.haut(ligneDelta-1, collonneDelta); + } + if(ligneDelta0 && 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.diaghautgauche(ligneDelta-1, 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.diaghautdroite(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].getBombe()==false){ + this.haut(ligneDelta-1, collonneDelta); + } + if(ligneDelta0 && this.tableau[ligneDelta][collonneDelta-1].getVisibiliter()==false && this.tableau[ligneDelta][collonneDelta-1].getVoisin()==0 && this.tableau[ligneDelta][collonneDelta-1].getBombe()==false){ + this.gauche(ligneDelta, collonneDelta-1); + } + 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.diaghautgauche(ligneDelta-1, 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.diaghautdroite(ligneDelta-1, collonneDelta+1); + } + } + private void diagbasgauche(int ligneDelta, int collonneDelta){ + this.tableau[ligneDelta][collonneDelta].setVisibiliter(true); + this.tableau[ligneDelta][collonneDelta].repaint(); + this.affichageVoisinEvident(ligneDelta, collonneDelta); + if(ligneDelta>0 && this.tableau[ligneDelta-1][collonneDelta].getVisibiliter()==false && this.tableau[ligneDelta-1][collonneDelta].getVoisin()==0 && this.tableau[ligneDelta-1][collonneDelta].getBombe()==false){ + this.haut(ligneDelta-1, collonneDelta); + } + if(ligneDelta0 && this.tableau[ligneDelta][collonneDelta-1].getVisibiliter()==false && this.tableau[ligneDelta][collonneDelta-1].getVoisin()==0 && this.tableau[ligneDelta][collonneDelta-1].getBombe()==false){ + this.gauche(ligneDelta, collonneDelta-1); + } + 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.diaghautgauche(ligneDelta-1, collonneDelta-1); + } + if(collonneDelta>0 && ligneDelta0 && this.tableau[ligneDelta-1][collonneDelta].getVisibiliter()==false && this.tableau[ligneDelta-1][collonneDelta].getVoisin()==0 && this.tableau[ligneDelta-1][collonneDelta].getBombe()==false){ + this.haut(ligneDelta-1, collonneDelta); + } + if(ligneDelta0 && this.tableau[ligneDelta][collonneDelta-1].getVisibiliter()==false && this.tableau[ligneDelta][collonneDelta-1].getVoisin()==0 && this.tableau[ligneDelta][collonneDelta-1].getBombe()==false){ + this.gauche(ligneDelta, collonneDelta-1); + } + 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.diaghautgauche(ligneDelta-1, collonneDelta-1); + } + if(collonneDelta0 && 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.diaghautdroite(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].getBombe()==false){ + this.haut(ligneDelta-1, collonneDelta); + } + if(ligneDelta0 && this.tableau[ligneDelta][collonneDelta-1].getVisibiliter()==false && this.tableau[ligneDelta][collonneDelta-1].getVoisin()==0 && this.tableau[ligneDelta][collonneDelta-1].getBombe()==false){ + this.gauche(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.diaghautdroite(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].getBombe()==false){ + this.tableau[ligneDelta-1][collonneDelta].setVisibiliter(true); + this.tableau[ligneDelta-1][collonneDelta].repaint(); + } + if(ligneDelta0 && this.tableau[ligneDelta+1][collonneDelta].getBombe()==false){ + this.tableau[ligneDelta+1][collonneDelta].setVisibiliter(true); + this.tableau[ligneDelta+1][collonneDelta].repaint(); + } + if(collonneDelta0 && this.tableau[ligneDelta][collonneDelta+1].getBombe()==false){ + 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].getBombe()==false){ + 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].getBombe()==false){ + 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].getBombe()==false){ + 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].getBombe()==false){ + this.tableau[ligneDelta-1][collonneDelta+1].setVisibiliter(true); + this.tableau[ligneDelta-1][collonneDelta+1].repaint(); + } + if(collonneDelta0 && this.tableau[ligneDelta+1][collonneDelta+1].getBombe()==false){ + this.tableau[ligneDelta+1][collonneDelta+1].setVisibiliter(true); + this.tableau[ligneDelta+1][collonneDelta+1].repaint(); + } + } } \ No newline at end of file