L'ombre du Behemoth
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

L'ombre du Behemoth

L'ombre du Behemoth est un forum destiné à tous les amoureux de grands espaces et d'aventures extraordinaires. Partagez vos passions et exprimez vous librement sur divers thèmes et sous-thèmes.
 
AccueilDernières imagesRechercherS'enregistrerConnexion

 

 [Ruby] Lire et écrire un fichier pour son jeu

Aller en bas 
2 participants
AuteurMessage
RPG-Man
Amateur
Amateur
RPG-Man


Nombre de messages : 185
Age : 30
Localisation : Devant mon ordi, réfléchis! :p
Date d'inscription : 11/01/2009

Feuille de personnage
Connaissances:
[Ruby] Lire et écrire un fichier pour son jeu Left_bar_bleue85/250[Ruby] Lire et écrire un fichier pour son jeu Empty_bar_bleue  (85/250)
Création:
[Ruby] Lire et écrire un fichier pour son jeu Left_bar_bleue150/250[Ruby] Lire et écrire un fichier pour son jeu Empty_bar_bleue  (150/250)
RPGMaker:
[Ruby] Lire et écrire un fichier pour son jeu Left_bar_bleue75/250[Ruby] Lire et écrire un fichier pour son jeu Empty_bar_bleue  (75/250)

[Ruby] Lire et écrire un fichier pour son jeu Empty
MessageSujet: [Ruby] Lire et écrire un fichier pour son jeu   [Ruby] Lire et écrire un fichier pour son jeu Icon_minitimeMar 17 Fév - 20:49

Bon, ceci est un tutoriel qui vous permettra d'écrire et de lire un fichier qui déterminera des paramètres dans votre jeu, et qui permettra à un joueur de modifier certains paramètres.
Et cela en incluant une sécurité!

Difficulté : moyenne

A connaître : Les bases du ruby, le reste est expliqué, certains points de base sont aussi repris.

On apprend en plus des bases:
-l'utilité de la méthode "split" et de la méthode "gsub!" .
-Lire et écrire un fichier
-Gestion de l'erreur avec la structure begin...rescue...end

ETAPE 1 : Les paramètres et la syntaxe du fichier
---Paramètres à inclure---
Nous allons donc choisir quelques paramètres à déterminer.
Prenons, par exemple, deux variables de RPGMaker :
-$fontface qui détermine la police du texte
-$fontsize qui détermine la taille du texte

---Syntaxe du fichier---
Alors, je vais vous montrer une syntaxe simple, que vous utiliserez pour pouvoir lire le fichier, et en tirer des informations:

Code:
Paramètre1 = valeur ;
P a r a m è t r e2 = A r ial_Blac k
Pourquoi est-ce écrit ça comme ça??
Parce que notre syntaxe ne prendra pas en compte les espaces donc :
P a r a m è t r e2 revient à écrire paramètre2.
Pourquoi ce tiret "_" entre Arial et Black?
Parce que ce tiret sera transformé par la suite par un espace,et si on colle Arial et Black, la police ne sera pas reconnue.
Ensuite, ce point virgule, c'est quoi??
(Bon, ouais, je me suis un peu inspiré du C++)
C'est pour séparer nos instructions, vous verrez comment par la suite.
Donc, voilà pour ça, la syntaxe est établie! Very Happy
Maintenant, on va définir les paramètres par défaut du fichier ainsi que son nom.
Appelons le "Params.txt"
Et dedans, mettons:
Police = Arial;
Taille = 24

Remarques :
-la dernière instruction n'a pas besoin d'avoir un point virgule en sa fin.
-On crée le fichier une première fois pour tester, vous verrez pourquoi par la suite il se créera tout seul Very Happy


ETAPE 2: Lecture du fichier
Là, les choses sérieuses commencent! :demon
Nous devons tout d'abbord ouvrir le fichier en lecture seule, puis, enregistrer son contenu dans une variable.
Procédons comme ceci:
Code:
file = File.open("Params.txt", "r")
fichier = file  #Vous verrez pourquoi après, c'est pour fermer
fichier = fichier.read
Mais qu'est ce que c'est ça??
Tout d'abbord, on demande d'ouvrir le fichier "Params.txt", puis...
Ce "r" là, comme deuxième argument Késako??
Ca veut dire qu'on l'ouvre en lecture seule on écrira pas dessus pour le moment, le pointeur se placera aussi au début du fichier.
Puis on demande à ce que la variable fichier prenne le contenu du document texte.

Alors, ça y'est, on à tout dedans, mais comment on fait pour interpréter ça?????

Tout d'abbord, on va enlever les espaces et transformer les tirets ("_") en espaces, comme cela:
Code:
fichier.gsub!(" ", "")
fichier.gsub!("_", " ")
La méthode gsub! permet de remplacer une chaîne de caractères par une autre. Un exemple plus flagrant :
Code:
fichier.gsub("oui", "true")
Ici, tous les "oui", seront transformés en "true"

Ceci fait on va séparer les instructions comme suit:
Code:
fichier = fichier.split(";")
Késako ça aussi??
Et bien, celà transforme la chaîne de caractère fichier, en un tableau, qui contient plusieurs chaînes de caractères : les parties séparées par les points virgules! En fait, on a demandé de "couper" là où il y a un point virgule.
Donc, maintenant, pour avoir une vision:
fichier = ["Police = Arial", "Taille = 14"]
Voilà à quoi est égale notre variable fichier...
On peut rien faire avec ça non plus, il faut déjà mettre chaque partie du tableau dans une variable. Alors, on va faire:
Code:
police = fichier[0]
taille = fichier[1]
Et voilà, on se retrouve avec 2 variables : police et fichier... police étant égale à la première partie du tableau et taille à la seconde...
Mais on peut encore rien faire avec ça...
On va donc séparer ce qui est d'un côté du "=", et ce qui est de l'autre côté et qui nous intéresse!
Alors on fait:
Code:
police = police.split("=")
@police = police[1]              #Pour qu'il soit reconnu plus tard
taille = taille.split("=")
@taille = taille[1].to_i        #Pour qu'il soit reconnu plus tard
Une chose à noter : on convertit la chaîne de caractères "42" en un Integer (un entier) 42 grâce à la méthode to_i
Maintenant, on a les infos, ici on a:
police = "Arial"
taille = 24

Et pour la fin, on met cette ligne de code:
Code:
file.close
Il ne nous reste plus qu'à mettre ça là où il faut.
C'est à dire, au commencement de tout... dans l'antre du script "main"!!!!
Donc, tout au début de main, mettez tout ce que je vous ai montré:
Code:
file = File.open("Params.txt", "r")
fichier = file  #Vous verrez pourquoi après, c'est pour fermer
fichier = fichier.read
fichier.gsub!(" ", "")
fichier.gsub!("_", " ")
fichier = fichier.split(";")
police = fichier[0]
taille = fichier[1]
police = police.split("=")
@police = police[1]              #Pour qu'il soit reconnu plus tard
taille = taille.split("=")
@taille = taille[1].to_i        #Pour qu'il soit reconnu plus tard
file.close
Et maintenant, pour appliquer ces modifs, nous restons dans "main" et nous changeons:
$fontface = "Arial"
$fontsize = 24
en
Code:

$fontface = @police
$fontsize = @taille

ETAPE 3 : Gestion des erreurs
Alors, maintenant, imaginez un instant que le fichier soit supprimé, ou qu'il y ait une erreur à l'intérieur!! :hurle
Catastrophe, le joueur est dans la mouise.
Donc, on va appliquer une gestion de l'erreur grâce à la technique
begin... rescue... end
A quoi ça sert?
Et bien, celà, si il y a une erreur, au lieu de vous afficher un message d'erreur et de fermer, fait que vous pouvez passer à la commande dans rescue pour rétablir la situation.
Nous allons donc foutre un begin en haut de notre code et à la fin un rescue (avant le begin de main).
A la suite du rescue, nous allons informer le joueur que le fichier "Params.txt" n'existe pas où est corrumpu, avec un:
Code:
print "Le fichier 'Params.txt' n'existe pas ou est corrompu.
Appuyez sur entrée pour créer le fichier"
Puis, on va créer le fichier en question, et écrire dedans, ou, s'il est erroné le remplacer par un nouveau.
Pour cela, nous allons faire:
Code:
fichier = File.open("Params.txt", "w+")
Mais qu'est-ce que c'est que ce "w+"?
Ca veut dire qu'on l'ouvre en lecture/écriture, et qu'on écrase toutes les données à l'intérieur, et que s'il n'existe pas, on le crée.
Puis, on va écrire nos données par défaut dedans :
Code:
fichier.write("Police=Arial;
Taille=24)
Et on referme le fichier pour enregistrer les modifications...
Code:
file.close
Note: dans l'éditeur de script de XP, la deuxième ligne ne va pas apparaître violette comme si elle était entre guillemets, cependant, elle l'est en réalité. Dans l'éditeur de VX, ce bug a été corrigé

Maintenant, on va informer le joueur que le fichier a été créé:
Code:
print "Le fichier 'Params.txt' a été créé avec succès!"
puis, fini le rescue, on met la touche finale!! :
Code:
end
Donc, dans le rescue on a:
Code:

rescue
print "Le fichier 'Params.txt' n'existe pas ou est corrompu.
Appuyez sur entrée pour créer le fichier"
fichier = File.open("Params.txt", "w+")
fichier.write("Police=Arial;
Taille=24)
file.close
print "Le fichier 'Params.txt' a été créé avec succès!"
@taille = 24
@police = "Arial"  #Parce qu'il ne relit pas le fichier après
end
Et voilà, c'est fin prêt!!

ANNEXES
Voici un petit quelque chose que j'ai sortit de je sais pas où qui donne les "flags" et leur fonction:
Citation :
'r' Ouvre en lecture seule, et place le pointeur de fichier au début du fichier.
'r+' Ouvre en lecture et écriture, et place le pointeur de fichier au début du fichier.
'w' Ouvre en écriture seule ; place le pointeur de fichier au début du fichier et réduit la taille du fichier à 0. Si le fichier n'existe pas, on tente de le créer.
'w+' Ouvre en lecture et écriture ; place le pointeur de fichier au début du fichier et réduit la taille du fichier à 0. Si le fichier n'existe pas, on tente de le créer.
'a' Ouvre en écriture seule ; place le pointeur de fichier à la fin du fichier. Si le fichier n'existe pas, on tente de le créer.
'a+' Ouvre en lecture et écriture ; place le pointeur de fichier à la fin du fichier. Si le fichier n'existe pas, on tente de le créer.
'x' Crée et ouvre le fichier en lecture seule ; place le pointeur de fichier au début du fichier. Si le fichier existe déjà, fopen() va échouer, en retournant FALSE et en générant une erreur de niveau E_WARNING. Si le fichier n'existe pas, fopen() tente de le créer. Ce mode est l'équivalent des options O_EXCL|O_CREAT pour l'appel système open(2) sous-jacent. Cette option est supportée à partir de PHP 4.3.2 et fonctionne uniquement avec des fichiers locaux.
'x+' Crée et ouvre le fichier en lecture et écriture ; place le pointeur de fichier au début du fichier. Si le fichier existe déjà, fopen() va échouer, en retournant FALSE et en générant une erreur de niveau E_WARNING. Si le fichier n'existe pas, fopen() tente de le créer. Ce mode est l'équivalent des options O_EXCL|O_CREAT pour l'appel système open(2) sous-jacent. Cette option est supportée à partir de PHP 4.3.2, et fonctionne uniquement avec des fichiers locaux.

Voilà, c'est tout, si vous avez des questions à poser... Very Happy

Tutoriel rédigé par RPG-Man. Wink
Revenir en haut Aller en bas
yakzawik
Admin
Admin
yakzawik


Nombre de messages : 232
Age : 33
Localisation : Coin paumé
Date d'inscription : 07/01/2009

