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 Core/Sauvegarde.rb, line 57
def Sauvegarde.creer(compte, grille)

  if(Sauvegarde.recuperer(compte, grille) == nil)
    begin
      temp = Marshal.dump(grille).force_encoding("ISO-8859-1").encode("UTF-8")
      Marshal.load(temp)
      new(:compte => compte, :grille => temp, :taille => grille.tailleX(), :difficulte => grille.difficulte(), :meilleurScore => 0)
    rescue
      temp = YAML.dump(grille).force_encoding("ISO-8859-1").encode("UTF-8")
      new(:compte => compte, :grille => temp, :taille => grille.tailleX(), :difficulte => grille.difficulte(), :meilleurScore => 0)
    end
  else
    raise("Le compte a déjà une sauvegarde de cette grille")
  end

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 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 Core/Sauvegarde.rb, line 112
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 Core/Sauvegarde.rb, line 100
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 Core/Sauvegarde.rb, line 30
def Sauvegarde.razAllSauvegarde()
  Sauvegarde.delete_all()
end
recuperer(compte, grille) click to toggle source

Cette méthode permet de recuperer 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 Core/Sauvegarde.rb, line 82
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

# File Core/Sauvegarde.rb, line 127
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 la grille de la sauvegarde

return
  • Le score de la sauvegarde

# File Core/Sauvegarde.rb, line 159
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 Core/Sauvegarde.rb, line 121
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 Core/Sauvegarde.rb, line 141
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
    self.grille = temp
  rescue
    temp = YAML.dump(grille) #Sinon on enregistre avec YAML qui est plus lent
    self.grille = temp
  end
  return self

end
setScore(score) click to toggle source

Cette méthode permet de modifier la grille enregistré

param
  • score Le nouveau score

# File Core/Sauvegarde.rb, line 167
def setScore(score)

  self.meilleurScore = score
  return self

end
to_s() click to toggle source

Cette méthode permet d'afficher une sauvegarde

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