Files
Projet_DEV/src/linea/ZoneDessin.java
2026-02-10 16:02:29 +01:00

77 lines
2.3 KiB
Java

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<ObjetGraphique> listeObjets = new ArrayList<ObjetGraphique>();
// 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("Retour au 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();
}
}