ajout du HardMode

This commit is contained in:
Sehl Aylane
2026-03-20 10:24:15 +01:00
parent 98ace478c2
commit fb596e3188
+98
View File
@@ -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;
}
}