Class: JeuLibreControleur
- Inherits:
-
Controller
- Object
- Controller
- JeuLibreControleur
- Defined in:
- app/controller/JeuLibreControleur.rb
Overview
Classe permettant de créer un contrôleur pour la vue FenetreJeuLibre
Instance Method Summary collapse
-
#finPartie? ⇒ Boolean
Vérifie si la partie est terminée c'est à dire grille complète et correcte.
-
#getCandidats ⇒ Object
Calcule les candidats possibles pour chaque case.
-
#getNbVides ⇒ Object
Récupère le nombre de cases encore vides.
-
#grilleCorrecte ⇒ Object
Vérifie que la grille est correcte.
-
#initialize ⇒ JeuLibreControleur
constructor
Initialize.
-
#partieTerminee ⇒ Object
Action lorsque la partie est terminée, sauvegarde du score de l'utilisateur.
-
#possibilites(valeur) ⇒ Object
Calcule les endroits possible pour une valeur.
-
#reinitialiser ⇒ Object
Réinitialise la grille.
-
#run ⇒ Object
Méthode à définir dans tous les cas !.
-
#sauvegarder ⇒ Object
Sauvegarde la partie dans un fichier yaml.
-
#updateGrille(x, y, value) ⇒ Object
Met à jour la grille de données.
-
#valeursGrille ⇒ Object
Récupère seulement les valeurs de la grille.
Methods inherited from Controller
inherited, #loadFile, #loadModel, #render, #set_properties
Constructor Details
#initialize ⇒ JeuLibreControleur
Initialize
18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'app/controller/JeuLibreControleur.rb', line 18 def initialize() #charge le modèle grille loadModel("Configuration") loadModel("Grille") loadModel("Score") loadModel("Jeu") loadModel("Utilisateur") #paramètres fenêtre @title = "Sudoku - Jeu Libre" @content = {"grille" => nil} @height = 720 end |
Instance Method Details
#finPartie? ⇒ Boolean
Vérifie si la partie est terminée c'est à dire grille complète et correcte.
80 81 82 |
# File 'app/controller/JeuLibreControleur.rb', line 80 def finPartie?() return self.getNbVides == 0 && self.grilleCorrecte() end |
#getCandidats ⇒ Object
Calcule les candidats possibles pour chaque case
195 196 197 198 199 200 201 202 203 204 |
# File 'app/controller/JeuLibreControleur.rb', line 195 def getCandidats candidats = Hash.new() for i in 1..9 candidats[i.to_s] = self.possibilites(i) end return candidats end |
#getNbVides ⇒ Object
Récupère le nombre de cases encore vides
89 90 91 |
# File 'app/controller/JeuLibreControleur.rb', line 89 def getNbVides() return @Grille.nbVides end |
#grilleCorrecte ⇒ Object
Vérifie que la grille est correcte
61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'app/controller/JeuLibreControleur.rb', line 61 def grilleCorrecte() @content["grille"].each_with_index do | ligne, ligneIndex | ligne.each_with_index do | colonne, colonneIndex | if(!@Grille.valeurUnique(colonne["value"], ligneIndex, colonneIndex)) return false end end end return true end |
#partieTerminee ⇒ Object
Action lorsque la partie est terminée, sauvegarde du score de l'utilisateur.
116 117 118 119 120 121 122 123 |
# File 'app/controller/JeuLibreControleur.rb', line 116 def partieTerminee() Header.pause = true @Score.creer(@content["pseudo"], @Score.difficulte, Header.score) if(@Utilisateur.partieUtilisateur?(@content["pseudo"])) @Jeu.supprimerPartie(@content["pseudo"]) end end |
#possibilites(valeur) ⇒ Object
Calcule les endroits possible pour une valeur
149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 |
# File 'app/controller/JeuLibreControleur.rb', line 149 def possibilites(valeur) possibilites = Array.new() ## Calcule les coordonnées des cases qui permettent l'unicité sur la valeur ## passée en paramètre for i in 0..8 for j in 0..8 if (@content["grille"][i][j]["editable"] && @Grille.valeurUnique(valeur, i, j) ) possibilites << [i, j] end end end return possibilites end |
#reinitialiser ⇒ Object
Réinitialise la grille
172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 |
# File 'app/controller/JeuLibreControleur.rb', line 172 def reinitialiser() grille = @content["grille"] for i in 0..8 for j in 0..8 if(grille[i][j]["editable"]) grille[i][j]["value"] = nil end end end @content["grille"] = grille return self end |
#run ⇒ Object
Méthode à définir dans tous les cas !
211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 |
# File 'app/controller/JeuLibreControleur.rb', line 211 def run() ## Reprends la grille dans son état (singleton pattern) si on viens ## d'une fenêtre par le biais d'un bouton retour if(@Grille.grille != nil && !@content.has_key?("charger")) @content["grille"] = @Grille.grille ## Reprends les configurations d'un fichier elsif(@content.has_key?("charger")) donnees = @Jeu.chargerPartie(@content["pseudo"]) @content["difficulte"] = donnees["niveau"] Header.score = donnees["score"] Header.temps = donnees["chrono"] @content["grille"] = donnees["grille"] @Grille.grille = donnees["grille"] ## Reggénère une grille else @content["grille"] = @Grille.generer(@content["difficulte"]) end @content["config"] = @Configuration.getConfiguration(@content["pseudo"]) if(@Score.difficulte == nil) @Score.difficulte = @content["difficulte"] end @Grille.countNbVides @content["Techniques"] = TechniqueUsine.new() return self end |
#sauvegarder ⇒ Object
Sauvegarde la partie dans un fichier yaml
130 131 132 133 134 135 136 137 138 139 140 |
# File 'app/controller/JeuLibreControleur.rb', line 130 def sauvegarder() @Jeu.chrono = Header.temps @Jeu.score = Header.score @Jeu.grille = @content["grille"] @Jeu.niveau = @Score.difficulte ## Sauvegarde la partie dans un fichier yaml au nom de l'utilisateur @Jeu.creerPartie (@content["pseudo"]) return self end |
#updateGrille(x, y, value) ⇒ Object
Met à jour la grille de données
42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'app/controller/JeuLibreControleur.rb', line 42 def updateGrille(x, y, value) ## Met à jour le compteur if(@content["grille"][x][y]["value"] == nil && value != nil) @Grille.nbVides -= 1 elsif(@content["grille"][x][y]["value"] != nil && value == nil) @Grille.nbVides += 1 end @content["grille"][x][y]["value"] = value return self end |
#valeursGrille ⇒ Object
Récupère seulement les valeurs de la grille
98 99 100 101 102 103 104 105 106 107 108 |
# File 'app/controller/JeuLibreControleur.rb', line 98 def valeursGrille() grille = Array.new() @content["grille"].each_with_index do |ligne, index| grille << Array.new() ligne.each do |c| grille[index] << c["value"] end end end |