forked from menault/TD3_DEV51_Qualite_Algo
		
	Fenetre fix dessin temp
This commit is contained in:
		
							
								
								
									
										
											BIN
										
									
								
								src/Dessin.class
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/Dessin.class
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								src/Fenetre$1.class
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/Fenetre$1.class
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								src/Fenetre$2.class
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/Fenetre$2.class
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								src/Fenetre$PlaceholderDrawPanel.class
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/Fenetre$PlaceholderDrawPanel.class
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								src/Fenetre.class
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/Fenetre.class
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -4,19 +4,18 @@ import java.awt.event.*; | ||||
| import java.util.function.Consumer; | ||||
|  | ||||
| /** | ||||
| * La classe <code>Fenetre</code> 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 <code>Fenetre</code> 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<Character> 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<Character> 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)")); | ||||
|    } | ||||
|  | ||||
| } | ||||
|   | ||||
							
								
								
									
										
											BIN
										
									
								
								src/Partie.class
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/Partie.class
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								src/Pendu.class
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/Pendu.class
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
		Reference in New Issue
	
	Block a user