This commit is contained in:
B00M360
2026-03-28 14:38:28 +01:00
4 changed files with 14 additions and 9 deletions

View File

@@ -5,7 +5,8 @@ import java.awt.Graphics;
import java.awt.Graphics2D; import java.awt.Graphics2D;
import java.awt.geom.Arc2D; import java.awt.geom.Arc2D;
public class Cercle extends ObjetGraphique { // il s'agit plutôt d'arcs de cercle // Gère l'affichage et le déplacement du demi-cercle
public class Cercle extends ObjetGraphique {
protected double rayon = 50; protected double rayon = 50;
protected double depY = 0; protected double depY = 0;
@@ -95,17 +96,18 @@ public class Cercle extends ObjetGraphique { // il s'agit plutôt d'arcs de cerc
y += vitesse; y += vitesse;
} }
// Recadre le cercle dans la ligne si il le dépasse
public void ResterDansLigne(Ligne li) { public void ResterDansLigne(Ligne li) {
double collisionHautPos = y + rayon; double collisionHautPos = y + rayon;
double collisionBasPos = y - rayon; double collisionBasPos = y - rayon;
double yLigne = li.GetHauteurPointCercle(); double yLigne = li.GetHauteurPointCercle();
if (yLigne < collisionBasPos) { if (yLigne < collisionBasPos) { // Dépassement par le bas
y = yLigne + rayon; y = yLigne + rayon;
if (vitesse > 0) if (vitesse > 0)
vitesse = 0; vitesse = 0;
} }
if (yLigne > collisionHautPos) { if (yLigne > collisionHautPos) {// Dépassement par le haut
y = yLigne - rayon; y = yLigne - rayon;
if (vitesse < 0) if (vitesse < 0)
vitesse = 0; vitesse = 0;

View File

@@ -2,6 +2,7 @@ package linea;
import java.awt.Color; import java.awt.Color;
// Gère le fonctionnement du joueur (vie, collision, déplacement)
public class Joueur { public class Joueur {
protected Cercle demiCercleAvant; protected Cercle demiCercleAvant;
@@ -33,6 +34,7 @@ public class Joueur {
appliquerCouleurs(); appliquerCouleurs();
} }
// Gère les contrôles du joueur
public void appliquerTouche(int keyCode, boolean pressed) { public void appliquerTouche(int keyCode, boolean pressed) {
if (estMort) return; if (estMort) return;
@@ -69,6 +71,7 @@ public class Joueur {
demiCercleArriere.setRayon(rayon); demiCercleArriere.setRayon(rayon);
} }
//Appelé chaque frame et permet d'avancer le timer d'invincibilité et de mettre à jour l'effet visuel
public void mettreAJourInvincibilite() { public void mettreAJourInvincibilite() {
if (estMort) { if (estMort) {
demiCercleAvant.setCouleur(new Color(0, 0, 0, 0)); demiCercleAvant.setCouleur(new Color(0, 0, 0, 0));

View File

@@ -60,6 +60,7 @@ public class Ligne extends ObjetGraphique {
return GetLargeurSegment() / gestionnaireNiveau.getNoiseFrequence(); return GetLargeurSegment() / gestionnaireNiveau.getNoiseFrequence();
} }
// Quand un segment sort de l'écran, génère un nouveau segment à la fin de la ligne.
protected Segment CreerSegmentSuivant(){ protected Segment CreerSegmentSuivant(){
double noiseStep = getNoiseStep(); double noiseStep = getNoiseStep();
@@ -74,6 +75,7 @@ public class Ligne extends ObjetGraphique {
return s; return s;
} }
// Calcule la hauteur de la ligne à un point X.
protected double CalculerY(double noisePos){ protected double CalculerY(double noisePos){
double limiteHaut = gestionnaireNiveau.getLimiteHaut(); double limiteHaut = gestionnaireNiveau.getLimiteHaut();
double limiteBas = gestionnaireNiveau.getLimiteBas(); double limiteBas = gestionnaireNiveau.getLimiteBas();
@@ -118,6 +120,7 @@ public class Ligne extends ObjetGraphique {
UpdateSegments(); UpdateSegments();
} }
// Permet de réutiliser les segments sortis de l'écran au debut
private void UpdateSegments(){ private void UpdateSegments(){
if (dernierSegment == null) throw new RuntimeException("dernierSegment n'existe pas"); if (dernierSegment == null) throw new RuntimeException("dernierSegment n'existe pas");
@@ -125,7 +128,7 @@ public class Ligne extends ObjetGraphique {
for (int i = 0; i < listeSegments.size(); i++) { for (int i = 0; i < listeSegments.size(); i++) {
Segment s = listeSegments.get(i); Segment s = listeSegments.get(i);
if (s.x + s.xLong < 0) { if (s.x + s.xLong < 0) { // le segment est ENTIEREMENT hors de l'écran
Segment nouveauSegment = CreerSegmentSuivant(); Segment nouveauSegment = CreerSegmentSuivant();
nouveauSegment.x = dernierSegment.x + dernierSegment.xLong; nouveauSegment.x = dernierSegment.x + dernierSegment.xLong;
listeSegments.set(i, nouveauSegment); listeSegments.set(i, nouveauSegment);
@@ -136,6 +139,7 @@ public class Ligne extends ObjetGraphique {
} }
} }
// Renvoie la hauteur à laquelle doit etre le cercle. Utilisé pour la collision
public double GetHauteurPointCercle(){ public double GetHauteurPointCercle(){
double t = (400 - SegCourant.x) / SegCourant.xLong; double t = (400 - SegCourant.x) / SegCourant.xLong;

View File

@@ -109,11 +109,7 @@ public class NoiseGenerator {
return value / initialSize; return value / initialSize;
} }
/** // Seule fonction publique utilisée, génère une valeur de -1 à 1 à un point x.
* Noise 1D avec nombre d'octaves controle.
* 1 octave = lisse, utilise tout le range [-1, 1].
* Plus d'octaves = plus de detail/jitter, mais converge vers 0.
*/
public double noise(double x, int octaves) { public double noise(double x, int octaves) {
double value = 0.0; double value = 0.0;
double size = default_size; double size = default_size;