64 lines
1.8 KiB
Java
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;
|
|
}
|
|
} |