Feuille de personnage
Connaissances:
[Ruby] Lire et écrire un fichier pour son jeu Left_bar_bleue120/250[Ruby] Lire et écrire un fichier pour son jeu Empty_bar_bleue  (120/250)
Création:
[Ruby] Lire et écrire un fichier pour son jeu Left_bar_bleue0/250[Ruby] Lire et écrire un fichier pour son jeu Empty_bar_bleue  (0/250)
RPGMaker:
[Ruby] Lire et écrire un fichier pour son jeu Left_bar_bleue100/250[Ruby] Lire et écrire un fichier pour son jeu Empty_bar_bleue  (100/250)

[Ruby] Lire et écrire un fichier pour son jeu Empty
MessageSujet: Re: [Ruby] Lire et écrire un fichier pour son jeu   [Ruby] Lire et écrire un fichier pour son jeu Icon_minitimeMer 18 Fév - 15:24

Bon tutoriel, même si je ne suis pas d'humeur à le lire aujourd'hui ...
Je n'arrive pas à me concentrer, j'ai les sinus bouchés et en plus je suis fatigué xd
Revenir en haut Aller en bas
https://ouroboros-gilgamesh.forumgaming.fr
RPG-Man
Amateur
Amateur
RPG-Man


Nombre de messages : 185
Age : 30
Localisation : Devant mon ordi, réfléchis! :p
Date d'inscription : 11/01/2009

Feuille de personnage
Connaissances:
[Ruby] Lire et écrire un fichier pour son jeu Left_bar_bleue85/250[Ruby] Lire et écrire un fichier pour son jeu Empty_bar_bleue  (85/250)
Création:
[Ruby] Lire et écrire un fichier pour son jeu Left_bar_bleue150/250[Ruby] Lire et écrire un fichier pour son jeu Empty_bar_bleue  (150/250)
RPGMaker:
[Ruby] Lire et écrire un fichier pour son jeu Left_bar_bleue75/250[Ruby] Lire et écrire un fichier pour son jeu Empty_bar_bleue  (75/250)

[Ruby] Lire et écrire un fichier pour son jeu Empty
MessageSujet: Re: [Ruby] Lire et écrire un fichier pour son jeu   [Ruby] Lire et écrire un fichier pour son jeu Icon_minitimeMer 18 Fév - 15:56

Comment peux-tu savoir s'il est bon, alors que tu ne l'as pas lu?? ^^
T'as les sinus bouchés c'est bien fait pour toi! fallait te couvrir! lol!
Revenir en haut Aller en bas
yakzawik
Admin
Admin
yakzawik


Nombre de messages : 232
Age : 33
Localisation : Coin paumé
Date d'inscription : 07/01/2009

Feuille de personnage
Connaissances:
[Ruby] Lire et écrire un fichier pour son jeu Left_bar_bleue120/250[Ruby] Lire et écrire un fichier pour son jeu Empty_bar_bleue  (120/250)
Création:
[Ruby] Lire et écrire un fichier pour son jeu Left_bar_bleue0/250[Ruby] Lire et écrire un fichier pour son jeu Empty_bar_bleue  (0/250)
RPGMaker:
[Ruby] Lire et écrire un fichier pour son jeu Left_bar_bleue100/250[Ruby] Lire et écrire un fichier pour son jeu Empty_bar_bleue  (100/250)

[Ruby] Lire et écrire un fichier pour son jeu Empty
MessageSujet: Re: [Ruby] Lire et écrire un fichier pour son jeu   [Ruby] Lire et écrire un fichier pour son jeu Icon_minitimeVen 20 Fév - 13:37

Disons que je l'ai lu, mais que je ne l'ai pas mis en application, c'est différent;
Mais tu expliques bien. C'est clair et tout.^^
Revenir en haut Aller en bas
https://ouroboros-gilgamesh.forumgaming.fr
RPG-Man
Amateur
Amateur
RPG-Man


Nombre de messages : 185
Age : 30
Localisation : Devant mon ordi, réfléchis! :p
Date d'inscription : 11/01/2009

