class Sauvegarde

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

Public Class Methods

creer(compte, grille) click to toggle source

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

# 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) click to toggle source

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

# 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) click to toggle source

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

# 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) click to toggle source

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

param
  • compte Le compte du joueur

return
  • Le tableau des sauvegardes du compte

# File lib/Hashiparmentier/Core/Sauvegarde.rb, line 95
def Sauvegarde.listeCompte(compte)
  return Sauvegarde.where(compte: compte).to_a()
end
razAllSauvegarde() click to toggle source

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

# File lib/Hashiparmentier/Core/Sauvegarde.rb, line 30
def Sauvegarde.razAllSauvegarde()
  Sauvegarde.delete_all()
end
recuperer(compte, grille) click to toggle source

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

# 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

Public Instance Methods

getGrille() click to toggle source

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

return
  • La grille sauvegardé

# File lib/Hashiparmentier/Core/Sauvegarde.rb, line 124
def getGrille()

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

end
getScore() click to toggle source

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

return
  • Le score de la sauvegarde

# File lib/Hashiparmentier/Core/Sauvegarde.rb, line 155
def getScore()
  return self.meilleurScore
end
sauvegarder() click to toggle source

Cette méthode permet d'enregistrer la sauvegarde

return
  • true Si la sauvegarde est efféctué

  • false Sinon

# File lib/Hashiparmentier/Core/Sauvegarde.rb, line 116
def sauvegarder()
  return self.save()
end
setGrille(grille) click to toggle source

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

param
  • grille La nouvelle grille

# 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) click to toggle source

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

param
  • score Le nouveau score

# File lib/Hashiparmentier/Core/Sauvegarde.rb, line 163
def setScore(score)

  self.meilleurScore = score
  return self

end
to_s() click to toggle source

Cette méthode permet d'afficher une sauvegarde

# File lib/Hashiparmentier/Core/Sauvegarde.rb, line 172
def to_s()
    return "#{self.compte} : #{self.getGrille()}"
end