ajout de l'interface graphique du jeu avec les logiques clic droit et gauche et les actions des cases et mise a jour du makefile :D

This commit is contained in:
2026-04-06 20:18:32 +02:00
parent eb04d8bb9f
commit b76e9d03c2
6 changed files with 165 additions and 1 deletions
+105
View File
@@ -0,0 +1,105 @@
import javax.swing.*;
import java.awt.*;
// Fenetre principal du jeu (ou il y a la grille de boutons)
public class FenetreJeu {
private JFrame fenetre;
private JPanel panneauGrille;
private JButton[][] boutons;
private Grille grille;
public FenetreJeu(Grille g) {
this.grille = g;
int l = grille.getLigne();
int c = grille.getColonne();
fenetre = new JFrame("Demineur");
fenetre.setDefaultCloseOpertion(JFrame.EXIT_ON_CLOSE);
panneauGrille = new JPanel();
panneauGrille.setLayout(new GridLayout(l, c));
boutons = new JButton [l][c];
// creation de tous les boutons de la grille
for (int i = 0; i < l; i++) {
for (int j = 0; j < c; j++) {
boutons[i][j] = new JButton();
boutons[i][j].setPreferredSize(new Dimension(45, 45));
boutons[i][j].setFont(new Font("Arial", Font.BOLD, 16));
// ecouteur de clics
boutons[i][j].addMouseListener(new ActionCase(this, i, j));
panneauGrille.add(boutons[i][j]);
}
}
fenetre.add(panneauGrille);
fenetre.pack();
fenetre.setLocationRelativeTo(null);
fenetre.setVisible(true);
actualiserAffichage();
}
// logique du clic droit
public void clicDroit(int l, int c) {
Case caseCliquee = grille.getCase(l, c);
caseCliquee.boucleMarqueur();
actualiserAffichage();
}
// logique clic gauche
public void clicGauche(int l, int c) {
Case caseCliquee = grille.getCase(l, c);
// secu on ne peut pas cliquer une une case avec un marqueur etoile ou ?
if (caseCliquee.getMarqueur() != 0) return;
if (caseCliquee.getEstMinee()) {
System.out.println("BOOM ! Vous avez touché une mine... !");
caseCliquee.setEstRevelee(true);
} else {
caseCliquee.setEstRevelee(true);
}
actualiserAffichage();
}
// mise à jour du texte et couleurs de tous les boutons
public void actualiserAffichage() {
int l = grille.getLigne();
int c = grille.getColonne();
for (int i = 0; i < l; i++) {
for (int j = 0; j < c; j++) {
Case currentCase = grille.getCase(i, j);
JButton btn = boutons[i][j];
if (currentCase.getEstRevelee()) {
btn.setEnabled(false); // pour rendre le bouton incliquable
if (currentCase.getEstMinee()) {
btn.setText("¤");
btn.setBackground(Color.RED);
} else {
int nb = currentCase.getNbMinesautour();
if (nb > 0) {
btn.setText(String.valueOf(nb));
} else {
btn.setText(""); // case viiiide
}
}
} else {
btn.setEnabled(true);
int mq = currentCase.getMarqueur();
if (mq == 1) btn.setText("*");
else if (mq == 2) btn.setText("?");
else btn.setText("");
}
}
}
}
}