Feuille de personnage
Connaissances:
[Ruby] Lire et écrire un fichier pour son jeu Left_bar_bleue85/250[Ruby] Lire et écrire un fichier pour son jeu Empty_bar_bleue  (85/250)
Création:
[Ruby] Lire et écrire un fichier pour son jeu Left_bar_bleue150/250[Ruby] Lire et écrire un fichier pour son jeu Empty_bar_bleue  (150/250)
RPGMaker:
[Ruby] Lire et écrire un fichier pour son jeu Left_bar_bleue75/250[Ruby] Lire et écrire un fichier pour son jeu Empty_bar_bleue  (75/250)

[Ruby] Lire et écrire un fichier pour son jeu Empty
MessageSujet: Re: [Ruby] Lire et écrire un fichier pour son jeu   [Ruby] Lire et écrire un fichier pour son jeu Icon_minitimeVen 20 Fév - 13:54

Ben, merci! En tout cas, moi je m'en sers pour DDPMaker, où tu pourras configurer 9 paramètres (dont 3 qui marchent pas encore ^^).
Ce matin je viens d'inventer ce que j'ai appelé "Audio Forcing" tu verras quand tu testeras (si tu testes ). lol!
Revenir en haut Aller en bas
yakzawik
Admin
Admin
yakzawik


Nombre de messages : 232
Age : 33
Localisation : Coin paumé
Date d'inscription : 07/01/2009

Feuille de personnage
Connaissances:
[Ruby] Lire et écrire un fichier pour son jeu Left_bar_bleue120/250[Ruby] Lire et écrire un fichier pour son jeu Empty_bar_bleue  (120/250)
Création:
[Ruby] Lire et écrire un fichier pour son jeu Left_bar_bleue0/250[Ruby] Lire et écrire un fichier pour son jeu Empty_bar_bleue  (0/250)
RPGMaker:
[Ruby] Lire et écrire un fichier pour son jeu Left_bar_bleue100/250[Ruby] Lire et écrire un fichier pour son jeu Empty_bar_bleue  (100/250)

[Ruby] Lire et écrire un fichier pour son jeu Empty
MessageSujet: Re: [Ruby] Lire et écrire un fichier pour son jeu   [Ruby] Lire et écrire un fichier pour son jeu Icon_minitimeVen 20 Fév - 20:28

oui oui
j'ai le jeu sur mon ordi, mais j'ai pas trop eu le temps de tester.
Je suis encore en cours moi, et mes vacances ne commencent que demain, là où les tiennes sont surement bientôt voire déjà finies ^^"
Revenir en haut Aller en bas
https://ouroboros-gilgamesh.forumgaming.fr
RPG-Man
Amateur
Amateur
RPG-Man


Nombre de messages : 185
Age : 30
Localisation : Devant mon ordi, réfléchis! :p
Date d'inscription : 11/01/2009

Feuille de personnage
Connaissances:
[Ruby] Lire et écrire un fichier pour son jeu Left_bar_bleue85/250[Ruby] Lire et écrire un fichier pour son jeu Empty_bar_bleue  (85/250)
Création:
[Ruby] Lire et écrire un fichier pour son jeu Left_bar_bleue150/250[Ruby] Lire et écrire un fichier pour son jeu Empty_bar_bleue  (150/250)
RPGMaker:
[Ruby] Lire et écrire un fichier pour son jeu Left_bar_bleue75/250[Ruby] Lire et écrire un fichier pour son jeu Empty_bar_bleue  (75/250)

[Ruby] Lire et écrire un fichier pour son jeu Empty
MessageSujet: Re: [Ruby] Lire et écrire un fichier pour son jeu   [Ruby] Lire et écrire un fichier pour son jeu Icon_minitimeVen 6 Mar - 14:00

Si ça t'est utile tant mieux, sinon, tant pis ^^
Revenir en haut Aller en bas
Contenu sponsorisé





[Ruby] Lire et écrire un fichier pour son jeu Empty
MessageSujet: Re: [Ruby] Lire et écrire un fichier pour son jeu   [Ruby] Lire et écrire un fichier pour son jeu Icon_minitime

Revenir en haut Aller en bas
 
[Ruby] Lire et écrire un fichier pour son jeu
Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
L'ombre du Behemoth :: RPG Maker :: Tutoriaux-
Sauter vers: