inversion de sens du jeu

This commit is contained in:
2026-03-27 10:46:24 +01:00
parent 0c1aa718b8
commit 60b656d394
5 changed files with 60 additions and 3 deletions

View File

@@ -44,6 +44,7 @@ public class CampagneAutoroute {
jeu.prochainBonusScore = 100 + jeu.random.nextInt(36); jeu.prochainBonusScore = 100 + jeu.random.nextInt(36);
jeu.prochainMalusScore = 100 + jeu.random.nextInt(46); jeu.prochainMalusScore = 100 + jeu.random.nextInt(46);
jeu.prochainInversionScore = 150 + jeu.random.nextInt(100);
jeu.layout.show(jeu.conteneurPrincipal, "JEU"); jeu.layout.show(jeu.conteneurPrincipal, "JEU");
jeu.ecran.setFocusable(true); jeu.ecran.setFocusable(true);

View File

@@ -46,6 +46,7 @@ public class CampagneEspace {
jeu.prochainBonusScore = 100 + jeu.random.nextInt(26); jeu.prochainBonusScore = 100 + jeu.random.nextInt(26);
jeu.prochainMalusScore = 100 + jeu.random.nextInt(26); jeu.prochainMalusScore = 100 + jeu.random.nextInt(26);
jeu.prochainInversionScore = 150 + jeu.random.nextInt(100);
jeu.layout.show(jeu.conteneurPrincipal, "JEU"); jeu.layout.show(jeu.conteneurPrincipal, "JEU");
jeu.ecran.setFocusable(true); jeu.ecran.setFocusable(true);

View File

@@ -47,6 +47,7 @@ public class CampagneOcean {
jeuPrincipal.prochainBonusScore = 100 + jeuPrincipal.random.nextInt(26); jeuPrincipal.prochainBonusScore = 100 + jeuPrincipal.random.nextInt(26);
jeuPrincipal.prochainMalusScore = 100 + jeuPrincipal.random.nextInt(26); jeuPrincipal.prochainMalusScore = 100 + jeuPrincipal.random.nextInt(26);
jeuPrincipal.prochainInversionScore = 150 + jeuPrincipal.random.nextInt(100);
jeuPrincipal.layout.show(jeuPrincipal.conteneurPrincipal, "JEU"); jeuPrincipal.layout.show(jeuPrincipal.conteneurPrincipal, "JEU");
jeuPrincipal.ecran.setFocusable(true); jeuPrincipal.ecran.setFocusable(true);

29
src/linea/Inversion.java Normal file
View File

@@ -0,0 +1,29 @@
package linea;
import java.awt.Color;
import java.awt.Graphics;
public class Inversion extends ObjetGraphique {
private int largeur = 20;
private int hauteur = 20;
private double vitesseDefilement;
public Inversion(double x, double y, double vitesse) {
this.x = x;
this.y = y;
this.vitesseDefilement = vitesse;
this.couleur = new Color(128, 0, 255);
}
@Override
public void Afficher(Graphics g) {
g.setColor(this.couleur);
g.fillRect((int)x, (int)y, largeur, hauteur);
}
@Override
void Animer() {
this.x -= vitesseDefilement;
}
}

View File

@@ -32,6 +32,10 @@ public class Jeu implements KeyListener, ActionListener {
protected Random random = new Random(); protected Random random = new Random();
protected int prochainBonusScore; protected int prochainBonusScore;
protected int prochainMalusScore; protected int prochainMalusScore;
protected int prochainInversionScore;
protected boolean inversionActive = false;
protected int inversionTimer = 0;
protected int utilisateurIdConnecte = -1; protected int utilisateurIdConnecte = -1;
protected String identifiantUtilisateurConnecte; protected String identifiantUtilisateurConnecte;
@@ -177,6 +181,7 @@ public class Jeu implements KeyListener, ActionListener {
this.prochainBonusScore = 100 + random.nextInt(36); this.prochainBonusScore = 100 + random.nextInt(36);
this.prochainMalusScore = 100 + random.nextInt(46); this.prochainMalusScore = 100 + random.nextInt(46);
this.prochainInversionScore = 500 + random.nextInt(200);
} }
@Override @Override
@@ -215,9 +220,26 @@ public class Jeu implements KeyListener, ActionListener {
} }
} }
if (score == prochainInversionScore) {
double xSpawn = 810;
double yLigne = laligne.getHauteurLigneA(xSpawn);
if (yLigne != -1) {
ecran.ajouterObjet(new Inversion(xSpawn, yLigne - 10, laligne.vitesseDefilement));
prochainInversionScore = score + 250 + random.nextInt(150);
}
}
if (inversionActive) {
inversionTimer--;
laligne.vitesseDefilement = -Math.abs(laligne.vitesseDefilement);
if (inversionTimer <= 0) {
inversionActive = false;
laligne.vitesseDefilement = Math.abs(laligne.vitesseDefilement);
}
}
for (int i = ecran.listeObjets.size() - 1; i >= 0; i--) { for (int i = ecran.listeObjets.size() - 1; i >= 0; i--) {
ObjetGraphique obj = ecran.listeObjets.get(i); ObjetGraphique obj = ecran.listeObjets.get(i);
if (obj instanceof Bonus || obj instanceof Malus) { if (obj instanceof Bonus || obj instanceof Malus || obj instanceof Inversion) {
double itemLargeur = 20.0; double itemLargeur = 20.0;
double itemHauteur = 20.0; double itemHauteur = 20.0;
@@ -238,12 +260,15 @@ public class Jeu implements KeyListener, ActionListener {
double newRayon = demiCercleAvant.getRayon() + 3; double newRayon = demiCercleAvant.getRayon() + 3;
demiCercleAvant.setRayon(newRayon); demiCercleAvant.setRayon(newRayon);
demiCercleArriere.setRayon(newRayon); demiCercleArriere.setRayon(newRayon);
} else { } else if(obj instanceof Malus){
double newRayon = demiCercleAvant.getRayon() - 3; double newRayon = demiCercleAvant.getRayon() - 3;
if (newRayon < 10) if (newRayon < 10)
newRayon = 10; newRayon = 10;
demiCercleAvant.setRayon(newRayon); demiCercleAvant.setRayon(newRayon);
demiCercleArriere.setRayon(newRayon); demiCercleArriere.setRayon(newRayon);
} else if(obj instanceof Inversion){
inversionActive = true;
inversionTimer = 75 + random.nextInt(50);
} }
ecran.listeObjets.remove(i); ecran.listeObjets.remove(i);
} }
@@ -260,7 +285,7 @@ public class Jeu implements KeyListener, ActionListener {
if (!modeInvincible) gameOver(); if (!modeInvincible) gameOver();
} }
} else { } else {
victoire(); if (!inversionActive) victoire();
} }
} }