nettoyage et ajout de commentaires
This commit is contained in:
parent
df2232c155
commit
cb8c48d334
33
Case.java
33
Case.java
@ -2,49 +2,64 @@ import javax.swing.*;
|
|||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
|
|
||||||
public class Case extends JPanel {
|
public class Case extends JPanel {
|
||||||
|
// Definition d'attributs
|
||||||
private Dimension caseSize;
|
private Dimension caseSize;
|
||||||
private int entourage;
|
private int entourage;
|
||||||
private boolean visible;
|
private boolean visible;
|
||||||
private boolean minee;
|
private boolean minee;
|
||||||
private Listener listener;
|
private ListenerCase listener;
|
||||||
|
|
||||||
public Case(Dimension caseSize, boolean minee, int entourage) {
|
// Définition du constructeur
|
||||||
|
public Case(Dimension caseSize) {
|
||||||
super();
|
super();
|
||||||
this.entourage=entourage;
|
this.visible=false; // Par défaut la case est cachée
|
||||||
this.visible=false;
|
|
||||||
this.minee=minee;
|
|
||||||
this.caseSize= caseSize;
|
this.caseSize= caseSize;
|
||||||
|
|
||||||
this.setSize(caseSize);
|
this.setSize(caseSize);
|
||||||
|
|
||||||
this.listener = new Listener();
|
// On place un listener sur notre case pour qu'elle réagisse aux clicks du joueur
|
||||||
|
this.listener = new ListenerCase();
|
||||||
this.addMouseListener(this.listener);
|
this.addMouseListener(this.listener);
|
||||||
|
|
||||||
|
// Mise en page de la page et couleur par défaut
|
||||||
GridLayout unique = new GridLayout(1,1);
|
GridLayout unique = new GridLayout(1,1);
|
||||||
this.setLayout(unique);
|
this.setLayout(unique);
|
||||||
this.setBackground(new Color(70, 70, 70));
|
this.setBackground(new Color(70, 70, 70));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Méthode qui permet de montrer la case
|
||||||
public void setVisible(){
|
public void setVisible(){
|
||||||
this.visible=true;
|
this.visible=true;
|
||||||
|
|
||||||
|
// 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 Chiffre(entourage,caseSize));
|
this.add(new Entourage(this.entourage,caseSize));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// Mise à jour de l'affichage de la case
|
||||||
this.updateUI();
|
this.updateUI();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Méthode permettant de savoir si la case est cachée ou visible
|
||||||
public boolean getVisible(){
|
public boolean getVisible(){
|
||||||
return this.visible;
|
return this.visible;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Mathode pour déclarer la présence d'une mine sur une case
|
||||||
|
public void setMine(){
|
||||||
|
this.minee=true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Permet de savoir si une case est minée
|
||||||
public boolean getMine(){
|
public boolean getMine(){
|
||||||
return this.minee;
|
return this.minee;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Défini combien de mines entourent la case
|
||||||
|
public void setEntourage(int entourage){
|
||||||
|
this.entourage=entourage;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
18
Doute.java
Normal file
18
Doute.java
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
import javax.swing.JComponent;
|
||||||
|
import java.awt.*;
|
||||||
|
|
||||||
|
public class Doute extends JComponent {
|
||||||
|
private Dimension caseSize;
|
||||||
|
public Doute(Dimension caseSize) {
|
||||||
|
super();
|
||||||
|
this.caseSize=caseSize;
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
protected void paintComponent(Graphics pinceau) {
|
||||||
|
Graphics chiffre = pinceau.create();
|
||||||
|
Font font = new Font("Arial", Font.BOLD, caseSize.width*3/5);
|
||||||
|
chiffre.setFont(font);
|
||||||
|
chiffre.setColor(new Color(236, 0, 140));
|
||||||
|
chiffre.drawString("?",caseSize.width*3/10,caseSize.height*4/5);
|
||||||
|
}
|
||||||
|
}
|
21
Entourage.java
Normal file
21
Entourage.java
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
import javax.swing.JComponent;
|
||||||
|
import java.awt.*;
|
||||||
|
|
||||||
|
public class Entourage extends JComponent {
|
||||||
|
private int entourage;
|
||||||
|
private Dimension caseSize;
|
||||||
|
public Entourage(int entourage, Dimension caseSize) {
|
||||||
|
super();
|
||||||
|
this.entourage = entourage;
|
||||||
|
this.caseSize=caseSize;
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
protected void paintComponent(Graphics pinceau) {
|
||||||
|
Graphics chiffre = pinceau.create();
|
||||||
|
Font font = new Font("Arial", Font.BOLD, caseSize.width*2/5);
|
||||||
|
chiffre.setFont(font);
|
||||||
|
Color jaune = new Color(236, 214, 0);
|
||||||
|
chiffre.setColor(jaune);
|
||||||
|
chiffre.drawString(Integer.toString(this.entourage),caseSize.width*2/5,caseSize.height*3/5);
|
||||||
|
}
|
||||||
|
}
|
@ -12,18 +12,15 @@ public class FrameJeu{
|
|||||||
JFrame fenetre = new JFrame("Démineur - En Jeu");
|
JFrame fenetre = new JFrame("Démineur - En Jeu");
|
||||||
fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||||
|
|
||||||
// Couleur
|
|
||||||
Color vert = new Color(0, 236, 96);
|
|
||||||
|
|
||||||
// Mise en page
|
// Mise en page
|
||||||
fenetre.setLayout(new GridBagLayout());
|
fenetre.setLayout(new GridBagLayout());
|
||||||
GridBagConstraints miseEnPage = new GridBagConstraints();
|
GridBagConstraints miseEnPage = new GridBagConstraints();
|
||||||
|
|
||||||
|
|
||||||
// Création de la bannière (qui sera dans une autre classe)
|
// Création de la bannière (qui sera dans une autre classe plus tard)
|
||||||
Dimension grilleSize= grille.getGrilleSize();
|
Dimension grilleSize= grille.getGrilleSize();
|
||||||
JPanel banniere= new JPanel();
|
JPanel banniere= new JPanel();
|
||||||
banniere.setBackground(vert);
|
banniere.setBackground( new Color(0, 236, 96);
|
||||||
Dimension banniereSize=new Dimension(grilleSize.width,grilleSize.height/8);
|
Dimension banniereSize=new Dimension(grilleSize.width,grilleSize.height/8);
|
||||||
banniere.setSize(banniereSize);
|
banniere.setSize(banniereSize);
|
||||||
|
|
||||||
@ -49,7 +46,6 @@ public class FrameJeu{
|
|||||||
fenetre.setSize(grilleSize.width,grilleSize.height*9/8);
|
fenetre.setSize(grilleSize.width,grilleSize.height*9/8);
|
||||||
Dimension fenetreSize=fenetre.getSize();
|
Dimension fenetreSize=fenetre.getSize();
|
||||||
fenetre.setLocation(screenSize.width/2-(fenetreSize.width/2), screenSize.height/2-(fenetreSize.height/2));
|
fenetre.setLocation(screenSize.width/2-(fenetreSize.width/2), screenSize.height/2-(fenetreSize.height/2));
|
||||||
//fenetre.setResizable(false);
|
|
||||||
fenetre.setVisible(true);
|
fenetre.setVisible(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
273
Grille.java
273
Grille.java
@ -6,7 +6,7 @@ public class Grille extends JPanel {
|
|||||||
private Dimension grilleSize=new Dimension(0,0);
|
private Dimension grilleSize=new Dimension(0,0);
|
||||||
private Case[] plateau;
|
private Case[] plateau;
|
||||||
|
|
||||||
// On crée La grille de jeu
|
// Définition du constructeur qui correspond à une grille de jeu
|
||||||
public Grille(int lignes, int colonnes, int mines){
|
public Grille(int lignes, int colonnes, int mines){
|
||||||
|
|
||||||
// Découpage de l'espace en fonction des paramètres pour la mise en place de la grille
|
// Découpage de l'espace en fonction des paramètres pour la mise en place de la grille
|
||||||
@ -18,7 +18,8 @@ public class Grille extends JPanel {
|
|||||||
System.out.println("Taille de la Grille : "+grilleSize);
|
System.out.println("Taille de la Grille : "+grilleSize);
|
||||||
this.setLayout(damier);
|
this.setLayout(damier);
|
||||||
this.setSize(grilleSize);
|
this.setSize(grilleSize);
|
||||||
this.plateau= new Case[lignes*colonnes];
|
// On génère le plateau contenant les cases
|
||||||
|
GenererPlateau(lignes*colonnes, caseSize);
|
||||||
|
|
||||||
|
|
||||||
// Instalation des mines
|
// Instalation des mines
|
||||||
@ -38,241 +39,109 @@ public class Grille extends JPanel {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// On place maintenant les mines sur la plateau
|
// On place maintenant les mines sur la plateau en fixant la variable minee des cases à true
|
||||||
boolean[] minee = new boolean[lignes*colonnes];
|
|
||||||
for (int i=0; i<lignes*colonnes;i++){
|
for (int i=0; i<lignes*colonnes;i++){
|
||||||
for (int j=0;j<mines;j++){
|
for (int j=0;j<mines;j++){
|
||||||
if (caseMine[j]==i){
|
if (caseMine[j]==i){
|
||||||
minee[i]=true;
|
plateau[i].setMine();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Connaître le nombre de mines autour de la case
|
// On cherche à connaître le nombre de mines autour de chaque case
|
||||||
int[] entourage = new int[lignes*colonnes];
|
|
||||||
for (int i=0;i<lignes*colonnes;i++){
|
for (int i=0;i<lignes*colonnes;i++){
|
||||||
// Gestion des coins
|
int entourage = 0;
|
||||||
// Coin supérieur droit
|
// On vérifie pour chaque case qu'elle n'est pas déjà à l'extrémité du plateau où on cherche une case
|
||||||
if (i==colonnes-1){
|
// Mine au dessus à droite
|
||||||
|
if ((i>colonnes)&&(i%colonnes!=colonnes-1)){
|
||||||
for (int j=0;j<mines;j++){
|
for (int j=0;j<mines;j++){
|
||||||
// Si une mine est à gauche
|
|
||||||
if (caseMine[j]==i-1){
|
|
||||||
entourage[i]+=1;
|
|
||||||
}
|
|
||||||
// Si une mine est en dessous
|
|
||||||
if (caseMine[j]==i+colonnes){
|
|
||||||
entourage[i]+=1;
|
|
||||||
}
|
|
||||||
// Si une mine est en dessous à gauche
|
|
||||||
if (caseMine[j]==i+colonnes-1){
|
|
||||||
entourage[i]+=1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Coin suppérieur gauche
|
|
||||||
else if (i==0){
|
|
||||||
for (int j=0;j<mines;j++){
|
|
||||||
// Si une mine est à droite
|
|
||||||
if (caseMine[j]==i+1){
|
|
||||||
entourage[i]+=1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Si une mine est en dessous
|
|
||||||
if (caseMine[j]==i+colonnes){
|
|
||||||
entourage[i]+=1;
|
|
||||||
}
|
|
||||||
// Si une mine est en dessous à droite
|
|
||||||
if (caseMine[j]==i+colonnes+1){
|
|
||||||
entourage[i]+=1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Coin inférieur droit
|
|
||||||
else if (i==lignes*colonnes-1){
|
|
||||||
for (int j=0;j<mines;j++){
|
|
||||||
// Si une mine est à gauche
|
|
||||||
if (caseMine[j]==i-1){
|
|
||||||
entourage[i]+=1;
|
|
||||||
}
|
|
||||||
// Si une mine est au dessus
|
|
||||||
if (caseMine[j]==i-colonnes){
|
|
||||||
entourage[i]+=1;
|
|
||||||
}
|
|
||||||
// Si une mine est au dessus à gauche
|
|
||||||
if (caseMine[j]==i-colonnes-1){
|
|
||||||
entourage[i]+=1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Coin inférieur gauche
|
|
||||||
else if (i==lignes*colonnes-colonnes){
|
|
||||||
for (int j=0;j<mines;j++){
|
|
||||||
// Si une mine est à droite
|
|
||||||
if (caseMine[j]==i+1){
|
|
||||||
entourage[i]+=1;
|
|
||||||
}
|
|
||||||
// Si une mine est au dessus
|
|
||||||
if (caseMine[j]==i-colonnes){
|
|
||||||
entourage[i]+=1;
|
|
||||||
}
|
|
||||||
// Si une mine est au dessus à droite
|
|
||||||
if (caseMine[j]==i-colonnes+1){
|
if (caseMine[j]==i-colonnes+1){
|
||||||
entourage[i]+=1;
|
entourage+=1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Si la mine est tout en haut
|
// Mine au dessus à gauche
|
||||||
else if (i<colonnes){
|
if ((i>colonnes)&&(i%colonnes!=0)){
|
||||||
for (int j=0;j<mines;j++){
|
for (int j=0;j<mines;j++){
|
||||||
// Si une mine est à droite
|
|
||||||
if (caseMine[j]==i+1){
|
|
||||||
entourage[i]+=1;
|
|
||||||
}
|
|
||||||
// Si une mine est à gauche
|
|
||||||
if (caseMine[j]==i-1){
|
|
||||||
entourage[i]+=1;
|
|
||||||
}
|
|
||||||
// Si une mine est en dessous
|
|
||||||
if (caseMine[j]==i+colonnes){
|
|
||||||
entourage[i]+=1;
|
|
||||||
}
|
|
||||||
// Si une mine est en dessous à droite
|
|
||||||
if (caseMine[j]==i+colonnes+1){
|
|
||||||
entourage[i]+=1;
|
|
||||||
}
|
|
||||||
// Si une mine est en dessous à gauche
|
|
||||||
if (caseMine[j]==i+colonnes-1){
|
|
||||||
entourage[i]+=1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Si la mine est tout en bas
|
|
||||||
else if (i>lignes*colonnes-colonnes){ // Vérifier la condition
|
|
||||||
for (int j=0;j<mines;j++){
|
|
||||||
// Si une mine est à droite
|
|
||||||
if (caseMine[j]==i+1){
|
|
||||||
entourage[i]+=1;
|
|
||||||
}
|
|
||||||
// Si une mine est à gauche
|
|
||||||
if (caseMine[j]==i-1){
|
|
||||||
entourage[i]+=1;
|
|
||||||
}
|
|
||||||
// Si une mine est au dessus
|
|
||||||
if (caseMine[j]==i-colonnes){
|
|
||||||
entourage[i]+=1;
|
|
||||||
}
|
|
||||||
// Si une mine est au dessus à droite
|
|
||||||
if (caseMine[j]==i-colonnes+1){
|
|
||||||
entourage[i]+=1;
|
|
||||||
}
|
|
||||||
// Si une mine est au dessus à gauche
|
|
||||||
if (caseMine[j]==i-colonnes-1){
|
if (caseMine[j]==i-colonnes-1){
|
||||||
entourage[i]+=1;
|
entourage+=1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Si la mine est tout à droite
|
// Mine en dessous à droite
|
||||||
else if (i%colonnes==colonnes-1){
|
if ((i<=lignes*colonnes-colonnes)&&(i%colonnes!=colonnes-1)){
|
||||||
for (int j=0;j<mines;j++){
|
for (int j=0;j<mines;j++){
|
||||||
// Si une mine est à gauche
|
|
||||||
if (caseMine[j]==i-1){
|
|
||||||
entourage[i]+=1;
|
|
||||||
}
|
|
||||||
// Si une mine est au dessus
|
|
||||||
if (caseMine[j]==i-colonnes){
|
|
||||||
entourage[i]+=1;
|
|
||||||
}
|
|
||||||
// Si une mine est au dessus à gauche
|
|
||||||
if (caseMine[j]==i-colonnes-1){
|
|
||||||
entourage[i]+=1;
|
|
||||||
}
|
|
||||||
// Si une mine est en dessous
|
|
||||||
if (caseMine[j]==i+colonnes){
|
|
||||||
entourage[i]+=1;
|
|
||||||
}
|
|
||||||
// Si une mine est en dessous à gauche
|
|
||||||
if (caseMine[j]==i+colonnes-1){
|
|
||||||
entourage[i]+=1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Si la mine est tout à gauche
|
|
||||||
else if (i%colonnes==0){
|
|
||||||
for (int j=0;j<mines;j++){
|
|
||||||
// Si une mine est à droite
|
|
||||||
if (caseMine[j]==i+1){
|
|
||||||
entourage[i]+=1;
|
|
||||||
}
|
|
||||||
// Si une mine est au dessus
|
|
||||||
if (caseMine[j]==i-colonnes){
|
|
||||||
entourage[i]+=1;
|
|
||||||
}
|
|
||||||
// Si une mine est au dessus à droite
|
|
||||||
if (caseMine[j]==i-colonnes+1){
|
|
||||||
entourage[i]+=1;
|
|
||||||
}
|
|
||||||
// Si une mine est en dessous
|
|
||||||
if (caseMine[j]==i+colonnes){
|
|
||||||
entourage[i]+=1;
|
|
||||||
}
|
|
||||||
// Si une mine est en dessous à droite
|
|
||||||
if (caseMine[j]==i+colonnes+1){
|
if (caseMine[j]==i+colonnes+1){
|
||||||
entourage[i]+=1;
|
entourage+=1;
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
for (int j=0;j<mines;j++){
|
|
||||||
// Si une mine est à droite
|
|
||||||
if (caseMine[j]==i+1){
|
|
||||||
entourage[i]+=1;
|
|
||||||
}
|
|
||||||
// Si une mine est à gauche
|
|
||||||
if (caseMine[j]==i-1){
|
|
||||||
entourage[i]+=1;
|
|
||||||
}
|
|
||||||
// Si une mine est au dessus
|
|
||||||
if (caseMine[j]==i-colonnes){
|
|
||||||
entourage[i]+=1;
|
|
||||||
}
|
|
||||||
// Si une mine est au dessus à droite
|
|
||||||
if (caseMine[j]==i-colonnes+1){
|
|
||||||
entourage[i]+=1;
|
|
||||||
}
|
|
||||||
// Si une mine est au dessus à gauche
|
|
||||||
if (caseMine[j]==i-colonnes-1){
|
|
||||||
entourage[i]+=1;
|
|
||||||
}
|
|
||||||
// Si une mine est en dessous
|
|
||||||
if (caseMine[j]==i+colonnes){
|
|
||||||
entourage[i]+=1;
|
|
||||||
}
|
|
||||||
// Si une mine est en dessous à droite
|
|
||||||
if (caseMine[j]==i+colonnes+1){
|
|
||||||
entourage[i]+=1;
|
|
||||||
}
|
|
||||||
// Si une mine est en dessous à gauche
|
|
||||||
if (caseMine[j]==i+colonnes-1){
|
|
||||||
entourage[i]+=1;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// Mine en bas à gauche
|
||||||
|
if ((i!=lignes*colonnes-colonnes)&&(i%colonnes!=0)){
|
||||||
|
for (int j=0;j<mines;j++){
|
||||||
|
if (caseMine[j]==i+colonnes-1){
|
||||||
|
entourage+=1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Mine au dessus
|
||||||
|
if (i>colonnes){
|
||||||
|
for (int j=0;j<mines;j++){
|
||||||
|
if (caseMine[j]==i-colonnes){
|
||||||
|
entourage+=1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Mine en dessous
|
||||||
|
if (i<=lignes*colonnes-colonnes){
|
||||||
|
for (int j=0;j<mines;j++){
|
||||||
|
if (caseMine[j]==i+colonnes){
|
||||||
|
entourage+=1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Mine à droite
|
||||||
|
if (i%colonnes!=colonnes-1){
|
||||||
|
for (int j=0;j<mines;j++){
|
||||||
|
if (caseMine[j]==i+1){
|
||||||
|
entourage+=1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Mine à gauche
|
||||||
|
if (i%colonnes!=0){
|
||||||
|
for (int j=0;j<mines;j++){
|
||||||
|
if (caseMine[j]==i-1){
|
||||||
|
entourage+=1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
plateau[i].setEntourage(entourage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// On place les cases à leur état actuel dans la grille
|
// On place les cases à leur état actuel dans la grille
|
||||||
AfficherPlateau(lignes*colonnes, caseSize, entourage, minee);
|
AfficherPlateau(lignes*colonnes);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Méthode pour Afficher le plateau
|
// Méthode pour Génerer le plateau
|
||||||
protected void AfficherPlateau(int taille, Dimension caseSize, int[] entourage, boolean[] minee){
|
protected void GenererPlateau(int taille, Dimension caseSize){
|
||||||
|
this.plateau= new Case[taille];
|
||||||
for (int i=0;i<taille;i++){
|
for (int i=0;i<taille;i++){
|
||||||
this.plateau[i]= new Case(caseSize,minee[i],entourage[i]);
|
this.plateau[i]= new Case(caseSize);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Méthode pour Afficher le plateau
|
||||||
|
protected void AfficherPlateau(int taille){
|
||||||
|
for (int i=0;i<taille;i++){
|
||||||
|
this.plateau[i].setVisible();
|
||||||
this.add(this.plateau[i]);
|
this.add(this.plateau[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Méthode pour obtenir la taille de la grille de jeu
|
// Méthode pour obtenir la taille de la grille de jeu
|
||||||
public Dimension getGrilleSize() {
|
public Dimension getGrilleSize(){
|
||||||
return grilleSize;
|
return grilleSize;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
51
ListenerCase.java
Normal file
51
ListenerCase.java
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
import java.awt.event.*;
|
||||||
|
import java.awt.*;
|
||||||
|
|
||||||
|
public class ListenerCase implements MouseListener{
|
||||||
|
private int marquage=0;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
// Méthode qui va servir à détecter le click de la souris
|
||||||
|
public void mouseClicked(MouseEvent evenement){
|
||||||
|
Case panel = (Case)evenement.getSource();
|
||||||
|
// Si le joueur clique gauche, tant que la case n'est pas marquée, elle sera révélée
|
||||||
|
if ((evenement.getButton() == MouseEvent.BUTTON1)&&(panel.getVisible()==false)&&(this.marquage==0)){
|
||||||
|
panel.setVisible();
|
||||||
|
if (panel.getMine()==true){
|
||||||
|
System.out.println("Perdu!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Si le joueur clique droit, la case sera marquée
|
||||||
|
if (evenement.getButton() == MouseEvent.BUTTON3) {
|
||||||
|
// Au premier click, on place une étoile pour indiquer la présence d'une mine
|
||||||
|
if (this.marquage==0){
|
||||||
|
panel.add(new Etoile(panel.getSize()), BorderLayout.CENTER);
|
||||||
|
this.marquage=1;
|
||||||
|
}
|
||||||
|
// Au second, on met un point d'interrogation en cas de soupçon pour aider à la réflexion
|
||||||
|
else if (this.marquage==1){
|
||||||
|
panel.removeAll();
|
||||||
|
panel.add(new Doute(panel.getSize()), BorderLayout.CENTER);
|
||||||
|
this.marquage=2;
|
||||||
|
}
|
||||||
|
// Au troisième click on efface tout marquage
|
||||||
|
else if (this.marquage==2){
|
||||||
|
panel.removeAll();
|
||||||
|
this.marquage=0;
|
||||||
|
}
|
||||||
|
// On met à jour l'affichage de la case cliquée
|
||||||
|
panel.updateUI();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Les autres méthodes de l'interface n'interviennent pas
|
||||||
|
public void mouseEntered(MouseEvent evenement){
|
||||||
|
}
|
||||||
|
public void mouseExited(MouseEvent evenement){
|
||||||
|
}
|
||||||
|
public void mousePressed(MouseEvent evenement){
|
||||||
|
}
|
||||||
|
public void mouseReleased(MouseEvent evenement){
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user