Accueil - Forum - Bibliothèque de ressources
____

La couche de données statiques



On crée tout d'abord un nouvelle classe pour la base de données qui va permettre de stocker les données des quêtes.
Code Rubyclass RPG::Quest
   
  def initialize
    @id = 0
    @name = ""
    @description = ""
    @gold = 0
    @exp = 0
  end

  attr_accessor :id
  attr_accessor :name
  attr_accessor :description
  attr_accessor :gold
  attr_accessor :exp

end


Le problème, c'est que contrairement à la base de données de base, il n'existe pas d'interface graphique pour créer et gérer la base de données des quêtes.

Une solution souvent adoptée et pourtant horrible conceptuellement, est de coder la base de données en Ruby à l'intérieur des scripts.

    - Cela oblige ceux qui réalisent la base de données à apprendre les rudiments du Ruby.

    - On se retrouve avec une trop grande imbrication des composants, ce qui rend plus difficile le travail en équipe : il va y avoir un décalage problématique entre l'état des scripts du scripteur, sans la base de données, et celui du chef d'équipe qui contient la base de données ; à chaque fois que le scripteur donne son Scripts.rxdata, le chef de projet devra faire attention à ne pas supprimer sa base de données en remplaçant son fichier Scripts.rxdata.


Une solution beaucoup plus propre est de fournir une interface pour celui qui réalise la base de données, mais pas nécessairement une interface graphique. Utiliser des fichiers texte par exemple est une bonne alternative. Voyons ce que cela peut donner dans notre système de quêtes.

A la racine du jeu, on créera un nouveau dossier "Quests Data" qui contiendra des fichiers texte de la forme :

id : <un nombre>
name : <un nom>
description : <une description>
gold : <une somme d'argent>
exp : <une quantité d'expérience>



A partir de ses fichiers texte, on va créer des objets RPG::Quest qui seront stockés dans le fichier Data/Quests.rxdata. Au moment de crypter le jeu, il ne restera plus qu'à enlever le dossier "Quests Data", et seul le fichier Data/Quests.rxdata sera crypté avec le jeu, gardant ainsi secret la base de données de quêtes.

Voyons comment coder cela :
Code Rubyclass Scene_Title

  alias quest_main main
  def main
    # Au début de l'écran titre
    # si le jeu n'est pas crypté
    if $DEBUG
      # on crée le dossier "Quests Data" si il n'existe pas déjà
      begin
        Dir.mkdir("Quests Data")
      rescue
      end
      # on crée le fichier Data/Quests.rxdata
      create_quests_rxdata
    end
    # on charge la base de données des quêtes
    $data_quests = load_data("Data/Quests.rxdata")
    # on execute le reste de l'écran titre
    quest_main
  end

  # Méthode de création du fichier Data/Quests.rxdata
  def create_quests_rxdata
    # Le tableau qui contiendra les objets RPG::Quest
    quests_data = []
    # Pour chaque fichier texte dans le dossier "Quests Data"
    for file_name in Dir["Quests Data/*.txt"]
      # on crée un nouvel objet RPG::Quest
      quest = RPG::Quest.new
      # on ouvre le fichier en mode lecture
      File.open(file_name, 'r') do |txt_file|
        # on initialise les propriétés de la quête
        # en lisant le fichier ligne par ligne
        # (pour plus de compréhension,
        # regarder les méthodes des classes File et String)
        quest.id = txt_file.readline.gsub("id : ", "").to_i
        quest.name = txt_file.readline.gsub("name : ", "").to_s
        quest.description = txt_file.readline.gsub("description : ", "").to_s
        quest.gold = txt_file.readline.gsub("gold : ", "").to_i
        quest.exp = txt_file.readline.gsub("exp : ", "").to_i
      end
      # on stocke l'objet RPG::Quest à son index dans le tableau
      quests_data[quest.id] = quest
    end
    # On ouvre le fichier Data/Quests.rxdata en mode écriture binaire
    File.open("Data/Quests.rxdata", 'wb') do |rxdata_file|
      # on stocke le tableau des quêtes dans le fichier Data/Quests.rxdata
      Marshal.dump(quests_data, rxdata_file)
    end
  end

end
Informations
Page vue 2510 fois | Auteur : Samarium

RPG Creative version 5 - Libérez votre créativité ! ; Mai 2005 - Mai 2012
0.049s - Optimisé pour une résolution 1024*728 - Tous droits réservés.

Contact - Partenaires - Historique - A propos