ajout des niveaux
This commit is contained in:
@@ -13,35 +13,43 @@ public class Ligne extends ObjetGraphique {
|
||||
|
||||
protected ArrayList<Segment> listeSegments = new ArrayList<Segment>();
|
||||
|
||||
protected double limiteHaut = 50;
|
||||
protected double limiteBas = 550;
|
||||
|
||||
protected Segment dernierSegment;
|
||||
private double decalageXDernierSegment = 0;
|
||||
|
||||
protected double noiseFrequence = 1/50f;
|
||||
|
||||
private NoiseGenerator noiseGenerator;
|
||||
private GestionnaireNiveau gestionnaireNiveau;
|
||||
|
||||
private double xActuel;
|
||||
|
||||
public Ligne(NoiseGenerator noiseGenerator) {
|
||||
// Curseur dans le noise : avance plus vite quand la frequence du niveau augmente
|
||||
private double noiseCurseur = 0;
|
||||
|
||||
public Ligne(NoiseGenerator noiseGenerator, GestionnaireNiveau gestionnaireNiveau) {
|
||||
double x = 0;
|
||||
|
||||
this.noiseGenerator = noiseGenerator;
|
||||
for (int i = 0; i < nbSegments; i++) {
|
||||
this.gestionnaireNiveau = gestionnaireNiveau;
|
||||
|
||||
Segment s = CreerSegment(x);
|
||||
double dx = GetLargeurSegment();
|
||||
double freq = gestionnaireNiveau.getNoiseFrequence();
|
||||
|
||||
for (int i = 0; i < nbSegments; i++) {
|
||||
double noiseStep = dx * freq;
|
||||
double yDebut = CalculerY(noiseCurseur);
|
||||
double yFin = CalculerY(noiseCurseur + noiseStep);
|
||||
|
||||
Segment s = new Segment(x, yDebut, dx, yFin - yDebut);
|
||||
s.setCouleur(new Color(0.2f, 0.2f, 0.2f));
|
||||
|
||||
listeSegments.add(s);
|
||||
noiseCurseur += noiseStep;
|
||||
|
||||
if (i == nbSegments - 1)
|
||||
{
|
||||
if (i == nbSegments - 1) {
|
||||
dernierSegment = s;
|
||||
xActuel = x + s.xLong;
|
||||
xActuel = x + dx;
|
||||
}
|
||||
|
||||
x += s.xLong;
|
||||
x += dx;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,26 +57,31 @@ public class Ligne extends ObjetGraphique {
|
||||
return (double)ZoneDessin.largeur / nbSegments;
|
||||
}
|
||||
|
||||
protected Segment CreerSegment(double x){
|
||||
protected Segment CreerSegmentSuivant(){
|
||||
double dx = GetLargeurSegment();
|
||||
double y = CalculerY(x);
|
||||
double dy = CalculerY(x + dx) - y;
|
||||
double freq = gestionnaireNiveau.getNoiseFrequence();
|
||||
double noiseStep = dx * freq;
|
||||
|
||||
Segment s = new Segment(x, y, dx, dy);
|
||||
double yDebut = CalculerY(noiseCurseur);
|
||||
double yFin = CalculerY(noiseCurseur + noiseStep);
|
||||
|
||||
noiseCurseur += noiseStep;
|
||||
|
||||
Segment s = new Segment(0, yDebut, dx, yFin - yDebut);
|
||||
s.setCouleur(new Color(0.2f, 0.2f, 0.2f));
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
protected double CalculerY(double x){
|
||||
|
||||
protected double CalculerY(double noisePos){
|
||||
double limiteHaut = gestionnaireNiveau.getLimiteHaut();
|
||||
double limiteBas = gestionnaireNiveau.getLimiteBas();
|
||||
double hauteur = limiteBas - limiteHaut;
|
||||
|
||||
double bruit = noiseGenerator.noise(x * noiseFrequence);
|
||||
bruit = (bruit + 1) / 2;
|
||||
double bruit = noiseGenerator.noise(noisePos);
|
||||
double normalise = (bruit + 1) / 2;
|
||||
|
||||
return limiteBas - bruit * hauteur;
|
||||
return limiteBas - normalise * hauteur;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -94,9 +107,11 @@ public class Ligne extends ObjetGraphique {
|
||||
|
||||
@Override
|
||||
public void Animer() {
|
||||
double vitesse = gestionnaireNiveau.getVitesseScroll();
|
||||
|
||||
for (Segment s : listeSegments) {
|
||||
s.Animer();
|
||||
s.x -= 10;
|
||||
s.x -= vitesse;
|
||||
}
|
||||
|
||||
UpdateSegments();
|
||||
@@ -110,7 +125,7 @@ public class Ligne extends ObjetGraphique {
|
||||
|
||||
Segment s = listeSegments.get(i);
|
||||
if (s.x + s.xLong < 0) {
|
||||
Segment nouveauSegment = CreerSegment(xActuel);
|
||||
Segment nouveauSegment = CreerSegmentSuivant();
|
||||
nouveauSegment.x = dernierSegment.x + dernierSegment.xLong;
|
||||
listeSegments.set(i, nouveauSegment);
|
||||
|
||||
@@ -125,4 +140,4 @@ public class Ligne extends ObjetGraphique {
|
||||
|
||||
return SegCourant.y + SegCourant.yLong * t;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user