From fb596e318844986af64d8b38e2eabc08d06f42a3 Mon Sep 17 00:00:00 2001 From: Sehl Aylane Date: Fri, 20 Mar 2026 10:24:15 +0100 Subject: [PATCH] ajout du HardMode --- src/main/java/sae/chuzzle/Objectif.java | 98 +++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 src/main/java/sae/chuzzle/Objectif.java diff --git a/src/main/java/sae/chuzzle/Objectif.java b/src/main/java/sae/chuzzle/Objectif.java new file mode 100644 index 0000000..30469d9 --- /dev/null +++ b/src/main/java/sae/chuzzle/Objectif.java @@ -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; + } +}