Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class UtilitaireGrilleGui {
- //permet de remplir la grille avec un certain nombre d'indice
- public static void remplirGuiDepart(int[][] grille, GrilleGui gui,
- double nbPourc) {
- //calculer le nombre d'indices
- int nbIndices = (int) (nbPourc * gui.getNbColonnes()*gui.
- getNbLignes());
- int compterCasesRemplies = 0; //
- int colonne=0;
- int ligne=0;
- // On active les case en leur donnant la valeur ""
- for (int i=0; i<gui.getNbLignes(); i++){
- for (int j = 0; j<gui.getNbColonnes();j++){
- gui.setValeur(i, j, "");
- }
- }
- /* Tant que l'on a a pas ajouté un nombre d'indices qui
- * correspond au niveau de difficulté,
- * on ajoute des nombres déterminés au hasard dans la grille
- * de base*/
- while (compterCasesRemplies != nbIndices){
- colonne = (int) (Math.floor(Math.random() * (gui.getNbColonnes())));
- ligne =(int) (Math.floor(Math.random() * (gui.getNbLignes())));
- if (gui.getValeur(ligne, colonne)==""){
- gui.setValeur(ligne, colonne, "" + grille[ligne][colonne]);
- compterCasesRemplies++;
- }//fin du if
- //désactivation de la case une fois remplie
- gui.desactiverCase(ligne, colonne);
- }//fin du while
- }// fin de la procédure
- //Cette procédure réinitialise les couleurs pour l'ensemble des cases
- public static void reinitialiserCouleur(GrilleGui gui) {
- for (int i = 0; i < gui.getNbLignes(); i++){
- for (int j = 0; j < gui.getNbColonnes(); j++){
- gui.setCouleurFond(i, j, Constantes.COULEUR_FOND);
- gui.setCouleurTexte(i, j, Constantes.COULEUR_TEXTE);
- }
- }
- }
- // change les valeurs suite à un clic
- public static void afficherChangementGrilleGui(GrilleGui gui) {
- int ligne = gui.getPosition().ligne;// numéro de ligne du clic
- int colonne=gui.getPosition().colonne;// numéro de colonne du clic
- //si la case est vide, devient 0
- if (gui.getValeur(ligne, colonne)==""){
- gui.setValeur(ligne, colonne, "0");
- }
- //si la case est 0, devient 1
- else if (gui.getValeur(ligne, colonne)=="0"){
- gui.setValeur(ligne, colonne, "1");
- }
- //si la case est 1, redevient vide. Retire toutes couleurs.
- else {
- gui.setValeur(ligne, colonne, "");
- }
- }
- public static String [][] grilleCopiée(GrilleGui gui, boolean estInversée){
- if (estInversée){
- String [][] grille= new String [gui.getNbColonnes()][gui.getNbLignes()];
- for (int i=0; i<gui.getNbLignes(); i++){
- for (int j=0; j<gui.getNbColonnes(); j++){
- grille[j][i]=gui.getValeur(i, j);
- }
- }
- return grille;
- }
- else{
- String [][] grille= new String [gui.getNbLignes()][gui.getNbColonnes()];
- for (int i=0; i<gui.getNbLignes(); i++){
- for (int j=0; j<gui.getNbColonnes(); j++){
- grille[i][j]=gui.getValeur(i, j);
- }
- }
- return grille;
- }
- }
- /*
- *
- * SOUS-PROGRAMMES POUR LES CASES CONSÉCUTIVES
- *
- * stratégie
- * Pour les colonnes, on créer trois méthodes.
- * 1- une fonction qui compare trois points.
- * 2- une procédure qui change la couleur de trois points consécutifs
- * 3- une procédure qui vérifie 3 points consécutifs pour toute la grille
- *
- * Et on fait la même chose pour les lignes (code à construire)
- */
- //cette méthode regarde deux cases plus bas sur une colonne, et renvoie "true" si elles sont identiques
- public static boolean est1de3CasesIdentiquesSurColonne(String [][] copie, int ligne, int colonne){
- boolean est1de3CasesIdentiques = false;
- // intitialisation d'un tableau de comparaison pour les 3 cases
- String tableauComparaison []= new String [3];
- for (int i=0; i < 3; i++){
- //On vérifie si la référence existe
- if ((ligne + i) < copie.length){
- //si oui, on la place dans le tableau
- tableauComparaison[i]= copie[ligne + i][colonne];
- }
- //si non, on place "x" dans le tableau
- else {
- tableauComparaison[i]= "x";
- }
- }
- // boucle pour vérifier la similitude;
- for (int i = 0; i < 3; i++){
- if (tableauComparaison[0].equals(tableauComparaison[1]) && tableauComparaison[0].equals(tableauComparaison[2])){
- est1de3CasesIdentiques = true;
- }
- }
- return est1de3CasesIdentiques; // signifiant qu'il s'agit de la première de trois cases identiques
- }
- //cette méthode indique que la couleur doit être changée
- public static void colorer3ValeursConsecutivesColonnes(GrilleGui gui, int ligne, int colonne) {
- if (est1de3CasesIdentiquesSurColonne(grilleCopiée(gui, false), ligne, colonne)) {
- for (int i = 0; i < 3; i++){
- gui.setCouleurTexte((ligne + i), colonne, Constantes.COULEUR_TROP_CONSECUTIF);
- }
- }
- }
- public static void colorer3ValeursConsecutivesLignes(GrilleGui gui, int ligne, int colonne) {
- if (est1de3CasesIdentiquesSurColonne(grilleCopiée(gui,true), colonne, ligne)) {
- for (int i = 0; i < 3; i++){
- gui.setCouleurTexte(ligne + i, colonne, Constantes.COULEUR_TROP_CONSECUTIF);
- }
- }
- }
- public static void colorerValeursConsecutivesGrille(GrilleGui gui){
- for (int i=0; i<gui.getNbLignes(); i++){
- for (int j=0; j<gui.getNbColonnes(); j++){
- colorer3ValeursConsecutivesColonnes(gui, i, j);
- colorer3ValeursConsecutivesLignes(gui, i, j);
- }
- }
- }
- public static void ajusterGui(GrilleGui gui) {
- colorerValeursConsecutivesGrille(gui);
- }
- public static int valeurGuiConvertitEnInt(String valeur) {
- int valeurConvertie=0;
- if (!valeur.equals("")){
- valeurConvertie=Integer.valueOf(valeur);
- }
- return valeurConvertie;
- }
- public static int getNbValeursValide(int [][] grille, GrilleGui gui) {
- int nbValeursValides=0;
- for (int i=0; i<gui.getNbLignes(); i++){
- for (int j=0; j<gui.getNbColonnes(); j++){
- if (grille[i][j]==valeurGuiConvertitEnInt(gui.getValeur(i, j))){
- nbValeursValides++;
- }
- }
- }
- return nbValeursValides++;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement