Compare commits
3 Commits
f295a34ca5
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 4ed39dd92a | |||
|
|
5660a6c5c6 | ||
|
|
607ee1fff4 |
@@ -14,18 +14,19 @@ public class Bonus extends ObjetCollectible {
|
|||||||
|
|
||||||
@Override protected int getSeuilActivation() { return 220; }
|
@Override protected int getSeuilActivation() { return 220; }
|
||||||
|
|
||||||
@Override protected Color getCouleurCapture() { return Color.BLUE; }
|
@Override protected Color getCouleurCapture() { return Color.BLUE; } // couleur après avoir été ramasssé
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected double calculerY(double hauteurLigne) {
|
protected double calculerY(double hauteurLigne) {
|
||||||
if (Math.random() > 0.5) return hauteurLigne - 10 - (Math.random() * 50);
|
if (Math.random() > 0.5) return hauteurLigne - 10 - (Math.random() * 50); // position du bonus
|
||||||
else return hauteurLigne + 10 + (Math.random() * 50);
|
else return hauteurLigne + 10 + (Math.random() * 50);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void appliquerEffet(Joueur joueur) {
|
protected void appliquerEffet(Joueur joueur) {
|
||||||
if (!monJeu.cheatMode) joueur.ajouterVie();
|
if (!monJeu.cheatMode) joueur.ajouterVie();
|
||||||
}
|
} // En cheat mode, le bonus ne sert à rien (on a déjà l'invincibilité)
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void dessiner(Graphics g) {
|
protected void dessiner(Graphics g) {
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ public class BonusTaille extends ObjetCollectible {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected double calculerY(double hauteurLigne) {
|
protected double calculerY(double hauteurLigne) {
|
||||||
if (Math.random() > 0.5) return hauteurLigne - 8 - (Math.random() * 45);
|
if (Math.random() > 0.5) return hauteurLigne - 8 - (Math.random() * 45); // position du bonus
|
||||||
else return hauteurLigne + 8 + (Math.random() * 45);
|
else return hauteurLigne + 8 + (Math.random() * 45);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ public class GestionnaireNiveau {
|
|||||||
|
|
||||||
public GestionnaireNiveau() {
|
public GestionnaireNiveau() {
|
||||||
try {
|
try {
|
||||||
|
//chargement driver
|
||||||
Class.forName("org.sqlite.JDBC");
|
Class.forName("org.sqlite.JDBC");
|
||||||
} catch (ClassNotFoundException e) {
|
} catch (ClassNotFoundException e) {
|
||||||
System.err.println("[BDD] Impossible de charger le driver SQLite.");
|
System.err.println("[BDD] Impossible de charger le driver SQLite.");
|
||||||
@@ -79,6 +80,7 @@ public class GestionnaireNiveau {
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
//transition smooth entre les niveau
|
||||||
|
|
||||||
public Niveau getNiveauActuel() {
|
public Niveau getNiveauActuel() {
|
||||||
return niveaux.get(indexNiveau);
|
return niveaux.get(indexNiveau);
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ public class GestionnaireScore {
|
|||||||
|
|
||||||
public GestionnaireScore() {
|
public GestionnaireScore() {
|
||||||
try {
|
try {
|
||||||
|
//chargement driver SQLite
|
||||||
Class.forName("org.sqlite.JDBC");
|
Class.forName("org.sqlite.JDBC");
|
||||||
} catch (ClassNotFoundException e) {
|
} catch (ClassNotFoundException e) {
|
||||||
System.err.println("[BDD] Impossible de charger le driver SQLite.");
|
System.err.println("[BDD] Impossible de charger le driver SQLite.");
|
||||||
@@ -25,6 +26,7 @@ public class GestionnaireScore {
|
|||||||
try (Connection conn = DriverManager.getConnection(URL);
|
try (Connection conn = DriverManager.getConnection(URL);
|
||||||
PreparedStatement pstmt = conn.prepareStatement(sql)) {
|
PreparedStatement pstmt = conn.prepareStatement(sql)) {
|
||||||
|
|
||||||
|
//contre injection SQL
|
||||||
pstmt.setString(1, nom.trim());
|
pstmt.setString(1, nom.trim());
|
||||||
pstmt.setInt(2, points);
|
pstmt.setInt(2, points);
|
||||||
pstmt.executeUpdate();
|
pstmt.executeUpdate();
|
||||||
|
|||||||
@@ -182,7 +182,7 @@ public class Jeu implements KeyListener, ActionListener, MouseListener {
|
|||||||
for (Joueur joueur : joueurs) {
|
for (Joueur joueur : joueurs) {
|
||||||
joueur.mettreAJourRayon(rayonBase);
|
joueur.mettreAJourRayon(rayonBase);
|
||||||
joueur.mettreAJourInvincibilite();
|
joueur.mettreAJourInvincibilite();
|
||||||
if (!cheatMode) joueur.verifierCollisionLigne(lili);
|
if (!cheatMode) joueur.verifierCollisionLigne(lili); // si cheat mode activé : plus de perte de vie
|
||||||
joueur.resterDansLigne(lili);
|
joueur.resterDansLigne(lili);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -19,12 +19,13 @@ public class Malus extends ObjetCollectible {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected double calculerY(double hauteurLigne) {
|
protected double calculerY(double hauteurLigne) {
|
||||||
if (Math.random() > 0.5) return hauteurLigne - 75 - (Math.random() * 30);
|
if (Math.random() > 0.5) return hauteurLigne - 75 - (Math.random() * 30); // position du malus
|
||||||
else return hauteurLigne + 75 + (Math.random() * 30);
|
else return hauteurLigne + 75 + (Math.random() * 30);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void appliquerEffet(Joueur joueur) {
|
protected void appliquerEffet(Joueur joueur) {
|
||||||
|
// On ne punit pas si le joueur est en cheat mode ou en période d'invincibilité (clignotement)
|
||||||
if (!monJeu.cheatMode && !joueur.estInvincible()) joueur.retirerVie();
|
if (!monJeu.cheatMode && !joueur.estInvincible()) joueur.retirerVie();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,9 +4,11 @@ import java.awt.Color;
|
|||||||
import java.awt.Graphics;
|
import java.awt.Graphics;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
// Classe de base pour tous les objets qu'on peut ramasser (bonus, malus...)
|
||||||
|
// Elle gère toute la logique commune : apparition, déplacement, collision
|
||||||
|
|
||||||
public abstract class ObjetCollectible extends ObjetGraphique {
|
public abstract class ObjetCollectible extends ObjetGraphique {
|
||||||
|
|
||||||
|
|
||||||
protected double taille;
|
protected double taille;
|
||||||
protected boolean actif = false;
|
protected boolean actif = false;
|
||||||
protected int compteurFrames = 0;
|
protected int compteurFrames = 0;
|
||||||
@@ -21,6 +23,7 @@ public abstract class ObjetCollectible extends ObjetGraphique {
|
|||||||
this.joueurs = joueurs;
|
this.joueurs = joueurs;
|
||||||
this.monJeu = j;
|
this.monJeu = j;
|
||||||
}
|
}
|
||||||
|
// Chaque sous-classe décide quand elle apparaît, où, quel effet elle a et comment elle se dessine
|
||||||
|
|
||||||
protected abstract int getSeuilActivation();
|
protected abstract int getSeuilActivation();
|
||||||
protected abstract double calculerY(double hauteurLigne);
|
protected abstract double calculerY(double hauteurLigne);
|
||||||
@@ -44,6 +47,8 @@ public abstract class ObjetCollectible extends ObjetGraphique {
|
|||||||
if (!actif) compteurFrames++;
|
if (!actif) compteurFrames++;
|
||||||
|
|
||||||
if (compteurFrames >= getSeuilActivation() && !actif) {
|
if (compteurFrames >= getSeuilActivation() && !actif) {
|
||||||
|
// Quand on a attendu assez longtemps, l'objet spawn à droite de l'écran
|
||||||
|
|
||||||
actif = true;
|
actif = true;
|
||||||
dejaCapture = false;
|
dejaCapture = false;
|
||||||
x = 800;
|
x = 800;
|
||||||
@@ -58,12 +63,13 @@ public abstract class ObjetCollectible extends ObjetGraphique {
|
|||||||
|
|
||||||
if (actif) {
|
if (actif) {
|
||||||
double vitesseLigne = monJeu.gestionnaireNiveau.getVitesseScroll();
|
double vitesseLigne = monJeu.gestionnaireNiveau.getVitesseScroll();
|
||||||
x -= vitesseLigne;
|
x -= vitesseLigne; // l'objet suit la vitesse du niveau
|
||||||
|
|
||||||
if (!dejaCapture) {
|
if (!dejaCapture) {
|
||||||
for (Joueur joueur : joueurs) {
|
for (Joueur joueur : joueurs) {
|
||||||
if (joueur.verifierCollisionCollectible(x, y, taille, vitesseLigne)) {
|
if (joueur.verifierCollisionCollectible(x, y, taille, vitesseLigne)) {
|
||||||
appliquerEffet(joueur);
|
appliquerEffet(joueur); // délégué à la sous-classe
|
||||||
dejaCapture = true;
|
dejaCapture = true; // évite d'appliquer l'effet plusieurs fois
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user