Ajout bonus de Taille
augmente la taille du cercle temporairement quand ramassé
This commit is contained in:
88
src/BonusTaille.java
Normal file
88
src/BonusTaille.java
Normal file
@@ -0,0 +1,88 @@
|
|||||||
|
package linea;
|
||||||
|
|
||||||
|
import java.awt.Color;
|
||||||
|
import java.awt.Graphics;
|
||||||
|
|
||||||
|
public class BonusTaille extends ObjetGraphique {
|
||||||
|
|
||||||
|
protected double taille = 12;
|
||||||
|
protected boolean actif = false;
|
||||||
|
protected int compteurFrames = 200; // pour avoir une position differente des autres bonuss
|
||||||
|
protected boolean dejaCapture = false;
|
||||||
|
|
||||||
|
protected Ligne maLigne;
|
||||||
|
protected Cercle monCercle;
|
||||||
|
protected Jeu monJeu;
|
||||||
|
|
||||||
|
public BonusTaille(Ligne l, Cercle c, Jeu j) {
|
||||||
|
this.maLigne = l;
|
||||||
|
this.monCercle = c;
|
||||||
|
this.monJeu = j;
|
||||||
|
this.couleur = Color.CYAN;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
void Afficher(Graphics g) {
|
||||||
|
if (actif) {
|
||||||
|
if (dejaCapture) {
|
||||||
|
g.setColor(new Color(255, 255, 255, 100));
|
||||||
|
} else {
|
||||||
|
g.setColor(this.couleur);
|
||||||
|
}
|
||||||
|
g.fillOval((int)Math.round(x), (int)Math.round(y), (int)taille, (int)taille);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
void Animer() {
|
||||||
|
if (!actif) {
|
||||||
|
compteurFrames++;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (compteurFrames >= 320 && !actif) {
|
||||||
|
actif = true;
|
||||||
|
dejaCapture = false;
|
||||||
|
x = 800;
|
||||||
|
|
||||||
|
double hauteurLigne = 300;
|
||||||
|
if (maLigne.dernierSegment != null) {
|
||||||
|
hauteurLigne = maLigne.dernierSegment.y;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Math.random() > 0.5) {
|
||||||
|
y = hauteurLigne - 8 - (Math.random() * 45);
|
||||||
|
} else {
|
||||||
|
y = hauteurLigne + 8 + (Math.random() * 45);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (y < 20) y = 20;
|
||||||
|
if (y > 550) y = 550;
|
||||||
|
|
||||||
|
compteurFrames = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (actif) {
|
||||||
|
double vitesseLigne = monJeu.gestionnaireNiveau.getVitesseScroll();
|
||||||
|
x -= vitesseLigne;
|
||||||
|
|
||||||
|
double centreX = x + (taille / 2.0);
|
||||||
|
|
||||||
|
if (centreX <= monCercle.x && centreX > monCercle.x - vitesseLigne) {
|
||||||
|
double hautCercle = monCercle.y - monCercle.getRayon();
|
||||||
|
double basCercle = monCercle.y + monCercle.getRayon();
|
||||||
|
|
||||||
|
if (y > hautCercle && (y + taille) < basCercle) {
|
||||||
|
if (!dejaCapture) {
|
||||||
|
monJeu.activerBonusTaille();
|
||||||
|
dejaCapture = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (x + taille < 0) {
|
||||||
|
actif = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
23
src/Jeu.java
23
src/Jeu.java
@@ -42,6 +42,8 @@ public class Jeu implements KeyListener, ActionListener, MouseListener {
|
|||||||
public int typeInvincibilite = 0;
|
public int typeInvincibilite = 0;
|
||||||
public boolean invincibiliteRouge = false;
|
public boolean invincibiliteRouge = false;
|
||||||
|
|
||||||
|
protected boolean bonusTailleActif = false;
|
||||||
|
protected int compteurBonusTaille = 0;
|
||||||
|
|
||||||
protected String pseudo = "";
|
protected String pseudo = "";
|
||||||
protected JFrame fenetre;
|
protected JFrame fenetre;
|
||||||
@@ -116,9 +118,10 @@ public class Jeu implements KeyListener, ActionListener, MouseListener {
|
|||||||
public void lancerPartie(String pseudoSaisi) {
|
public void lancerPartie(String pseudoSaisi) {
|
||||||
pseudo = pseudoSaisi;
|
pseudo = pseudoSaisi;
|
||||||
|
|
||||||
// C'est cette ligne qui donne vie au bonus !
|
// lignes pour ajouter les bonus
|
||||||
ecran.ajouterObjet(new Bonus(lili, demiCercleAvant, this));
|
ecran.ajouterObjet(new Bonus(lili, demiCercleAvant, this));
|
||||||
ecran.ajouterObjet(new Malus(lili, demiCercleAvant, this));
|
ecran.ajouterObjet(new Malus(lili, demiCercleAvant, this));
|
||||||
|
ecran.ajouterObjet(new BonusTaille(lili, demiCercleAvant, this));
|
||||||
|
|
||||||
// A FAIRE : placer dans l'écran tous les objets graphiques nécessaires
|
// A FAIRE : placer dans l'écran tous les objets graphiques nécessaires
|
||||||
ecran.ajouterObjet(demiCercleArriere);
|
ecran.ajouterObjet(demiCercleArriere);
|
||||||
@@ -142,6 +145,8 @@ public class Jeu implements KeyListener, ActionListener, MouseListener {
|
|||||||
estGameOver = false;
|
estGameOver = false;
|
||||||
compteurInvincible = 0;
|
compteurInvincible = 0;
|
||||||
invincibiliteRouge = false;
|
invincibiliteRouge = false;
|
||||||
|
bonusTailleActif = false;
|
||||||
|
compteurBonusTaille = 0;
|
||||||
gestionnaireNiveau.reinitialiser();
|
gestionnaireNiveau.reinitialiser();
|
||||||
gestionnaireFinDePartie.reinitialiser();
|
gestionnaireFinDePartie.reinitialiser();
|
||||||
ecran.demarrer();
|
ecran.demarrer();
|
||||||
@@ -154,6 +159,12 @@ public class Jeu implements KeyListener, ActionListener, MouseListener {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void activerBonusTaille() {
|
||||||
|
bonusTailleActif = true;
|
||||||
|
// A 40ms par tick d'horloge, 150 frames = environ 6 secondes de bonus
|
||||||
|
compteurBonusTaille = 150;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
if (estGameOver == true) {
|
if (estGameOver == true) {
|
||||||
@@ -168,6 +179,16 @@ public class Jeu implements KeyListener, ActionListener, MouseListener {
|
|||||||
ecran.setCouleurFond(gestionnaireNiveau.getCouleurFondInterpolee());
|
ecran.setCouleurFond(gestionnaireNiveau.getCouleurFondInterpolee());
|
||||||
|
|
||||||
double rayon = gestionnaireNiveau.getRayonCercle();
|
double rayon = gestionnaireNiveau.getRayonCercle();
|
||||||
|
|
||||||
|
|
||||||
|
if (bonusTailleActif == true) {
|
||||||
|
rayon = rayon + 30;
|
||||||
|
compteurBonusTaille = compteurBonusTaille - 1;
|
||||||
|
|
||||||
|
if (compteurBonusTaille <= 0) {
|
||||||
|
bonusTailleActif = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
demiCercleAvant.setRayon(rayon);
|
demiCercleAvant.setRayon(rayon);
|
||||||
demiCercleArriere.setRayon(rayon);
|
demiCercleArriere.setRayon(rayon);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user