package linea; import java.awt.*; import java.util.ArrayList; import javax.swing.*; public class ZoneDessin extends JPanel { private static final long serialVersionUID = 1L; protected ArrayList listeObjets = new ArrayList(); // Etats du jeu protected boolean estArrete = false; protected boolean isGameOver = false; // LE BOUTON DOIT ÊTRE PUBLIC POUR ÊTRE ACCESSIBLE DEPUIS JEU.JAVA public JButton btnRetour; public ZoneDessin(){ // 1. IMPORTANT : Layout null pour positionner le bouton pixel par pixel setLayout(null); setPreferredSize(new Dimension(800, 600)); setBackground(new Color(100,100,100)); // 2. Création et configuration du bouton btnRetour = new JButton("Back to Menu"); // x, y, largeur, hauteur (centré horizontalement pour une fenêtre de 800px) btnRetour.setBounds(300, 350, 200, 50); btnRetour.setFont(new Font("Arial", Font.BOLD, 16)); btnRetour.setFocusable(false); // Important pour ne pas gêner le clavier btnRetour.setVisible(false); // Caché au début this.add(btnRetour); } // ... (méthodes ajouterObjet, viderObjets, arreter, demarrer restent pareilles) ... public void ajouterObjet(ObjetGraphique unObjet) { this.listeObjets.add(unObjet); } public void viderObjets() { this.listeObjets.clear(); } public void traiterBoucleAnimation(){ if (estArrete || isGameOver) return; for (ObjetGraphique obj : listeObjets){ obj.Animer(); } repaint(); } public void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2D = (Graphics2D) g; g2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON); for (ObjetGraphique obj : listeObjets){ obj.Afficher(g); } // Affichage de l'écran Game Over if (isGameOver) { g2D.setColor(new Color(0, 0, 0, 150)); // Fond sombre g2D.fillRect(0, 0, getWidth(), getHeight()); g2D.setColor(Color.WHITE); g2D.setFont(new Font("Arial", Font.BOLD, 50)); String msg = "GAME OVER"; int largeur = g2D.getFontMetrics().stringWidth(msg); g2D.drawString(msg, (getWidth() - largeur) / 2, getHeight() / 2 - 50); } } public void setGameOver(boolean state) { this.isGameOver = state; // 3. C'est ici qu'on affiche ou cache le bouton btnRetour.setVisible(state); repaint(); } }