Advertisement
Guest User

Untitled

a guest
Jun 24th, 2017
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.25 KB | None | 0 0
  1.  
  2. public class UtilitaireGrilleGui {
  3. //permet de remplir la grille avec un certain nombre d'indice
  4. public static void remplirGuiDepart(int[][] grille, GrilleGui gui,
  5. double nbPourc) {
  6.  
  7. //calculer le nombre d'indices
  8. int nbIndices = (int) (nbPourc * gui.getNbColonnes()*gui.
  9. getNbLignes());
  10. int compterCasesRemplies = 0; //
  11. int colonne=0;
  12. int ligne=0;
  13.  
  14. // On active les case en leur donnant la valeur ""
  15. for (int i=0; i<gui.getNbLignes(); i++){
  16. for (int j = 0; j<gui.getNbColonnes();j++){
  17. gui.setValeur(i, j, "");
  18. }
  19. }
  20. /* Tant que l'on a a pas ajouté un nombre d'indices qui
  21. * correspond au niveau de difficulté,
  22. * on ajoute des nombres déterminés au hasard dans la grille
  23. * de base*/
  24. while (compterCasesRemplies != nbIndices){
  25. colonne = (int) (Math.floor(Math.random() * (gui.getNbColonnes())));
  26. ligne =(int) (Math.floor(Math.random() * (gui.getNbLignes())));
  27. if (gui.getValeur(ligne, colonne)==""){
  28. gui.setValeur(ligne, colonne, "" + grille[ligne][colonne]);
  29. compterCasesRemplies++;
  30. }//fin du if
  31.  
  32. //désactivation de la case une fois remplie
  33. gui.desactiverCase(ligne, colonne);
  34. }//fin du while
  35. }// fin de la procédure
  36.  
  37. //Cette procédure réinitialise les couleurs pour l'ensemble des cases
  38. public static void reinitialiserCouleur(GrilleGui gui) {
  39. for (int i = 0; i < gui.getNbLignes(); i++){
  40. for (int j = 0; j < gui.getNbColonnes(); j++){
  41. gui.setCouleurFond(i, j, Constantes.COULEUR_FOND);
  42. gui.setCouleurTexte(i, j, Constantes.COULEUR_TEXTE);
  43. }
  44. }
  45. }
  46.  
  47. // change les valeurs suite à un clic
  48. public static void afficherChangementGrilleGui(GrilleGui gui) {
  49.  
  50. int ligne = gui.getPosition().ligne;// numéro de ligne du clic
  51. int colonne=gui.getPosition().colonne;// numéro de colonne du clic
  52.  
  53. //si la case est vide, devient 0
  54. if (gui.getValeur(ligne, colonne)==""){
  55. gui.setValeur(ligne, colonne, "0");
  56. }
  57.  
  58. //si la case est 0, devient 1
  59. else if (gui.getValeur(ligne, colonne)=="0"){
  60. gui.setValeur(ligne, colonne, "1");
  61. }
  62. //si la case est 1, redevient vide. Retire toutes couleurs.
  63. else {
  64. gui.setValeur(ligne, colonne, "");
  65. }
  66.  
  67. }
  68. public static String [][] grilleCopiée(GrilleGui gui, boolean estInversée){
  69. if (estInversée){
  70. String [][] grille= new String [gui.getNbColonnes()][gui.getNbLignes()];
  71. for (int i=0; i<gui.getNbLignes(); i++){
  72. for (int j=0; j<gui.getNbColonnes(); j++){
  73. grille[j][i]=gui.getValeur(i, j);
  74. }
  75. }
  76. return grille;
  77. }
  78. else{
  79. String [][] grille= new String [gui.getNbLignes()][gui.getNbColonnes()];
  80. for (int i=0; i<gui.getNbLignes(); i++){
  81. for (int j=0; j<gui.getNbColonnes(); j++){
  82. grille[i][j]=gui.getValeur(i, j);
  83. }
  84. }
  85. return grille;
  86. }
  87.  
  88. }
  89.  
  90. /*
  91. *
  92. * SOUS-PROGRAMMES POUR LES CASES CONSÉCUTIVES
  93. *
  94. * stratégie
  95. * Pour les colonnes, on créer trois méthodes.
  96. * 1- une fonction qui compare trois points.
  97. * 2- une procédure qui change la couleur de trois points consécutifs
  98. * 3- une procédure qui vérifie 3 points consécutifs pour toute la grille
  99. *
  100. * Et on fait la même chose pour les lignes (code à construire)
  101. */
  102.  
  103. //cette méthode regarde deux cases plus bas sur une colonne, et renvoie "true" si elles sont identiques
  104. public static boolean est1de3CasesIdentiquesSurColonne(String [][] copie, int ligne, int colonne){
  105. boolean est1de3CasesIdentiques = false;
  106. // intitialisation d'un tableau de comparaison pour les 3 cases
  107. String tableauComparaison []= new String [3];
  108. for (int i=0; i < 3; i++){
  109. //On vérifie si la référence existe
  110. if ((ligne + i) < copie.length){
  111. //si oui, on la place dans le tableau
  112. tableauComparaison[i]= copie[ligne + i][colonne];
  113. }
  114. //si non, on place "x" dans le tableau
  115. else {
  116. tableauComparaison[i]= "x";
  117. }
  118. }
  119. // boucle pour vérifier la similitude;
  120. for (int i = 0; i < 3; i++){
  121. if (tableauComparaison[0].equals(tableauComparaison[1]) && tableauComparaison[0].equals(tableauComparaison[2])){
  122. est1de3CasesIdentiques = true;
  123. }
  124. }
  125. return est1de3CasesIdentiques; // signifiant qu'il s'agit de la première de trois cases identiques
  126. }
  127.  
  128.  
  129. //cette méthode indique que la couleur doit être changée
  130. public static void colorer3ValeursConsecutivesColonnes(GrilleGui gui, int ligne, int colonne) {
  131. if (est1de3CasesIdentiquesSurColonne(grilleCopiée(gui, false), ligne, colonne)) {
  132. for (int i = 0; i < 3; i++){
  133. gui.setCouleurTexte((ligne + i), colonne, Constantes.COULEUR_TROP_CONSECUTIF);
  134. }
  135. }
  136. }
  137.  
  138.  
  139.  
  140. public static void colorer3ValeursConsecutivesLignes(GrilleGui gui, int ligne, int colonne) {
  141. if (est1de3CasesIdentiquesSurColonne(grilleCopiée(gui,true), colonne, ligne)) {
  142. for (int i = 0; i < 3; i++){
  143. gui.setCouleurTexte(ligne + i, colonne, Constantes.COULEUR_TROP_CONSECUTIF);
  144. }
  145. }
  146. }
  147.  
  148. public static void colorerValeursConsecutivesGrille(GrilleGui gui){
  149. for (int i=0; i<gui.getNbLignes(); i++){
  150. for (int j=0; j<gui.getNbColonnes(); j++){
  151. colorer3ValeursConsecutivesColonnes(gui, i, j);
  152. colorer3ValeursConsecutivesLignes(gui, i, j);
  153.  
  154. }
  155. }
  156. }
  157.  
  158.  
  159. public static void ajusterGui(GrilleGui gui) {
  160. colorerValeursConsecutivesGrille(gui);
  161. }
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168. public static int valeurGuiConvertitEnInt(String valeur) {
  169. int valeurConvertie=0;
  170. if (!valeur.equals("")){
  171. valeurConvertie=Integer.valueOf(valeur);
  172.  
  173. }
  174. return valeurConvertie;
  175. }
  176.  
  177. public static int getNbValeursValide(int [][] grille, GrilleGui gui) {
  178. int nbValeursValides=0;
  179. for (int i=0; i<gui.getNbLignes(); i++){
  180. for (int j=0; j<gui.getNbColonnes(); j++){
  181. if (grille[i][j]==valeurGuiConvertitEnInt(gui.getValeur(i, j))){
  182. nbValeursValides++;
  183.  
  184. }
  185.  
  186. }
  187. }
  188. return nbValeursValides++;
  189. }
  190. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement