mise à plat

This commit is contained in:
2026-03-28 16:01:01 +01:00
parent bcb0f70bc7
commit f6a11af157
6 changed files with 36 additions and 31 deletions
+7 -2
View File
@@ -73,7 +73,7 @@ public class Controleur {
* Centralise la logique pour être appelé par le bouton ET par le tactile. * Centralise la logique pour être appelé par le bouton ET par le tactile.
*/ */
public void gererFinDeCoup() { public void gererFinDeCoup() {
// --- Logique Hard Mode --- // --- Logique Hard Mode
if (hardMode && objectifActuel != null) { if (hardMode && objectifActuel != null) {
// 1. Décrémenter les coups de l'objectif // 1. Décrémenter les coups de l'objectif
objectifActuel.decrementerCoups(); objectifActuel.decrementerCoups();
@@ -84,12 +84,17 @@ public class Controleur {
// 3. Vérifier réussite ou échec // 3. Vérifier réussite ou échec
if (objectifActuel.estReussi()) { if (objectifActuel.estReussi()) {
Toast.makeText(activite, "Objectif réussi !", Toast.LENGTH_SHORT).show();
gestionnaireObjectifs.incrementerReussites(); gestionnaireObjectifs.incrementerReussites();
objectifActuel = gestionnaireObjectifs.genererObjectif(); objectifActuel = gestionnaireObjectifs.genererObjectif();
} else if (objectifActuel.estEchoue()) { } else if (objectifActuel.estEchoue()) {
// Plus de coups disponibles et objectif non réussi → fin de partie immédiate // Plus de coups disponibles et objectif non réussi → fin de partie immédiate
Toast.makeText(activite, "Objectif échoué !",
Toast.LENGTH_SHORT
).show();
etatJeu.forcerFinDePartie(); etatJeu.forcerFinDePartie();
} }
} }
+10 -14
View File
@@ -21,10 +21,6 @@ public class EtatJeu {
private final int[] seriesParCouleurDernierCoup = new int[Plateau.NB_TYPES]; private final int[] seriesParCouleurDernierCoup = new int[Plateau.NB_TYPES];
public EtatJeu() {
this(System.currentTimeMillis(), false);
}
public EtatJeu(long graine, boolean hardMode) { public EtatJeu(long graine, boolean hardMode) {
this.aleatoire = new Random(graine); this.aleatoire = new Random(graine);
this.hardMode = hardMode; this.hardMode = hardMode;
@@ -120,14 +116,14 @@ public class EtatJeu {
return (int) (baseTotal * (1.0 + (nbSeriesTotal - 1) * 0.5)); return (int) (baseTotal * (1.0 + (nbSeriesTotal - 1) * 0.5));
} }
// --- Aide à la résolution --- // --- Aide à la résolution
/** /**
* Parcourt les séries détectées, calcule les points de base et compte le nombre * Parcourt les séries détectées, calcule les points de base et compte le nombre
* de séries. * de séries.
* Vérifie la couleur des cellules pour délimiter correctement les séries. * Vérifie la couleur des cellules pour délimiter correctement les séries.
* *
* @return int[2] : [0] = points de base, [1] = nombre de séries * int[2] : [0] = points de base, [1] = nombre de séries
*/ */
private int[] traiterSeries(List<int[]> series) { private int[] traiterSeries(List<int[]> series) {
boolean[][] masque = creerMasque(series); boolean[][] masque = creerMasque(series);
@@ -249,10 +245,10 @@ public class EtatJeu {
boolean[] v = new boolean[36]; boolean[] v = new boolean[36];
int[][] grid = plateau.getGrille(); int[][] grid = plateau.getGrille();
boolean[][] lk = plateau.getVerrous(); boolean[][] lk = plateau.getVerrous();
for (int i = 0; i < 6; i++) { for (int i = 0; i < Plateau.NB_LIGNES; i++) {
for (int j = 0; j < 6; j++) { for (int j = 0; j < Plateau.NB_COLONNES; j++) {
g[i * 6 + j] = grid[i][j]; g[i * Plateau.NB_LIGNES + j] = grid[i][j];
v[i * 6 + j] = lk[i][j]; v[i * Plateau.NB_LIGNES + j] = lk[i][j];
} }
} }
b.putIntArray("grille", g); b.putIntArray("grille", g);
@@ -270,10 +266,10 @@ public class EtatJeu {
boolean[] v = b.getBooleanArray("verrous"); boolean[] v = b.getBooleanArray("verrous");
int[][] grid = plateau.getGrille(); int[][] grid = plateau.getGrille();
boolean[][] lk = plateau.getVerrous(); boolean[][] lk = plateau.getVerrous();
for (int i = 0; i < 6; i++) { for (int i = 0; i < Plateau.NB_LIGNES; i++) {
for (int j = 0; j < 6; j++) { for (int j = 0; j < Plateau.NB_COLONNES; j++) {
grid[i][j] = g[i * 6 + j]; grid[i][j] = g[i * Plateau.NB_LIGNES + j];
lk[i][j] = v[i * 6 + j]; lk[i][j] = v[i * Plateau.NB_LIGNES + j];
} }
} }
score = b.getInt("score"); score = b.getInt("score");
@@ -13,6 +13,7 @@ public class GestionnaireObjectifs {
private int nbObjectifsRealises = 0; private int nbObjectifsRealises = 0;
public GestionnaireObjectifs(long graine) { public GestionnaireObjectifs(long graine) {
this.random = new Random(graine); this.random = new Random(graine);
} }
+13 -3
View File
@@ -23,14 +23,24 @@ public class Objectif {
} }
// Getters // Getters
public int getCouleur() { return couleur; } public int getCouleur() {
public int getNbSeriesCible() { return nbSeriesCible; } return couleur;
public int getNbCoupsMax() { return nbCoupsMax; } }
public int getNbSeriesCible() {
return nbSeriesCible;
}
public int getNbCoupsMax() {
return nbCoupsMax;
}
public int getCoupsRestants() { public int getCoupsRestants() {
return coupsRestants; return coupsRestants;
} }
public int getPoids() { public int getPoids() {
return poids; return poids;
} }
public void decrementerCoups() { public void decrementerCoups() {
+1 -3
View File
@@ -44,9 +44,7 @@ public class SeedActivity extends Activity implements View.OnClickListener {
String texte = etGraine.getText().toString().trim(); String texte = etGraine.getText().toString().trim();
if (texte.isEmpty()) { if (texte.isEmpty()) {
Toast.makeText( Toast.makeText(this, "Veuillez entrer une graine.",
this,
"Veuillez entrer une graine.",
Toast.LENGTH_SHORT Toast.LENGTH_SHORT
).show(); ).show();
return; return;
+4 -9
View File
@@ -1,5 +1,5 @@
package sae.chuzzle; package sae.chuzzle; // séparer le dessin de la grille et des éléments
// et vérifie les math à la fin beleck c chelou
import android.content.Context; import android.content.Context;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.BitmapFactory; import android.graphics.BitmapFactory;
@@ -22,17 +22,11 @@ public class VueGrille extends View {
/** Symboles pour le mode daltonien, un par type. */ /** Symboles pour le mode daltonien, un par type. */
private static final String[] SYMBOLES = {"", "", "", "", "", "", ""}; private static final String[] SYMBOLES = {"", "", "", "", "", "", ""};
// Données métier
private int[][] grille = new int[NB_LIGNES][NB_COLONNES]; private int[][] grille = new int[NB_LIGNES][NB_COLONNES];
private boolean[][] verrous = new boolean[NB_LIGNES][NB_COLONNES]; private boolean[][] verrous = new boolean[NB_LIGNES][NB_COLONNES];
// État du glissement // État du glissement
private Boolean animEstLigne = null; private Boolean animEstLigne = null;
private int animIndex = 0; private int animIndex = 0;
private float animDecalagePx = 0f; private float animDecalagePx = 0f;
@@ -199,7 +193,7 @@ public class VueGrille extends View {
// Dessin case principale // Dessin case principale
dessinerRectCase(canvas, type, ligne, colonne, x1, y1, x2, y2); dessinerRectCase(canvas, type, ligne, colonne, x1, y1, x2, y2);
// --- Wrap-around (réapparition de l'autre côté) --- // --- (réapparition de l'autre côté)
if (offsetX != 0f) { if (offsetX != 0f) {
float bordD = margeGauche + largeurGrille; float bordD = margeGauche + largeurGrille;
float bordG = margeGauche; float bordG = margeGauche;
@@ -249,6 +243,7 @@ public class VueGrille extends View {
// Adapté au daltonien // Adapté au daltonien
canvas.drawText(SYMBOLES[type % NB_TYPES], cx, cy, pinceauSymbole); canvas.drawText(SYMBOLES[type % NB_TYPES], cx, cy, pinceauSymbole);
// Dessin de l'image de la chaine si verrouillée // Dessin de l'image de la chaine si verrouillée
if (verrous[ligne][colonne] && imageChaine != null) { if (verrous[ligne][colonne] && imageChaine != null) {
float size = (x2 - x1); float size = (x2 - x1);