Class: Grille
Overview
Méthodes permettant de manager la grille et de faire des vérifications de la validité d'une valeur
Modèle de la grille
Instance Attribute Summary collapse
-
#grille ⇒ Object
Returns the value of attribute grille.
-
#nbVides ⇒ Object
Returns the value of attribute nbVides.
Attributes inherited from Model
Instance Method Summary collapse
-
#charger(pseudo) ⇒ Object
Charge la partie du pseudo donnée.
-
#countNbVides ⇒ Object
Compte le nombre de cases vides.
-
#generer(niveau) ⇒ Object
Génère une grille avec un niveau donné.
-
#getValue(x, y) ⇒ Object
Récupère la valeur de la case de la grille.
-
#initialize ⇒ Grille
constructor
Initialisation.
-
#sauvegarder(pseudo) ⇒ Object
Sauvegarde la partie du joueur.
-
#valeurUnique(valeur, x, y) ⇒ Object
Vérifie à partir de coordonnées que la valeur est unique.
-
#valeurUniqueLigne(valeur, x, y, type) ⇒ Object
Vérifie les valeurs d'une ligne en se basant sur des coordonées initiales.
Methods inherited from Model
#connection, inherited, #insert, #mkDatabaseDir, #to_h
Constructor Details
#initialize ⇒ Grille
Initialisation
18 19 20 |
# File 'app/model/Grille.rb', line 18 def initialize() @grille = nil end |
Instance Attribute Details
#grille ⇒ Object
Returns the value of attribute grille
13 14 15 |
# File 'app/model/Grille.rb', line 13 def grille @grille end |
#nbVides ⇒ Object
Returns the value of attribute nbVides
13 14 15 |
# File 'app/model/Grille.rb', line 13 def nbVides @nbVides end |
Instance Method Details
#charger(pseudo) ⇒ Object
Charge la partie du pseudo donnée
63 64 65 66 |
# File 'app/model/Grille.rb', line 63 def charger(pseudo) donnees = YAML.load_file(Core::ROOTPROJECT + "assets/save/" + pseudo.to_s + ".yml") @grille=donnees["grille"] end |
#countNbVides ⇒ Object
Compte le nombre de cases vides
44 45 46 47 48 49 50 51 52 53 54 |
# File 'app/model/Grille.rb', line 44 def countNbVides() @nbVides = 0 @grille.each do |ligne| ligne.each do |c| if( c["value"] == nil) @nbVides += 1 end end end end |
#generer(niveau) ⇒ Object
Génère une grille avec un niveau donné
30 31 32 33 34 35 36 37 |
# File 'app/model/Grille.rb', line 30 def generer(niveau) # Niveau + 1 car constante de 0 à 2 passée en paramètre @gen = Generateur.new(niveau + 1) @grille = @gen.generer() return @grille end |
#getValue(x, y) ⇒ Object
Récupère la valeur de la case de la grille
93 94 95 |
# File 'app/model/Grille.rb', line 93 def getValue(x, y) return @grille[x][y]["value"] end |
#sauvegarder(pseudo) ⇒ Object
Sauvegarde la partie du joueur
75 76 77 78 79 80 81 82 83 |
# File 'app/model/Grille.rb', line 75 def sauvegarder(pseudo) donnees=Hash.new() File.open(Core::ROOTPROJECT + "assets/save/" + pseudo.to_s + ".yml", "w") do |fichier| donnees["grille"] = @grille fichier.write(donnees.to_yaml) end return true end |
#valeurUnique(valeur, x, y) ⇒ Object
Vérifie à partir de coordonnées que la valeur est unique
105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 |
# File 'app/model/Grille.rb', line 105 def valeurUnique(valeur, x ,y) ligneUnique = self.valeurUniqueLigne(valeur, x, y, "ligne") colonneUnique =self.valeurUniqueLigne(valeur, x, y, "colonne") if(ligneUnique == false || colonneUnique == false) return false end # Position x et y de la région rX = x rY = y ## Récupère les cordonnées de la première case de la région while(rX % 3 != 0 || rY % 3 != 0) if(rX % 3 != 0) rX -= 1 end if(rY % 3 != 0) rY -=1 end end ## Parcourt la région et vérifie l'unicité for i in 0..2 for j in 0..2 ## Case vérifiée exclue if(rX + i != x || rY + j != y) if(valeur == self.getValue(rX+i, rY+j)) return false end end end end return true end |
#valeurUniqueLigne(valeur, x, y, type) ⇒ Object
Vérifie les valeurs d'une ligne en se basant sur des coordonées initiales
151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 |
# File 'app/model/Grille.rb', line 151 def valeurUniqueLigne(valeur, x, y, type) ## Parcours ligne ou colonne à la recherche de valeur unique if(type == "ligne") for i in 0..8 # On exclue la case vérifiée if(i != y) if(valeur == @grille[x][i]["value"]) return false end end end else for i in 0..8 ## On exclue la case vérifiée if(i != x) if(valeur == @grille[i][y]["value"]) return false end end end end return true end |