mise à plat
This commit is contained in:
@@ -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();
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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() {
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user