commentaires
This commit is contained in:
@@ -14,18 +14,19 @@ public class Bonus extends ObjetCollectible {
|
||||
|
||||
@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
|
||||
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);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void appliquerEffet(Joueur joueur) {
|
||||
if (!monJeu.cheatMode) joueur.ajouterVie();
|
||||
}
|
||||
} // En cheat mode, le bonus ne sert à rien (on a déjà l'invincibilité)
|
||||
|
||||
|
||||
@Override
|
||||
protected void dessiner(Graphics g) {
|
||||
|
||||
@@ -19,7 +19,7 @@ public class BonusTaille extends ObjetCollectible {
|
||||
|
||||
@Override
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
@@ -182,7 +182,7 @@ public class Jeu implements KeyListener, ActionListener, MouseListener {
|
||||
for (Joueur joueur : joueurs) {
|
||||
joueur.mettreAJourRayon(rayonBase);
|
||||
joueur.mettreAJourInvincibilite();
|
||||
if (!cheatMode) joueur.verifierCollisionLigne(lili);
|
||||
if (!cheatMode) joueur.verifierCollisionLigne(lili); // si cheat mode activé : plus de perte de vie
|
||||
joueur.resterDansLigne(lili);
|
||||
}
|
||||
|
||||
|
||||
@@ -19,12 +19,13 @@ public class Malus extends ObjetCollectible {
|
||||
|
||||
@Override
|
||||
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);
|
||||
}
|
||||
|
||||
@Override
|
||||
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();
|
||||
}
|
||||
|
||||
|
||||
@@ -4,9 +4,11 @@ import java.awt.Color;
|
||||
import java.awt.Graphics;
|
||||
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 {
|
||||
|
||||
|
||||
|
||||
protected double taille;
|
||||
protected boolean actif = false;
|
||||
protected int compteurFrames = 0;
|
||||
@@ -21,6 +23,7 @@ public abstract class ObjetCollectible extends ObjetGraphique {
|
||||
this.joueurs = joueurs;
|
||||
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 double calculerY(double hauteurLigne);
|
||||
@@ -44,6 +47,8 @@ public abstract class ObjetCollectible extends ObjetGraphique {
|
||||
if (!actif) compteurFrames++;
|
||||
|
||||
if (compteurFrames >= getSeuilActivation() && !actif) {
|
||||
// Quand on a attendu assez longtemps, l'objet spawn à droite de l'écran
|
||||
|
||||
actif = true;
|
||||
dejaCapture = false;
|
||||
x = 800;
|
||||
@@ -58,12 +63,13 @@ public abstract class ObjetCollectible extends ObjetGraphique {
|
||||
|
||||
if (actif) {
|
||||
double vitesseLigne = monJeu.gestionnaireNiveau.getVitesseScroll();
|
||||
x -= vitesseLigne;
|
||||
x -= vitesseLigne; // l'objet suit la vitesse du niveau
|
||||
|
||||
if (!dejaCapture) {
|
||||
for (Joueur joueur : joueurs) {
|
||||
if (joueur.verifierCollisionCollectible(x, y, taille, vitesseLigne)) {
|
||||
appliquerEffet(joueur);
|
||||
dejaCapture = true;
|
||||
appliquerEffet(joueur); // délégué à la sous-classe
|
||||
dejaCapture = true; // évite d'appliquer l'effet plusieurs fois
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user