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; protected boolean isVictoire = false; // LE BOUTON DOIT ÊTRE PUBLIC POUR ÊTRE ACCESSIBLE DEPUIS JEU.JAVA public JButton btnRetour; public ZoneDessin() { // Layout null pour positionner le bouton pixel par pixel setLayout(null); setPreferredSize(new Dimension(800, 600)); setBackground(new Color(100, 100, 100)); btnRetour = new JButton("Back to Menu"); // entré horizontalement pour une fenêtre de 800px btnRetour.setBounds(300, 350, 200, 50); btnRetour.setFont(new Font("Arial", Font.BOLD, 16)); btnRetour.setFocusable(false); btnRetour.setVisible(false); this.add(btnRetour); } public void ajouterObjet(ObjetGraphique unObjet) { this.listeObjets.add(unObjet); } public void viderObjets() { this.listeObjets.clear(); } public void traiterBoucleAnimation() { if (estArrete || isGameOver || isVictoire) 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)); 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); } else if (isVictoire) { g2D.setColor(new Color(0, 0, 0, 150)); g2D.fillRect(0, 0, getWidth(), getHeight()); g2D.setColor(Color.GREEN); g2D.setFont(new Font("Arial", Font.BOLD, 50)); String msg = "VICTOIRE"; int largeur = g2D.getFontMetrics().stringWidth(msg); g2D.drawString(msg, (getWidth() - largeur) / 2, getHeight() / 2 - 50); } } public void setGameOver(boolean state) { this.isGameOver = state; btnRetour.setVisible(state); repaint(); } public void setVictoire(boolean state) { this.isVictoire = state; btnRetour.setVisible(state); repaint(); } }