ajout du HardMode
This commit is contained in:
@@ -0,0 +1,98 @@
|
|||||||
|
package sae.chuzzle;
|
||||||
|
|
||||||
|
import android.os.Bundle;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Représente un objectif dynamique pour le mode Hard.
|
||||||
|
*/
|
||||||
|
public class Objectif {
|
||||||
|
private final int couleur; // Index de la couleur cible (0-6)
|
||||||
|
private final int nbSeriesCible; // Nombre de séries à réaliser
|
||||||
|
private final int nbCoupsMax; // Limite de coups initiale
|
||||||
|
private final int poids; // Probabilité d'apparition (poids pour le tirage)
|
||||||
|
|
||||||
|
private int seriesRealisees = 0;
|
||||||
|
private int coupsRestants;
|
||||||
|
|
||||||
|
public Objectif(int couleur, int nbSeries, int nbCoupsMax, int poids) {
|
||||||
|
this.couleur = couleur;
|
||||||
|
this.nbSeriesCible = nbSeries;
|
||||||
|
this.nbCoupsMax = nbCoupsMax;
|
||||||
|
this.coupsRestants = nbCoupsMax;
|
||||||
|
this.poids = poids;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Getters
|
||||||
|
public int getCouleur() { return couleur; }
|
||||||
|
public int getNbSeriesCible() { return nbSeriesCible; }
|
||||||
|
public int getNbCoupsMax() { return nbCoupsMax; }
|
||||||
|
public int getCoupsRestants() {
|
||||||
|
return coupsRestants;
|
||||||
|
}
|
||||||
|
public int getPoids() {
|
||||||
|
return poids;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void decrementerCoups() {
|
||||||
|
|
||||||
|
if (coupsRestants > 0) coupsRestants--;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ajouterSeries(int n) {
|
||||||
|
|
||||||
|
this.seriesRealisees += n;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean estReussi() {
|
||||||
|
|
||||||
|
return seriesRealisees >= nbSeriesCible;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean estEchoue() {
|
||||||
|
|
||||||
|
return coupsRestants <= 0 && !estReussi();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDescription() {
|
||||||
|
String nomCouleur = obtenirNomCouleur(couleur);
|
||||||
|
return "Éclatez " + nbSeriesCible + " fois des Chuzzle " + nomCouleur +
|
||||||
|
" en moins de " + nbCoupsMax + " coups (" + seriesRealisees + "/" + nbSeriesCible +
|
||||||
|
").\nCoups restants : " + coupsRestants;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String obtenirNomCouleur(int c) {
|
||||||
|
switch (c) {
|
||||||
|
case 0: return "Rouge";
|
||||||
|
case 1: return "Bleu";
|
||||||
|
case 2: return "Vert";
|
||||||
|
case 3: return "Jaune";
|
||||||
|
case 4: return "Rose";
|
||||||
|
case 5: return "Orange";
|
||||||
|
case 6: return "Gris";
|
||||||
|
default: return "Inconnue";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Persistance pour la rotation d'écran
|
||||||
|
public void sauvegarder(Bundle out) {
|
||||||
|
out.putInt("obj_couleur", couleur);
|
||||||
|
out.putInt("obj_cible", nbSeriesCible);
|
||||||
|
out.putInt("obj_max", nbCoupsMax);
|
||||||
|
out.putInt("obj_restants", coupsRestants);
|
||||||
|
out.putInt("obj_realise", seriesRealisees);
|
||||||
|
out.putInt("obj_poids", poids);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Objectif restaurer(Bundle in) {
|
||||||
|
if (in == null || !in.containsKey("obj_couleur")) return null;
|
||||||
|
Objectif obj = new Objectif(
|
||||||
|
in.getInt("obj_couleur"),
|
||||||
|
in.getInt("obj_cible"),
|
||||||
|
in.getInt("obj_max"),
|
||||||
|
in.getInt("obj_poids")
|
||||||
|
);
|
||||||
|
obj.coupsRestants = in.getInt("obj_restants");
|
||||||
|
obj.seriesRealisees = in.getInt("obj_realise");
|
||||||
|
return obj;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user