diff --git a/linea/Jeu.java b/linea/Jeu.java index 6fbc6da..09642d8 100644 --- a/linea/Jeu.java +++ b/linea/Jeu.java @@ -147,7 +147,22 @@ public class Jeu implements KeyListener, ActionListener{ public void actionPerformed(ActionEvent e) { ecran.traiterBoucleAnimation(); if (ecran.aCollision()) { - resetLevel(); + if (horloge != null) horloge.stop(); + int finalScore = (int) score; + Object[] options = {"Relancer", "Quitter"}; + int choix = javax.swing.JOptionPane.showOptionDialog(null, + "Perdu\nScore : " + finalScore, + "Perdu", + javax.swing.JOptionPane.DEFAULT_OPTION, + javax.swing.JOptionPane.INFORMATION_MESSAGE, + null, + options, + options[0]); + if (choix == 0) { // Relancer + resetLevel(); + } else { + System.exit(0); + } return; } score+=(0.05+(0.05*horloge.getDelay()/100.0)); diff --git a/linea/Ligne.java b/linea/Ligne.java index 24b46d9..65487ba 100644 --- a/linea/Ligne.java +++ b/linea/Ligne.java @@ -11,6 +11,12 @@ public class Ligne extends ObjetGraphique{ private int nbSegments = 400; private double xCercle = 400; private Segment SegCourant; + // vitesse de déplacement (augmente légèrement chaque frame) + private double vitesse = 5.0; + // croissance initiale (fractionnelle) appliquée chaque frame + private double croissance = 0.001; // ~0.1% initial + // facteur qui amplifie la croissance elle-même (pour accélérer la montée) + private double facteurCroissance = 1.00003; // croissance augmente légèrement // liste des segments private ArrayList segments = new ArrayList(); @@ -47,10 +53,15 @@ public class Ligne extends ObjetGraphique{ @Override public void Animer() { // déplace tous les segments vers la gauche - double delta = 5.0; // vitesse de déplacement + double delta = vitesse; // vitesse de déplacement (exponentielle) for (Segment seg : segments) { seg.x -= delta; } + + // appliquer la croissance (vitesse *= 1 + croissance) + vitesse *= (1.0 + croissance); + // augmenter légèrement la croissance pour que l'accélération s'amplifie + croissance *= facteurCroissance; }