From ed520566a8451b27a7cb18e3346a760d019a9b5a Mon Sep 17 00:00:00 2001 From: sehl Date: Fri, 27 Mar 2026 19:30:06 +0100 Subject: [PATCH] =?UTF-8?q?Correction=20du=20scoring=20(fichier=20=C3=A0?= =?UTF-8?q?=20push=20:=20EtatJeu)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/sae/chuzzle/EtatJeu.java | 71 +++++++-------------- src/main/java/sae/chuzzle/MainActivity.java | 5 -- src/main/java/sae/chuzzle/VueGrille.java | 2 +- 3 files changed, 25 insertions(+), 53 deletions(-) diff --git a/src/main/java/sae/chuzzle/EtatJeu.java b/src/main/java/sae/chuzzle/EtatJeu.java index 070cde5..52cfcda 100644 --- a/src/main/java/sae/chuzzle/EtatJeu.java +++ b/src/main/java/sae/chuzzle/EtatJeu.java @@ -5,7 +5,8 @@ import java.util.List; import java.util.Random; /** - * Gère la session de jeu (score, coups, état de la partie) et délègue la manipulation + * Gère la session de jeu (score, coups, état de la partie) et délègue la + * manipulation * physique de la grille à la classe Plateau. */ public class EtatJeu { @@ -102,8 +103,9 @@ public class EtatJeu { List series = plateau.trouverSeries(); while (!series.isEmpty()) { - baseTotal += calculerPointsBase(series); - nbSeriesTotal += compterEtEnregistrerSeries(series); + int[] result = traiterSeries(series); + baseTotal += result[0]; + nbSeriesTotal += result[1]; boolean[][] masque = creerMasque(series); plateau.libererVerrous(masque); @@ -120,10 +122,18 @@ public class EtatJeu { // --- Aide à la résolution --- - private int compterEtEnregistrerSeries(List series) { + /** + * Parcourt les séries détectées, calcule les points de base et compte le nombre + * de 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 + */ + private int[] traiterSeries(List series) { boolean[][] masque = creerMasque(series); - int count = 0; int[][] g = plateau.getGrille(); + int pts = 0; + int count = 0; // Horizontal for (int l = 0; l < Plateau.NB_LIGNES; l++) { @@ -136,6 +146,7 @@ public class EtatJeu { fin++; } if (fin - c >= 3) { + pts += pointsPourLongueur(fin - c); seriesParCouleurDernierCoup[type]++; count++; } @@ -156,6 +167,7 @@ public class EtatJeu { fin++; } if (fin - l >= 3) { + pts += pointsPourLongueur(fin - l); seriesParCouleurDernierCoup[type]++; count++; } @@ -165,51 +177,16 @@ public class EtatJeu { } } } - return count; - } - - private int calculerPointsBase(List series) { - boolean[][] masque = creerMasque(series); - int pts = 0; - // Horizontal - for (int l = 0; l < Plateau.NB_LIGNES; l++) { - int c = 0; - while (c < Plateau.NB_COLONNES) { - if (masque[l][c]) { - int fin = c + 1; - while (fin < Plateau.NB_COLONNES && masque[l][fin]) { - fin++; - } - pts += pointsPourLongueur(fin - c); - c = fin; - } else { - c++; - } - } - } - // Vertical - for (int c = 0; c < Plateau.NB_COLONNES; c++) { - int l = 0; - while (l < Plateau.NB_LIGNES) { - if (masque[l][c]) { - int fin = l + 1; - while (fin < Plateau.NB_LIGNES && masque[fin][c]) { - fin++; - } - pts += pointsPourLongueur(fin - l); - l = fin; - } else { - l++; - } - } - } - return pts; + return new int[] { pts, count }; } private int pointsPourLongueur(int n) { - if (n == 3) return 8; - if (n == 4) return 16; - if (n == 5) return 32; + if (n == 3) + return 8; + if (n == 4) + return 16; + if (n == 5) + return 32; return 64; } diff --git a/src/main/java/sae/chuzzle/MainActivity.java b/src/main/java/sae/chuzzle/MainActivity.java index 85c94ab..ece94cc 100644 --- a/src/main/java/sae/chuzzle/MainActivity.java +++ b/src/main/java/sae/chuzzle/MainActivity.java @@ -11,8 +11,6 @@ import android.widget.TextView; public class MainActivity extends Activity implements View.OnClickListener { - - private Controleur controleur; private Button btnMenu; private boolean hardMode; @@ -40,9 +38,6 @@ public class MainActivity extends Activity implements View.OnClickListener { // --- Vue --- VueGrille vueGrille = findViewById(R.id.vueGrille); - - - // --- Controleur --- btnMenu = findViewById(R.id.btnMenu); diff --git a/src/main/java/sae/chuzzle/VueGrille.java b/src/main/java/sae/chuzzle/VueGrille.java index 886f3da..0be7504 100644 --- a/src/main/java/sae/chuzzle/VueGrille.java +++ b/src/main/java/sae/chuzzle/VueGrille.java @@ -260,7 +260,7 @@ public class VueGrille extends View { // Dessin d'une chaine en bas à droite canvas.drawBitmap(imageChaine, null, new RectF(x2 - chainSize, y2 - chainSize, x2, y2), null); } else if (verrous[ligne][colonne]) { - // Fallback si l'image n'est pas trouvée + // si l'image n'est pas trouvée canvas.drawText("🔒", cx, cy, pinceauSymbole); } }