2022-04-28 16:50:06 +02:00
|
|
|
import javax.swing.*;
|
|
|
|
import java.awt.*;
|
|
|
|
|
2022-04-30 16:38:56 +02:00
|
|
|
public class Case extends JPanel {
|
2022-05-04 23:03:02 +02:00
|
|
|
// Definition d'attributs
|
2022-05-01 13:41:44 +02:00
|
|
|
private Dimension caseSize;
|
2022-04-29 10:03:05 +02:00
|
|
|
private int entourage;
|
|
|
|
private boolean visible;
|
|
|
|
private boolean minee;
|
2022-05-04 23:03:02 +02:00
|
|
|
private ListenerCase listener;
|
2022-04-28 16:50:06 +02:00
|
|
|
|
2022-05-04 23:03:02 +02:00
|
|
|
// Définition du constructeur
|
|
|
|
public Case(Dimension caseSize) {
|
2022-04-28 17:57:18 +02:00
|
|
|
super();
|
2022-05-04 23:03:02 +02:00
|
|
|
this.visible=false; // Par défaut la case est cachée
|
2022-05-01 13:41:44 +02:00
|
|
|
this.caseSize= caseSize;
|
|
|
|
this.setSize(caseSize);
|
|
|
|
|
2022-05-04 23:03:02 +02:00
|
|
|
// On place un listener sur notre case pour qu'elle réagisse aux clicks du joueur
|
|
|
|
this.listener = new ListenerCase();
|
2022-05-01 13:41:44 +02:00
|
|
|
this.addMouseListener(this.listener);
|
|
|
|
|
2022-05-04 23:03:02 +02:00
|
|
|
// Mise en page de la page et couleur par défaut
|
2022-04-29 10:03:05 +02:00
|
|
|
GridLayout unique = new GridLayout(1,1);
|
2022-05-01 13:41:44 +02:00
|
|
|
this.setLayout(unique);
|
2022-05-04 19:53:32 +02:00
|
|
|
this.setBackground(new Color(70, 70, 70));
|
2022-05-01 13:41:44 +02:00
|
|
|
}
|
|
|
|
|
2022-05-04 23:03:02 +02:00
|
|
|
// Méthode qui permet de montrer la case
|
2022-05-01 13:41:44 +02:00
|
|
|
public void setVisible(){
|
|
|
|
this.visible=true;
|
2022-05-04 23:03:02 +02:00
|
|
|
|
|
|
|
// On affiche une mine si la case est minée, sinon le nombre de mines autour d'elle
|
2022-05-04 19:53:32 +02:00
|
|
|
if (this.minee == true) {
|
|
|
|
this.setBackground(new Color(236, 0, 140));
|
|
|
|
} else {
|
|
|
|
this.setBackground(new Color(80, 80, 80));
|
|
|
|
if (this.entourage>0){
|
2022-05-04 23:03:02 +02:00
|
|
|
this.add(new Entourage(this.entourage,caseSize));
|
2022-05-04 19:53:32 +02:00
|
|
|
}
|
|
|
|
}
|
2022-05-04 23:03:02 +02:00
|
|
|
// Mise à jour de l'affichage de la case
|
2022-05-01 13:41:44 +02:00
|
|
|
this.updateUI();
|
|
|
|
}
|
2022-04-28 16:50:06 +02:00
|
|
|
|
2022-05-04 23:03:02 +02:00
|
|
|
// Méthode permettant de savoir si la case est cachée ou visible
|
2022-05-01 13:41:44 +02:00
|
|
|
public boolean getVisible(){
|
|
|
|
return this.visible;
|
|
|
|
}
|
|
|
|
|
2022-05-04 23:03:02 +02:00
|
|
|
// Mathode pour déclarer la présence d'une mine sur une case
|
|
|
|
public void setMine(){
|
|
|
|
this.minee=true;
|
|
|
|
}
|
2022-04-28 17:57:18 +02:00
|
|
|
|
2022-05-04 23:03:02 +02:00
|
|
|
// Permet de savoir si une case est minée
|
2022-05-01 13:41:44 +02:00
|
|
|
public boolean getMine(){
|
|
|
|
return this.minee;
|
2022-04-28 17:57:18 +02:00
|
|
|
}
|
2022-05-04 23:03:02 +02:00
|
|
|
|
|
|
|
// Défini combien de mines entourent la case
|
|
|
|
public void setEntourage(int entourage){
|
|
|
|
this.entourage=entourage;
|
|
|
|
}
|
2022-04-28 16:50:06 +02:00
|
|
|
}
|