entourage case 0 visible

This commit is contained in:
Haïssous Kayyissa 2022-05-10 11:10:31 +02:00
parent 63642b7146
commit bd8d725cd1
5 changed files with 91 additions and 15 deletions

View File

@ -33,20 +33,26 @@ public class Case extends JPanel {
// Méthode qui permet de montrer la case, et de la considérer comme déminée // Méthode qui permet de montrer la case, et de la considérer comme déminée
public void setVisible(){ public void setVisible(){
this.visible=true;
this.deminee=true; if (this.visible==false){
this.visible = true;
this.deminee = true;
// On affiche une mine si la case est minée, sinon le nombre de mines autour d'elle // On affiche une mine si la case est minée, sinon le nombre de mines autour d'elle
if (this.minee == true) { if (this.minee == true) {
this.setBackground(new Color(236, 0, 140)); this.setBackground(new Color(236, 0, 140));
} else { } else {
this.setBackground(new Color(80, 80, 80)); this.setBackground(new Color(80, 80, 80));
if (this.entourage>0){ if (this.entourage > 0) {
this.add(new Entourage(this.entourage,this.getSize())); this.add(new Entourage(this.entourage, this.getSize()));
} }
} }
// Mise à jour de l'affichage de la case // Mise à jour de l'affichage de la case
this.updateUI(); this.updateUI();
if (this.getEntourage() == 0) {
this.grille.setEntourageVisible(this);
}
}
} }
// Méthode permettant de dire si la case est cachée ou visible // Méthode permettant de dire si la case est cachée ou visible
@ -69,10 +75,19 @@ public class Case extends JPanel {
this.entourage=entourage; this.entourage=entourage;
} }
// Renvoi l'entourage de la case
public int getEntourage(){
return this.entourage;
}
// Permet d'acceder à la grille sur laquelle est la case
public Grille getGrille(){
return this.grille;
}
// Méthode pour savoir si le joueur pense que la case est minée // Méthode pour savoir si le joueur pense que la case est minée
public void setReperee(boolean reperee){ public void setReperee(boolean reperee){
this.reperee=reperee; this.reperee=reperee;
this.add(new Etoile(this.getSize()), BorderLayout.CENTER);
if ((reperee)&&(minee)){ if ((reperee)&&(minee)){
this.deminee=true; this.deminee=true;
} }

View File

@ -6,6 +6,8 @@ public class Grille extends JPanel {
private EtatPartie banniere; private EtatPartie banniere;
private Dimension grilleSize=new Dimension(0,0); private Dimension grilleSize=new Dimension(0,0);
private Case[] plateau; private Case[] plateau;
private int lignes;
private int colonnes;
private int taille; private int taille;
private int mines; private int mines;
private int minesLeft; private int minesLeft;
@ -20,6 +22,8 @@ public class Grille extends JPanel {
GridLayout damier = new GridLayout(lignes,colonnes); GridLayout damier = new GridLayout(lignes,colonnes);
this.setLayout(damier); this.setLayout(damier);
this.setSize(grilleSize); this.setSize(grilleSize);
this.lignes=lignes;
this.colonnes=colonnes;
this.taille=lignes*colonnes; this.taille=lignes*colonnes;
this.mines=mines; this.mines=mines;
this.banniere=banniere; this.banniere=banniere;
@ -82,7 +86,7 @@ public class Grille extends JPanel {
} }
} }
// Mine en bas à gauche // Mine en bas à gauche
if ((i!=taille-colonnes)&&(i%colonnes!=0)){ if ((i<=taille-colonnes)&&(i%colonnes!=0)){
for (int j=0;j<mines;j++){ for (int j=0;j<mines;j++){
if (caseMine[j]==i+colonnes-1){ if (caseMine[j]==i+colonnes-1){
entourage+=1; entourage+=1;
@ -160,4 +164,60 @@ public class Grille extends JPanel {
} }
this.banniere.setMinesLeft(this.minesLeft); this.banniere.setMinesLeft(this.minesLeft);
} }
// Méthode pour rendre visibles les cases autour d'un 0
public void setEntourageVisible(Case panel){
for(int i=0; i<this.taille;i++){
if (plateau[i]==panel){
// Mine au dessus à droite
if ((i>colonnes)&&(i%colonnes!=colonnes-1)){
for (int j=0;j<mines;j++){
plateau[i-colonnes+1].setVisible();
}
}
// Mine au dessus à gauche
if ((i>colonnes)&&(i%colonnes!=0)){
for (int j=0;j<mines;j++){
plateau[i-colonnes-1].setVisible();
}
}
// Mine en dessous à droite
if ((i<taille-colonnes)&&(i%colonnes!=colonnes-1)){
for (int j=0;j<mines;j++){
plateau[i+colonnes+1].setVisible();
}
}
// Mine en bas à gauche
if ((i<taille-colonnes)&&(i%colonnes!=0)){
for (int j=0;j<mines;j++){
plateau[i+colonnes-1].setVisible();
}
}
// Mine au dessus
if (i>colonnes){
for (int j=0;j<mines;j++){
plateau[i-colonnes].setVisible();
}
}
// Mine en dessous
if (i<taille-colonnes){
for (int j=0;j<mines;j++){
plateau[i+colonnes].setVisible();
}
}
// Mine à droite
if (i%colonnes!=colonnes-1){
for (int j=0;j<mines;j++){
plateau[i+1].setVisible();
}
}
// Mine à gauche
if (i%colonnes!=0){
for (int j=0;j<mines;j++){
plateau[i-1].setVisible();
}
}
}
}
}
} }

View File

@ -18,7 +18,9 @@ public class ListenerCase implements MouseListener{
// Si le joueur clique droit, la case sera marquée // Si le joueur clique droit, la case sera marquée
if ((evenement.getButton() == MouseEvent.BUTTON3)&&(panel.getVisible()==false)) { if ((evenement.getButton() == MouseEvent.BUTTON3)&&(panel.getVisible()==false)) {
// Au premier click, on place une étoile pour indiquer la présence d'une mine // Au premier click, on place une étoile pour indiquer la présence d'une mine
// TODO: Regarder switch
if (this.marquage==0){ if (this.marquage==0){
panel.add(new Etoile(panel.getSize()), BorderLayout.CENTER);
panel.setReperee(true); panel.setReperee(true);
this.marquage=1; this.marquage=1;
} }

View File

@ -17,6 +17,5 @@ public class MineLeft extends JComponent {
chiffre.setFont(font); chiffre.setFont(font);
chiffre.setColor(new Color(0, 22, 236)); chiffre.setColor(new Color(0, 22, 236));
chiffre.drawString(Integer.toString(this.minesLeft),banniereSize.width*1/5,banniereSize.height*2/3); chiffre.drawString(Integer.toString(this.minesLeft),banniereSize.width*1/5,banniereSize.height*2/3);
System.out.println(this.getSize());
} }
} }

View File

@ -1,5 +1,5 @@
public class Test { public class Test {
public static void main(String[] args) { public static void main(String[] args) {
new FrameJeu(15,20,40); new FrameJeu(15,20,10);
} }
} }