Article     Discussion     Modifier     Historique     Forums     Salon IRC

Gérer les fichiers avec 3d games creator

Un article de Games Creators Network.


Cet article a pour thème la lecture et l'écriture des fichiers de façon simple, nous verrons que l'on peut procéder de deux façons différentes. Pourquoi lire/écrire des fichiers ?

Je pense qu'avant de commencer, il est bon de montrer à quoi tout cela va nous servir !

  • enregistrer les options du jeu (résolution, configuration des touches, difficulté du jeu...)
  • donner au joueur la possibilité de sauvegarder sa partie
  • enregistrer les high scores
  • créer un fichier de log: c'est à dire un fichier qui résume ce qui s'est passé durant le déroulement du jeu, pour les projets complexes, cela permet un débuggage aisé
  • etc...


Contenu du tutoriel

  1. Lecture et écriture de tableaux
  2. Lire un fichier maunellement
  3. Ecrire un fichier manuellement
  4. Off-line

[modifier] Lecture et écriture de tableaux

Les tableaux peuvent être enregistrés et chargés automatiquement grâce aux fonctions load array et save array:

rem on doit créer le tableau avant l'utilisation de load/savearray
dim tableau(1)
rem on sauvegarde le tableau dans le fichier 00.arr
save array "00.arr",tableau(0)
rem on charge les informations contenue dans 00.arr et on les stocke dans le tableau
load array "00.arr",tableau(0)

Le premier paramètre de la fonction indique le tableau qui va être rempli avec le contenu du fichier. Ce tableau doit être suivi de sa structure comme on l'a déclaré avec la commande dim, mais dans les faits, la commande ignore cette valeur donc on peux mettre n'importe quoi !

Ces enregistrements ne peuvent pas être lus par le bloc-note, ce qui peut être utile pour éviter les tricheries !

[modifier] Lire un fichier manuellement

Maintenant, nous allons nous attaquer à la lecture de fichiers. Je tiens à préciser avant de commencer que tous les fichiers réalisés avec cette méthode peuvent être lus avec le bloc-note. Première étape: on ouvre le fichier grâce à la fonction open to read. Lors de l'appel de cette fonction, on doit spécifier le nom du fichier et son numéro: comme les images, les fichiers ouverts manuellement portent un numéro cmopris entre 1 et 32 ce qui permet donc d'ouvrir 32 fichiers simultanément.

Puis on lit les informations grâce à read string qui enregistre les infos lues dans une variable de votre choix. Enfin, on referme le fihcier pour libérer des ressources.

Je reviens juste sur la lecture des informations: dans les fichiers créés manuellement, chaque information ,séparée par un passage à la ligne, doit être lue séparément, on doit donc faire autant de read sting qu'il y a d'informations dans le fichier (et donc de lignes si on l'ouvre avec le bloc-note).

Voici un code type:

open to read 1,"file.dat"
	read string 1,a$
	read string 1,b$ 
	read string 1,c$
close file 1

Essayez maintenant de lancer le programme. Arg ! ça marche pas... Pourquoi ? tout simplement parce que le fichier n'existe pas !

Pour éviter ce genre de bug, nous allons tester si le fichier existe avant de procéder à la lecture grâce à l'instruction file exist(); cette fonction renvoie un "1" si le fichier spécifié existe sinon elle renvoie "0".

Voici notre nouveau programme:

if file exist("file.dat")=1
	open to read 1,"file.dat"
	read string 1,a$
	read string 1,b$
	read string 1,c$
	close file 1
endif

Relancez notre programme, rien ne s'affiche mais il n'y a plus de bugs !

Maintenant créez ce fichier dans le bloc-note: salut tout le monde !

Enregistrez le sous le nom "file.dat" sans oublier les guillements (qui force l'extension à être .dat et non pas .dat.txt) dans le répertoire où vous avez enregistré le code source.

Allez, on reessaie... toujours rien ! Le fichier est lu mais ça nous avance pas à grand chose, on va afficher le contenu du fichier. Pour cela il suffit de rajouter quelques print:

if file exist("file.dat")=1
	open to read 1,"file.dat"
	read string 1,a$
	read string 1,b$
	read string 1,c$
	close file 1
endif
print a$
print b$
print c$
wait key

On réessaie et là, enfin ça marche ! Salut tout le monde est affiché à l'écran sur trois lignes...

Prochaine étape: générer ce fichier grâce à un programme !

[modifier] Ecrire un fichier manuellement

Pour écrire un fichier la méthode est presque la même: on crée le fichier en utilisant open to write (même syntaxe que open to read), on écrit les informatiosn avec write string et on referme le fichier avec close file.

Voici un code type:

open to write 1,"file.dat"
	write string 1,"salut"
	write string 1,"tout"
	write string 1,"le monde !"
close file 1

Avant de procéder au test, vérifier que le fichier file.dat que nous abons créé se situe dans le même répertoire que notre code source. On compile et... ça ne marche pas ! ça devient habituel...

Lorsque l'on utilise open to write, vérifiez bien que le fichier qui va être créé n'existe pas, sinon ça crée l'erreur que nous venons de rencontrer ! Une fois de plus utilisons file exist() pour éviter le bug; nous allons utiliser également delete file: cette fonction très simple supprime le fichier passé en paramètre.

Voici notre nouveau code source:

if file exist("file.dat")=1 then delete file "file.dat"
open to write 1,"file.dat"
	write string 1,"salut"
	write string 1,"tout"
	write string 1,"le monde !"
close file 1

Et voilà, vous savez maintenant comment générer et lire de fichiers simples.


Ce document a été publié sur la version 3 du G.C.N. par MrCool.

  • Auteur Original : MrCool
  • Date de publication : 31 juillet 2002

 

Rechercher
Installer l'extension de recherche Plus d'informations

 

Comprendre
Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends. - Benjamin Franklin

 

Partager
La connaissance est la seule chose qui s'accroit lorsqu'on la partage. - Sacha Boudjema

 

Créer
L'imagination est plus importante que la connaissance. - Albert Einstein

 

 

Le wiki en images Le wiki en images Image du mois: «Snowball: un prototype de jeu développé avec NeL.