diff --git a/src/Dessin.class b/src/Dessin.class
new file mode 100644
index 0000000..7e611f9
Binary files /dev/null and b/src/Dessin.class differ
diff --git a/src/Fenetre$1.class b/src/Fenetre$1.class
new file mode 100644
index 0000000..935d714
Binary files /dev/null and b/src/Fenetre$1.class differ
diff --git a/src/Fenetre$2.class b/src/Fenetre$2.class
new file mode 100644
index 0000000..67ef0ce
Binary files /dev/null and b/src/Fenetre$2.class differ
diff --git a/src/Fenetre$PlaceholderDrawPanel.class b/src/Fenetre$PlaceholderDrawPanel.class
new file mode 100644
index 0000000..5876f88
Binary files /dev/null and b/src/Fenetre$PlaceholderDrawPanel.class differ
diff --git a/src/Fenetre.class b/src/Fenetre.class
new file mode 100644
index 0000000..a580149
Binary files /dev/null and b/src/Fenetre.class differ
diff --git a/src/Fenetre.java b/src/Fenetre.java
index 830c436..44a7586 100644
--- a/src/Fenetre.java
+++ b/src/Fenetre.java
@@ -4,19 +4,18 @@ import java.awt.event.*;
import java.util.function.Consumer;
/**
-* La classe Fenetre gère uniquement l'interface graphique :
-* - zone de dessin (remplaçable par la classe Dessin)
-* - affichage du mot masqué
-* - saisie d'une lettre (événement remonté via un handler)
-*
-* Aucune logique de jeu (choix/vérification du mot) n'est ici.
-*
-* * @version 0.3
-* @author Adrien
-* Date : 08-10-25
-* Licence :
-*/
-
+ * La classe Fenetre gère uniquement l'interface graphique :
+ * - zone de dessin (assurée par la classe Dessin)
+ * - affichage du mot masqué
+ * - saisie d'une lettre (événement remonté via un handler)
+ *
+ * Aucune logique de jeu (choix/vérification du mot) n'est ici.
+ *
+ * @version 1.0
+ * @author Adrien
+ * Date : 08-10-25
+ * Licence :
+ */
public class Fenetre {
// --- Composants de l'interface (UI only) ---
@@ -24,18 +23,18 @@ public class Fenetre {
private JLabel wordLabel;
private JTextField letterInput;
private JButton sendButton;
- private JPanel drawZone; // remplaçable par la classe Dessin
+ private JPanel drawZone; // instance de Dessin
// Handler externe pour la lettre soumise (fourni par la classe Partie / contrôleur)
private Consumer onLetterSubmitted;
- // --- Constructeur (courte orchestration uniquement) ---
+ // --- Constructeur (orchestration courte) ---
public Fenetre() {
setupWindow();
JPanel root = createRoot();
window.setContentPane(root);
- drawZone = createDrawZone();
+ drawZone = createDrawZone(); // -> new Dessin()
root.add(drawZone);
wordLabel = createWordLabel();
@@ -65,12 +64,9 @@ public class Fenetre {
}
// --- Sous-composants UI ---
- /** Crée la zone de dessin placeholder (à remplacer par Dessin). */
+ /** Crée la zone de dessin via la classe Dessin. */
private JPanel createDrawZone() {
- JPanel panel = new PlaceholderDrawPanel();
- panel.setPreferredSize(new Dimension(600, 350));
- panel.setBackground(new Color(245, 245, 245));
- return panel;
+ return new Dessin();
}
/** Crée le label d'affichage du mot (placeholder jusqu'à injection par Partie). */
@@ -113,38 +109,19 @@ public class Fenetre {
return inputPanel;
}
- // --- Partie et Dessin ---
+ // --- Partie <-> UI ---
/** Définit le texte du mot affiché (ex: "_ _ A _ _") fourni par la classe Partie. */
public void setWordDisplay(String maskedWord) {
wordLabel.setText(maskedWord != null ? maskedWord : "");
}
- /** Définit le panneau de dessin (remplace le placeholder par la classe Dessin). */
- public void setDrawPanel(JPanel dessinPanel) {
- if (dessinPanel == null) return;
- Container parent = drawZone.getParent();
- int index = -1;
- for (int i = 0; i < parent.getComponentCount(); i++) {
- if (parent.getComponent(i) == drawZone) { index = i; break; }
- }
- if (index != -1) {
- parent.remove(index);
- drawZone = dessinPanel;
- drawZone.setPreferredSize(new Dimension(600, 350));
- parent.add(drawZone, index);
- parent.revalidate();
- parent.repaint();
- }
- }
-
/** Définit le handler appelé quand l'utilisateur soumet une lettre. */
public void setOnLetterSubmitted(Consumer handler) {
this.onLetterSubmitted = handler;
}
// --- Méthodes privées UI ---
-
/** Récupère la lettre et notifie le handler externe (aucune logique de jeu ici). */
private void submitLetter() {
String text = letterInput.getText().trim().toUpperCase();
@@ -157,28 +134,12 @@ public class Fenetre {
else JOptionPane.showMessageDialog(window, "Lettre soumise (placeholder) : " + text);
}
- // --- Placeholder de dessin (pour tester la fenêtre seule) ---
- private static class PlaceholderDrawPanel extends JPanel {
- @Override protected void paintComponent(Graphics g) {
- super.paintComponent(g);
- Graphics2D g2 = (Graphics2D) g;
- g2.setStroke(new BasicStroke(2f));
- g2.drawRect(10, 10, getWidth() - 20, getHeight() - 20);
- g2.setFont(getFont().deriveFont(Font.BOLD, 16f));
- String txt = "Zone de dessin (remplacer par Dessin)";
- FontMetrics fm = g2.getFontMetrics();
- int x = (getWidth() - fm.stringWidth(txt)) / 2;
- int y = (getHeight() + fm.getAscent()) / 2;
- g2.drawString(txt, x, y);
- }
+ // --- Méthode principale de test ---
+ public static void main(String[] args) {
+ Fenetre f = new Fenetre();
+ f.setWordDisplay("_ _ _ _ _"); // placeholder
+ f.setOnLetterSubmitted(ch ->
+ JOptionPane.showMessageDialog(null, "Lettre reçue : " + ch + " (sans logique de jeu)")
+ );
}
-
- // --- Méthode principale de test : exécuter Fenetre seule (sans Partie/Dessin) ---
- public static void main(String[] args) {
- Fenetre f = new Fenetre();
- f.setWordDisplay("_ _ _ _ _"); // placeholder
- f.setDrawPanel(new Dessin()); // dessin
- f.setOnLetterSubmitted(ch -> JOptionPane.showMessageDialog(null,"Lettre reçue : " + ch + " (sans logique de jeu)"));
- }
-
}
diff --git a/src/Partie.class b/src/Partie.class
new file mode 100644
index 0000000..85cd51f
Binary files /dev/null and b/src/Partie.class differ
diff --git a/src/Pendu.class b/src/Pendu.class
new file mode 100644
index 0000000..3fd926e
Binary files /dev/null and b/src/Pendu.class differ