Class: Sauvegarde

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
lib/Hashiparmentier/Core/Sauvegarde.rb

Overview

Auteur

Brabant Mano

Version

0.1

Date

09/04/2020

Cette classe permet de sauvegarder dans une base de données la progression d’un joueur sur une grille et de faire des recherches sur les sauvegardes

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.creer(compte, grille) ⇒ Object

Cette méthode permet de creer une grille pour un compte

param
  • compte Le compte auquel la sauvegarde est lié

  • grille La grille auquel la sauvegarde est lié

return
  • raiseException Si le compte possède déjà une sauvegarde de cette grille



57
58
59
60
61
62
63
64
65
66
67
# File 'lib/Hashiparmentier/Core/Sauvegarde.rb', line 57

def Sauvegarde.creer(compte, grille)

  begin
    temp = Marshal.dump(grille).force_encoding("ISO-8859-1").encode("UTF-8")
    Marshal.load(temp)
  rescue
    temp = YAML.dump(grille)
  end
  new(:compte => compte, :grille => temp, :taille => grille.tailleX(), :difficulte => grille.difficulte(), :meilleurScore => 0)

end

.creerAll(compte, grilles) ⇒ Object

Cette méthode permet de créer un sauvegarde pour un ensemble de grille

param
  • compte Le compte pour lequel on va créer les sauvegardes

  • grilles Un tableau qui contient les grilles à sauvegarder



39
40
41
42
43
44
45
# File 'lib/Hashiparmentier/Core/Sauvegarde.rb', line 39

def Sauvegarde.creerAll(compte, grilles)

  grilles.each do |g|
    Sauvegarde.creer(compte, g).sauvegarder()
  end

end

.liste(compte, taille, difficulte) ⇒ Object

Cette méthode permet de connaitre les sauvegardes d’un joueur pour les grilles d’une certaine taille et d’une certaine difficulté

param
  • compte Le compte du joueur

  • taille La taille de la grille

  • difficulte La difficulte de la grille

return
  • Le tableau des sauvegardes du compte de taille et difficulté données



107
108
109
# File 'lib/Hashiparmentier/Core/Sauvegarde.rb', line 107

def Sauvegarde.liste(compte, taille, difficulte)
  return Sauvegarde.where(compte: compte, taille: taille, difficulte: difficulte).to_a()
end

.listeCompte(compte) ⇒ Object

Cette méthode permet de connaitre les sauvegardes d’un joueur

param
  • compte Le compte du joueur

return
  • Le tableau des sauvegardes du compte



95
96
97
# File 'lib/Hashiparmentier/Core/Sauvegarde.rb', line 95

def Sauvegarde.listeCompte(compte)
  return Sauvegarde.where(compte: compte).to_a()
end

.razAllSauvegardeObject

Cette méthode permet de supprimer toutes les sauvegardes dans la base de donnée



30
31
32
# File 'lib/Hashiparmentier/Core/Sauvegarde.rb', line 30

def Sauvegarde.razAllSauvegarde()
  Sauvegarde.delete_all()
end

.recuperer(compte, grille) ⇒ Object

Cette méthode permet de recupérer la sauvegarde d’un compte pour une grille

param
  • compte Le compte auquel la sauvegarde est lié

  • grille La grille auquel la sauvegarde est lié

return
  • La sauvegarde si elle existe

  • nil Sinon



77
78
79
80
81
82
83
84
85
86
87
# File 'lib/Hashiparmentier/Core/Sauvegarde.rb', line 77

def Sauvegarde.recuperer(compte, grille)

  liste = Sauvegarde.listeCompte(compte)
  liste.each do |s|
    if(s.getGrille().memeSolution(grille))
      return s
    end
  end
  return nil

end

Instance Method Details

#getGrilleObject

Cette méthode permet de recupérer la grille de la sauvegarde

return
  • La grille sauvegardé



124
125
126
127
128
129
130
131
132
# File 'lib/Hashiparmentier/Core/Sauvegarde.rb', line 124

def getGrille()

  begin
    return Marshal.load(self.grille)
  rescue
    return YAML.load(self.grille)
  end

end

#getScoreObject

Cette méthode permet de recupérer le meilleur score associé à la grille enregistré

return
  • Le score de la sauvegarde



155
156
157
# File 'lib/Hashiparmentier/Core/Sauvegarde.rb', line 155

def getScore()
  return self.meilleurScore
end

#sauvegarderObject

Cette méthode permet d’enregistrer la sauvegarde

return
  • true Si la sauvegarde est efféctué

  • false Sinon



116
117
118
# File 'lib/Hashiparmentier/Core/Sauvegarde.rb', line 116

def sauvegarder()
  return self.save()
end

#setGrille(grille) ⇒ Object

Cette méthode permet de modifier la grille enregistrée

param
  • grille La nouvelle grille



138
139
140
141
142
143
144
145
146
147
148
149
# File 'lib/Hashiparmentier/Core/Sauvegarde.rb', line 138

def setGrille(grille)

  begin #Active record peut enregistrer du TEXT avec UTF-8 uniquement
    temp = Marshal.dump(grille).force_encoding("ISO-8859-1").encode("UTF-8") #on force donc la chaine en UTF-8
    Marshal.load(temp) #à condition que l'on puisse la recharger sans exception
  rescue
    temp = YAML.dump(grille) #Sinon on enregistre avec YAML qui est plus lent
  end
  self.grille = temp
  return self

end

#setScore(score) ⇒ Object

Cette méthode permet de modifier le meilleur score associé à la grille enregistré

param
  • score Le nouveau score



163
164
165
166
167
168
# File 'lib/Hashiparmentier/Core/Sauvegarde.rb', line 163

def setScore(score)

  self.meilleurScore = score
  return self

end

#to_sObject

Cette méthode permet d’afficher une sauvegarde



172
173
174
# File 'lib/Hashiparmentier/Core/Sauvegarde.rb', line 172

def to_s()
    return "#{self.compte} : #{self.getGrille()}"
end