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; } }