diff --git a/.gitignore b/.gitignore index fc87292..14392bf 100644 --- a/.gitignore +++ b/.gitignore @@ -1,100 +1,35 @@ -# ============================================================================== -# 1. SPECIFIQUE A TON PROJET (Ce qu'on voit sur le screenshot) -# ============================================================================== -# Dossiers de compilation (IntelliJ génère 'out', Eclipse génère 'bin') +# ======================== +# 1. COMPILATION (A ignorer absolument) +# ======================== out/ bin/ - -# Fichiers de configuration de module IntelliJ -*.iml - -# Dossier de configuration projet IntelliJ -# (On ignore tout le dossier car il contient souvent des chemins locaux spécifiques à ta machine) -.idea/ - -# ============================================================================== -# 2. JAVA (Standard) -# ============================================================================== -# Fichiers compilés *.class -# Archives packagées -*.jar -*.war -*.nar -*.ear -*.zip -*.tar.gz -*.rar +# ======================== +# 2. INTELLIJ (LA PARTIE CRITIQUE) +# ======================== +# On ignore les fichiers PERSONNELS de l'utilisateur +.idea/workspace.xml +.idea/usage.statistics.xml +.idea/dictionaries +.idea/shelf +.idea/tasks.xml +.idea/httpRequests -# Logs et fichiers temporaires -*.log -*.lock +# ⚠️ ON GARDE TOUT LE RESTE DE .idea/ ⚠️ +# C'est vital pour que le bouton "Run" marche chez tes collègues. +# On garde aussi les .iml +# (Pas de ligne pour ignorer *.iml ou le dossier .idea/) -# ============================================================================== -# 3. INTELLIJ IDEA (JetBrains) - Le "Overkill" pour être sûr -# ============================================================================== -# Couvre IntelliJ, PyCharm, PhpStorm, Android Studio, etc. -*.iws -*.ipr -*.jwks -.idea_modules/ - -# ============================================================================== -# 4. ECLIPSE -# ============================================================================== -.metadata -.classpath -.project -.settings/ -.loadpath -.recommenders -.factorypath - -# ============================================================================== -# 5. VISUAL STUDIO CODE -# ============================================================================== +# ======================== +# 3. ANTIGRAVITY / VSCODE +# ======================== .vscode/ +.antigravity/ *.code-workspace -.history/ -# ============================================================================== -# 6. SYSTEME D'EXPLOITATION (Mac / Windows / Linux) -# ============================================================================== +# ======================== +# 4. OS / DIVERS +# ======================== .DS_Store -.DS_Store? -._* -.Spotlight-V100 -.Trashes -ehthumbs.db -Thumbs.db -.directory - -# ============================================================================== -# 7. PYTHON / ANTIGRAVITY (Si jamais tu mélanges des scripts) -# ============================================================================== -__pycache__/ -*.py[cod] -*$py.class -*.so -.Python -build/ -develop-eggs/ -dist/ -downloads/ -eggs/ -.eggs/ -lib/ -lib64/ -parts/ -sdist/ -var/ -wheels/ -*.egg-info/ -.installed.cfg -*.egg -MANIFEST -venv/ -.env -.venv -pip-log.txt \ No newline at end of file +Thumbs.db \ No newline at end of file diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..ab1f416 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,10 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Ignored default folder with query files +/queries/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/src/Cercle.java b/src/Cercle.java index 8797cdc..3ad7918 100644 --- a/src/Cercle.java +++ b/src/Cercle.java @@ -5,145 +5,97 @@ import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.geom.Arc2D; -public class Cercle extends ObjetGraphique{ // il s'agit plutôt d'arcs de cercle - // Hérite de la classe ObjetGraphique - // Ne pas oublier qu'il y a des propriétés et méthodes reçues par l'héritage +public class Cercle extends ObjetGraphique { // il s'agit plutôt d'arcs de cercle - - //------------------------------------------------------------------------- - // PROPRIETES - //------------------------------------------------------------------------- protected double rayon = 50; - protected double depY = 0; // déplacement - + protected double depY = 0; + // début et fin de l'arc, en degrés protected double debut = 0; protected double fin = 360; - - // Est-ce que le joueur est en train d'appuyer sur "up" + protected boolean montee = false; - - // Vitesse du cercle protected double vitesse = -1.0; - - // Un pas pour l'application des forces, permet de régler - // un peu la jouabilité + + // pas = "delta t", permet de régler la jouabilité protected double pas = 0.2; - - // Valeur de la force (norme) appliquée lorsque le joueur appuie sur up protected double impulsion = 35; - - - //------------------------------------------------------------------------- - // METHODES - //------------------------------------------------------------------------- - - //------------------------------------------------------------------------- - // Constructeurs de la classe - //------------------------------------------------------------------------- - public Cercle(){ - x=400; - y=200; + + public Cercle() { + x = 400; + y = 200; } - - public Cercle(double debutArc, double finArc){ - x=400; - y=200; + + public Cercle(double debutArc, double finArc) { + x = 400; + y = 200; debut = debutArc; fin = finArc; } - - - //------------------------------------------------------------------------- - // Méthode d'accès en lecture au rayon, peut être utile - // par exemple pour la classe qui vérifiera si la ligne passe dans le - // cercle - //------------------------------------------------------------------------- - public double getRayon(){ + + public double getRayon() { return rayon; } - - - //------------------------------------------------------------------------- - // Méthode qui note que up a été appuyée - // -> le booléen permet de ne plus être tributaire - // de la vitesse de répétition du clavier - //------------------------------------------------------------------------- - public void Monter(){ + + // note que "haut" a été appuyée (évite d'être tributaire de la répétition + // clavier) + public void Monter() { montee = true; } - - - //------------------------------------------------------------------------- - // Méthode qui note que up a été relâchée - //------------------------------------------------------------------------- - public void ArreterMonter(){ + + public void ArreterMonter() { montee = false; } - - - //------------------------------------------------------------------------- - // Redéfinition de la méthode Afficher, spécifiquement pour la classe - //------------------------------------------------------------------------- @Override void Afficher(Graphics g) { - // choix de la couleur et de l'épaisseur Graphics2D g2D = (Graphics2D) g; g2D.setStroke(new BasicStroke(5.0f)); g.setColor(this.couleur); - - // dessin de l'arc - g2D.draw(new Arc2D.Double(x-rayon/2, y-rayon, rayon, rayon*2, debut, fin, Arc2D.OPEN)); + g2D.draw(new Arc2D.Double(x - rayon / 2, y - rayon, rayon, rayon * 2, debut, fin, Arc2D.OPEN)); } - - //------------------------------------------------------------------------- - // Redéfinition de la méthode Animer, spécifiquement pour la classe - //------------------------------------------------------------------------- @Override void Animer() { - // pas est à prendre comme un "delta t" - // chute libre vitesse = vitesse + 9.81 * pas; - // impulsion - if (montee==true) { - vitesse = vitesse - impulsion *pas; + // impulsion vers le haut + if (montee == true) { + vitesse = vitesse - impulsion * pas; } - - depY = 1/2 * 9.81 + vitesse * pas; - - if (depY<-10) { - depY=-10; + + depY = 1 / 2 * 9.81 + vitesse * pas; + + if (depY < -10) { + depY = -10; } - if (depY>10){ - depY =10; + if (depY > 10) { + depY = 10; } - y+=depY; + y += depY; } - public void ResterDansLigne(Ligne li){ + public void ResterDansLigne(Ligne li) { double collisionHautPos = y + rayon; double collisionBasPos = y - rayon; - double yLigne = li.GetHauteurPointCercle(); - if (yLigne < collisionBasPos){ + if (yLigne < collisionBasPos) { y = yLigne + rayon; - if (vitesse > 0) vitesse = 0; + if (vitesse > 0) + vitesse = 0; } - if (yLigne > collisionHautPos){ + if (yLigne > collisionHautPos) { y = yLigne - rayon; - if (vitesse < 0) vitesse = 0; + if (vitesse < 0) + vitesse = 0; } } - - public boolean VerifierCollision(Ligne li){ + + public boolean VerifierCollision(Ligne li) { double collisionHautPos = y + rayon; double collisionBasPos = y - rayon; - double yLigne = li.GetHauteurPointCercle(); return yLigne <= collisionBasPos || yLigne >= collisionHautPos; diff --git a/src/Jeu.java b/src/Jeu.java index 298e7ee..bb8c03c 100644 --- a/src/Jeu.java +++ b/src/Jeu.java @@ -15,30 +15,18 @@ import javax.swing.SwingConstants; import javax.swing.Timer; public class Jeu implements KeyListener, ActionListener, MouseListener { - // ------------------------------------------------------------------------- - // PROPRIETES - // ------------------------------------------------------------------------- - // Ecran : instance de ZoneDessin, qui contiendra tous les objets graphiques - // et les animera protected ZoneDessin ecran = new ZoneDessin(); - // Le cercle : en fait 2 demis-cercles, un qui passera sous la ligne - // un qui passera dessus protected Cercle demiCercleAvant = new Cercle(90, -180); // celui qui est sur la ligne protected Cercle demiCercleArriere = new Cercle(90, 180); // celui qui est derrière la ligne // A FAIRE : ajouter les objets graphiques manquants, s'il y en a protected Ligne lili = new Ligne(new NoiseGenerator(0)); - // Timer : un objet qui émet des événements à un intervalle choisi, - // il sert à donner le pas de l'animation protected Timer horloge; - // Une variable qui contiendra le score protected double score = 1; - - // un label qui servira à afficher le score protected JLabel labScore; protected int compteurFrames = 0; @@ -47,23 +35,11 @@ public class Jeu implements KeyListener, ActionListener, MouseListener { protected JLabel labGameOver; protected int compteurInvincible = 0; - // le pseudo du joueur protected String pseudo = ""; - - // la fenêtre et le menu principal protected JFrame fenetre; protected MenuPrincipal menu; - // ------------------------------------------------------------------------- - // METHODES - // ------------------------------------------------------------------------- - - // ------------------------------------------------------------------------- - // Constructeur de la classe - // ------------------------------------------------------------------------- public Jeu() { - // Gestion du score : a réactiver en fin de TP, inutile au début - labScore = new JLabel(); labScore.setForeground(Color.WHITE); labScore.setText("