Reset du jeu apres la mort

This commit is contained in:
2026-02-23 09:57:06 +01:00
parent 866bd17e29
commit 83f5b974ab
2 changed files with 40 additions and 3 deletions

View File

@@ -7,7 +7,6 @@ import java.awt.event.KeyEvent;
import java.awt.event.KeyListener; import java.awt.event.KeyListener;
import javax.swing.JFrame; import javax.swing.JFrame;
import javax.swing.JLabel; import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.Timer; import javax.swing.Timer;
public class Jeu implements KeyListener, ActionListener{ public class Jeu implements KeyListener, ActionListener{
@@ -148,12 +147,41 @@ public class Jeu implements KeyListener, ActionListener{
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
ecran.traiterBoucleAnimation(); ecran.traiterBoucleAnimation();
if (ecran.aCollision()) { if (ecran.aCollision()) {
horloge.stop(); resetLevel();
JOptionPane.showMessageDialog(null, "Game Over");
return; return;
} }
score+=(0.05+(0.05*horloge.getDelay()/100.0)); score+=(0.05+(0.05*horloge.getDelay()/100.0));
labScore.setText("<html><h3>score : "+(int)score+"</h3></html>"); labScore.setText("<html><h3>score : "+(int)score+"</h3></html>");
} }
// Réinitialise le niveau : recrée les objets, remet le score et redémarre
private void resetLevel() {
if (horloge != null) horloge.stop();
score = 0;
labScore.setText("<html><h3>score : 0</h3></html>");
// Réinitialiser l'écran (vide la liste des objets et les flags)
ecran.reinitialiser();
// recréer les objets
demiCercleAvant = new Cercle(90, -180);
demiCercleArriere = new Cercle(90, 180);
ligne = new Ligne();
// ré-ajouter les objets
ecran.ajouterObjet(demiCercleArriere);
ecran.ajouterObjet(ligne);
ecran.ajouterObjet(demiCercleAvant);
demiCercleArriere.setCouleur(new Color(0.8f,0.0f,0.0f));
demiCercleAvant.setCouleur(new Color(0.0f,0.8f,0.0f));
// redémarrer l'horloge
horloge = new Timer(40, this);
horloge.start();
// redonner le focus clavier
ecran.requestFocusInWindow();
}
} }

View File

@@ -99,4 +99,13 @@ public class ZoneDessin extends JPanel {
public boolean aCollision() { public boolean aCollision() {
return collisionOccur; return collisionOccur;
} }
// Réinitialise l'état de la zone de dessin et supprime les objets graphiques
public void reinitialiser() {
listeObjets.clear();
estArrete = false;
collisionOccur = false;
hadBeenOnLine = false;
repaint();
}
} }