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.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 depY = 0;
@@ -95,17 +96,18 @@ public class Cercle extends ObjetGraphique { // il s'agit plutôt d'arcs de cerc
y += vitesse;
}
// Recadre le cercle dans la ligne si il le dépasse
public void ResterDansLigne(Ligne li) {
double collisionHautPos = y + rayon;
double collisionBasPos = y - rayon;
double yLigne = li.GetHauteurPointCercle();
if (yLigne < collisionBasPos) {
if (yLigne < collisionBasPos) { // Dépassement par le bas
y = yLigne + rayon;
if (vitesse > 0)
vitesse = 0;
}
if (yLigne > collisionHautPos) {
if (yLigne > collisionHautPos) {// Dépassement par le haut
y = yLigne - rayon;
if (vitesse < 0)
vitesse = 0;

View File

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

View File

@@ -60,6 +60,7 @@ public class Ligne extends ObjetGraphique {
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(){
double noiseStep = getNoiseStep();
@@ -74,6 +75,7 @@ public class Ligne extends ObjetGraphique {
return s;
}
// Calcule la hauteur de la ligne à un point X.
protected double CalculerY(double noisePos){
double limiteHaut = gestionnaireNiveau.getLimiteHaut();
double limiteBas = gestionnaireNiveau.getLimiteBas();
@@ -118,6 +120,7 @@ public class Ligne extends ObjetGraphique {
UpdateSegments();
}
// Permet de réutiliser les segments sortis de l'écran au debut
private void UpdateSegments(){
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++) {
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();
nouveauSegment.x = dernierSegment.x + dernierSegment.xLong;
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(){
double t = (400 - SegCourant.x) / SegCourant.xLong;

View File

@@ -109,11 +109,7 @@ public class NoiseGenerator {
return value / initialSize;
}
/**
* 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.
*/
// Seule fonction publique utilisée, génère une valeur de -1 à 1 à un point x.
public double noise(double x, int octaves) {
double value = 0.0;
double size = default_size;