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