update:Boule

This commit is contained in:
2026-03-28 14:31:55 +01:00
parent 1e7f70ab6b
commit b9dad77420
16 changed files with 41 additions and 20 deletions

BIN
Jeu.db Normal file

Binary file not shown.

BIN
linea/BouleBonus.class Normal file

Binary file not shown.

BIN
linea/Cercle.class Normal file

Binary file not shown.

View File

@@ -6,6 +6,16 @@ import java.awt.Graphics2D;
import java.awt.geom.Arc2D;
public class Cercle extends ObjetGraphique{ // il s'agit plutôt d'arcs de cercle
private static final BasicStroke ARC_STROKE = new BasicStroke(5.0f);
private static final double GRAVITE = 0.95;
private static final double POUSSEE = 1.45;
private static final double AMORTISSEMENT = 0.92;
private static final double VITESSE_MIN = -6.5;
private static final double VITESSE_MAX = 6.5;
private static final double BORD_HAUT = 0;
private static final double BORD_BAS = 600;
private final Arc2D.Double arc = new Arc2D.Double();
// 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
@@ -94,11 +104,12 @@ public class Cercle extends ObjetGraphique{ // il s'agit plutôt d'arcs de cercl
void Afficher(Graphics g) {
// choix de la couleur et de l'épaisseur
Graphics2D g2D = (Graphics2D) g;
g2D.setStroke(new BasicStroke(5.0f));
g2D.setStroke(ARC_STROKE);
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));
arc.setArc(x - rayon / 2.0, y - rayon, rayon, rayon * 2.0, debut, fin, Arc2D.OPEN);
g2D.draw(arc);
}
// Accesseur pour savoir si le joueur maintient la montée
@@ -112,35 +123,31 @@ public class Cercle extends ObjetGraphique{ // il s'agit plutôt d'arcs de cercl
//-------------------------------------------------------------------------
@Override
void Animer() {
double gravite = 0.95;
double poussee = 1.45;
double amortissement = 0.92;
if (montee==true) {
vitesse -= poussee;
if (montee) {
vitesse -= POUSSEE;
} else {
vitesse += gravite;
vitesse += GRAVITE;
}
// Lissage global pour un ressenti plus régulier.
vitesse *= amortissement;
vitesse *= AMORTISSEMENT;
if (vitesse < -6.5) {
vitesse = -6.5;
if (vitesse < VITESSE_MIN) {
vitesse = VITESSE_MIN;
}
if (vitesse > 6.5) {
vitesse = 6.5;
if (vitesse > VITESSE_MAX) {
vitesse = VITESSE_MAX;
}
depY = vitesse;
y += depY;
//position
if(y<= 0 + rayon){
y = 0 + rayon;
if (y <= BORD_HAUT + rayon) {
y = BORD_HAUT + rayon;
vitesse = 0;
}else if(y>=600 - rayon){
y = 600 - rayon;
} else if (y >= BORD_BAS - rayon) {
y = BORD_BAS - rayon;
vitesse = 0;
}

Binary file not shown.

View File

@@ -270,7 +270,7 @@ public class DatabaseConnection {
int niveauxTermines = Math.max(0, niveauMax - 1);
return "Campagne\n"
+ "Niveau max débloqué : " + niveauMax
+ "Niveau max atteint : " + niveauMax
+ "\nNiveaux terminés : " + niveauxTermines;
}
}

BIN
linea/Jeu.class Normal file

Binary file not shown.

View File

@@ -39,10 +39,17 @@ public class Jeu implements KeyListener, ActionListener {
private int meilleurSansCompte = 0;
private int mortsSansCompte = 0;
private int tempsSansCompteSec = 0;
private int niveauMaxAtteintSansCompte = 1;
private long debutPartieMs = 0;
private boolean immortel = false;
private final boolean modeCampagne;
private void mettreAJourNiveauMaxSansCompte(int niveau) {
if (idCompte <= 0) {
niveauMaxAtteintSansCompte = Math.max(niveauMaxAtteintSansCompte, niveau);
}
}
private int meilleurActuel() {
return idCompte > 0 ? db.getMeilleurScoreParCompte(idCompte) : meilleurSansCompte;
}
@@ -53,6 +60,7 @@ public class Jeu implements KeyListener, ActionListener {
}
return "💀 Nombre de morts: " + mortsSansCompte
+ "\n⏱ Temps total: " + tempsSansCompteSec + "s"
+ "\n📈 Niveau max atteint: " + niveauMaxAtteintSansCompte
+ "\n🏆 Meilleur score: " + meilleurSansCompte;
}
@@ -78,6 +86,7 @@ public class Jeu implements KeyListener, ActionListener {
this.idCompte = idCompte;
this._niv = niveau;
this.modeCampagne = modeCampagne;
mettreAJourNiveauMaxSansCompte(_niv);
labScore = new JLabel();
labScore.setText("<html><h3>score : 0</h3></html>");
@@ -260,6 +269,7 @@ public class Jeu implements KeyListener, ActionListener {
meilleurSansCompte = 0;
mortsSansCompte = 0;
tempsSansCompteSec = 0;
niveauMaxAtteintSansCompte = Math.max(1, _niv);
} else {
idCompte = db.getIdParPseudo(choix);
}
@@ -444,6 +454,7 @@ public class Jeu implements KeyListener, ActionListener {
}
_niv = nouveauNiveau;
mettreAJourNiveauMaxSansCompte(_niv);
resetLevel();
return;
}
@@ -509,6 +520,7 @@ public class Jeu implements KeyListener, ActionListener {
int nouveauNiveau = choisirNouveauNiveau();
if (nouveauNiveau > 0) {
_niv = nouveauNiveau;
mettreAJourNiveauMaxSansCompte(_niv);
resetLevel();
break;
}

BIN
linea/Ligne.class Normal file

Binary file not shown.

Binary file not shown.

BIN
linea/LineaAppli.class Normal file

Binary file not shown.

View File

@@ -237,6 +237,8 @@ public class LineaAppli {
// Classe de base de l'application, rien à modifier ici
//-------------------------------------------------------------------------
public static void main(String[] arg) {
UIManager.put("OptionPane.yesButtonText", "Oui");
UIManager.put("OptionPane.noButtonText", "Non");
UIManager.put("OptionPane.cancelButtonText", "Retour");
DatabaseConnection db = new DatabaseConnection();

BIN
linea/ObjetGraphique.class Normal file

Binary file not shown.

BIN
linea/Segment.class Normal file

Binary file not shown.

BIN
linea/ZoneDessin.class Normal file

Binary file not shown.

View File

@@ -114,7 +114,7 @@ public class ZoneDessin extends JPanel {
int intervalleBoule = (int) Math.round(intervalleBouleBase - progression * 20.0); // ~165 -> 145
double probaVerteBase = 0.35 - progression * 0.06; // ~35% -> 29%
double variationAleatoire = (Math.random() - 0.5) * 0.10; // +/- 5%
double probaVerte = Math.max(0.22, Math.min(0.45, probaVerteBase + variationAleatoire));
double probaVerte = Math.max(0.24, Math.min(0.47, probaVerteBase + variationAleatoire + 0.02));
compteurBoule++;
if (compteurBoule >= intervalleBoule && ligneObjet != null) {