Files
SAE41_2025/game/EtatJeu.java
T

64 lines
1.8 KiB
Java

package game;
import java.util.Random;
public class EtatJeu {
public static final int NB_LIGNES = 6;
public static final int NB_COLONNES = 6;
public static final int NB_TYPES = 7;
private final int[][] grille = new int[NB_LIGNES][NB_COLONNES];
private final Random aleatoire;
public EtatJeu() {
aleatoire = new Random();
initialiserGrilleSansTriples();
}
// --- Lecture / écriture ---
public int obtenirCase(int ligne, int colonne) {
return grille[ligne][colonne];
}
public void definirCase(int ligne, int colonne, int valeur) {
grille[ligne][colonne] = valeur;
}
// --- Initialisation de la grille sans séries de 3 ---
private void initialiserGrilleSansTriples() {
for (int ligne = 0; ligne < NB_LIGNES; ligne++) {
for (int colonne = 0; colonne < NB_COLONNES; colonne++) {
int valeur;
do {
valeur = aleatoire.nextInt(NB_TYPES); // 0..6
} while (creeTriple(ligne, colonne, valeur));
grille[ligne][colonne] = valeur;
}
}
}
// Renvoie true si mettre "valeur" à (ligne, colonne) créerait une série de 3
private boolean creeTriple(int ligne, int colonne, int valeur) {
// Test horizontal : XXX à gauche
if (colonne >= 2) {
if (grille[ligne][colonne - 1] == valeur &&
grille[ligne][colonne - 2] == valeur) {
return true;
}
}
// Test vertical : XXX au-dessus
if (ligne >= 2) {
if (grille[ligne - 1][colonne] == valeur &&
grille[ligne - 2][colonne] == valeur) {
return true;
}
}
return false;
}
}