diff --git a/gitignore.txt b/gitignore.txt index dc3d74d..a3833f9 100644 --- a/gitignore.txt +++ b/gitignore.txt @@ -1,42 +1,30 @@ -### --- Java / Compilation Générique --- ### -*.class -*.log -*.ctxt -*.mtj.tmp/ -*.jar -*.war -*.nar -*.ear -*.zip -*.tar.gz -*.rar -*.idea -*.out - -### --- Dossiers de Build --- ### -target/ +### --- Java / JVM (Fichiers de compilation) --- bin/ build/ out/ -dist/ +target/ +*.class +*.jar +*.war +*.ear -### --- IntelliJ IDEA --- ### +### --- IntelliJ IDEA --- .idea/ -*.iws +.out/ *.iml +*.iws *.ipr -out/ -# Si vous utilisez le plugin Task d'IntelliJ -.idea/tasks.xml -# Si vous utilisez des dictionnaires personnels -.idea/dictionaries -# On ignore les fichiers de cache et les logs d'indexation -.idea/libraries/ -.idea/shelf/ -.idea/workspace.xml -.idea/modules.xml +# On garde parfois .idea/runConfigurations si on veut partager les configs de lancement, +# mais dans le doute, mieux vaut tout ignorer. -### --- Logs et Temp --- ### +### --- Antigravity / Environnements locaux --- +# Dossiers de build spécifiques et logs +.antigravity/ +logs/ *.log +temp/ tmp/ -temp/ \ No newline at end of file + +### --- Système / OS --- +.DS_Store +Thumbs.db \ No newline at end of file diff --git a/out/production/Projet_DEV/linea/Jeu.class b/out/production/Projet_DEV/linea/Jeu.class index 7df8283..9d4b271 100644 Binary files a/out/production/Projet_DEV/linea/Jeu.class and b/out/production/Projet_DEV/linea/Jeu.class differ diff --git a/out/production/Projet_DEV/linea/Ligne.class b/out/production/Projet_DEV/linea/Ligne.class index b335477..553e4a8 100644 Binary files a/out/production/Projet_DEV/linea/Ligne.class and b/out/production/Projet_DEV/linea/Ligne.class differ diff --git a/out/production/Projet_DEV/linea/ZoneDessin.class b/out/production/Projet_DEV/linea/ZoneDessin.class index 039fc64..0d751f7 100644 Binary files a/out/production/Projet_DEV/linea/ZoneDessin.class and b/out/production/Projet_DEV/linea/ZoneDessin.class differ diff --git a/src/linea/Cercle.java b/src/linea/Cercle.java index 801550e..4f4f66f 100644 --- a/src/linea/Cercle.java +++ b/src/linea/Cercle.java @@ -124,8 +124,4 @@ public class Cercle extends ObjetGraphique{ // il s'agit plutôt d'arcs de cercl } y+=depY; } - - - - } diff --git a/src/linea/Jeu.java b/src/linea/Jeu.java index a987891..f2b7af8 100644 --- a/src/linea/Jeu.java +++ b/src/linea/Jeu.java @@ -125,7 +125,7 @@ public class Jeu implements KeyListener, ActionListener{ fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Démarrage du timer, qui rythmera l'animation - horloge = new Timer(20, this); + horloge = new Timer(40, this); horloge.start(); demiCercleArriere.setCouleur(new Color(0.8f, 0.0f, 0.0f)); @@ -139,6 +139,18 @@ public class Jeu implements KeyListener, ActionListener{ @Override public void actionPerformed(ActionEvent e) { ecran.traiterBoucleAnimation(); + + double yLigne = laligne.getHauteurLigneA(400); + double yCercle = demiCercleAvant.getY(); + + if (Math.abs(yLigne - yCercle) > 30) { + gameOver(); + } + } + + public void gameOver() { + horloge.stop(); // On arrête le Timer + ecran.setGameOver(true); // On prévient la zone de dessin } } diff --git a/src/linea/Ligne.java b/src/linea/Ligne.java index 5a4fba9..29f34db 100644 --- a/src/linea/Ligne.java +++ b/src/linea/Ligne.java @@ -34,7 +34,7 @@ public class Ligne extends ObjetGraphique{// Hérite de la classe ObjetGraphique //------------------------------------------------------------------------- public Ligne(){ // Valeurs initiales pour la position de la Ligne - double x = 800; + double x = 400; double y = 200; double xCourant = x; @@ -93,4 +93,15 @@ public class Ligne extends ObjetGraphique{// Hérite de la classe ObjetGraphique s.setX(s.getX() - vitesseDefilement); } } + public double getHauteurLigneA(double xCercle) { + for (Segment s : listSegments) { + // Si le segment couvre la position X du cercle + if (xCercle >= s.getX() && xCercle <= (s.getX() + s.xLong)) { + // Calcul de l'interpolation linéaire pour trouver le Y exact sur le segment + double ratio = (xCercle - s.getX()) / s.xLong; + return s.getY() + (ratio * s.yLong); + } + } + return -1; // Hors de la ligne + } } diff --git a/src/linea/ZoneDessin.java b/src/linea/ZoneDessin.java index 03d04e3..0b95dee 100644 --- a/src/linea/ZoneDessin.java +++ b/src/linea/ZoneDessin.java @@ -1,11 +1,6 @@ package linea; -import java.awt.BorderLayout; -import java.awt.Color; -import java.awt.Dimension; -import java.awt.Graphics; -import java.awt.Graphics2D; -import java.awt.RenderingHints; +import java.awt.*; import java.util.ArrayList; import javax.swing.JPanel; @@ -22,6 +17,8 @@ public class ZoneDessin extends JPanel { // hérite d'une classe du frameWork st // un booleen qui permet d'arreter l'animation (suspendre) protected boolean estArrete = false; + + protected boolean isGameOver = false; //------------------------------------------------------------------------- @@ -96,9 +93,22 @@ public class ZoneDessin extends JPanel { // hérite d'une classe du frameWork st for (ObjetGraphique obj : listeObjets){ obj.Afficher(g); } - // à compléter + if (isGameOver) { + g2D.setColor(new Color(0, 0, 0, 150)); // Fond noir transparent + g2D.fillRect(0, 0, getWidth(), getHeight()); + + g2D.setColor(Color.WHITE); + g2D.setFont(new Font("Arial", Font.BOLD, 50)); + String msg = "GAME OVER"; + int largeurTexte = g2D.getFontMetrics().stringWidth(msg); + g2D.drawString(msg, (getWidth() - largeurTexte) / 2, getHeight() / 2); + } + } + + public void setGameOver(boolean state) { + this.isGameOver = state; + repaint(); } - }