fin mode de jeu a peu pres

This commit is contained in:
lecointre
2026-04-03 18:41:45 +02:00
parent 596a83a39b
commit dc266ea40f
3 changed files with 201 additions and 16 deletions
+59 -7
View File
@@ -1,15 +1,18 @@
import javax.swing.*;
import java.awt.*;
/**
* Fenêtre principale pendant une partie de Démineur.
*/
public class FenetreJeu extends JFrame {
private Grille grille;
private JButton[][] boutons;
public FenetreJeu(Grille g) {
super("Démineur - Partie en cours");
this.grille = g;
this.boutons = new JButton[g.getLignes()][g.getColonnes()];
this.setSize(600, 600);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
@@ -18,18 +21,67 @@ public class FenetreJeu extends JFrame {
JPanel panneauGrille = new JPanel();
panneauGrille.setLayout(new GridLayout(g.getLignes(), g.getColonnes()));
ControleurGrille controleurSouris = new ControleurGrille(this, this.grille);
for (int i = 0; i < g.getLignes(); i++) {
for (int j = 0; j < g.getColonnes(); j++) {
JButton boutonCase = new JButton("?");
JButton boutonCase = new JButton("");
this.boutons[i][j] = boutonCase;
panneauGrille.add(boutonCase);
boutonCase.addMouseListener(controleurSouris);
}
}
this.add(panneauGrille, BorderLayout.CENTER);
JButton btnSauverQuitter = new JButton("Sauver et Quitter");
this.add(btnSauverQuitter, BorderLayout.SOUTH);
ControleurJeu controleur = new ControleurJeu(this);
btnSauverQuitter.addActionListener(controleur);
ControleurJeu controleurQuitter = new ControleurJeu(this);
btnSauverQuitter.addActionListener(controleurQuitter);
}
}
public JButton getBouton(int l, int c) {
return this.boutons[l][c];
}
/**
* Met à jour le visuel d'un bouton en fonction de l'état de sa Case logique.
*/
public void rafraichirCase(int l, int c) {
Case caseLogique = this.grille.getCase(l, c);
JButton btn = this.boutons[l][c];
if (caseLogique.isRevelee()) {
btn.setEnabled(false);
if (caseLogique.isMinee()) {
btn.setText("M");
btn.setBackground(Color.RED);
} else if (caseLogique.getNbMinesVoisines() > 0) {
btn.setText("" + caseLogique.getNbMinesVoisines());
} else {
btn.setText("");
}
} else {
if (caseLogique.getMarqueur() == 1) {
btn.setText("★");
} else if (caseLogique.getMarqueur() == 2) {
btn.setText("?");
} else {
btn.setText("");
}
}
}
/**
* Rafraîchit l'affichage de tous les boutons de la grille d'un seul coup.
* Indispensable après une réaction en chaîne.
*/
public void rafraichirTouteLaGrille() {
for (int i = 0; i < grille.getLignes(); i++) {
for (int j = 0; j < grille.getColonnes(); j++) {
rafraichirCase(i, j);
}
}
}
} // <--- L'accolade finale est bien ici maintenant !