Mobi Utilisateur confirmé: Rang ****
Messages : 1256 Localisation : Dijon
| Sujet: Création de niveau .txt Ven 17 Fév 2012 - 16:26 | |
| Bonjour, je cherche pour alléger mon jeu à faire des niveaux en .txt. Nous somme aussi plusieurs à créer le jeu, donc il sera bien plus simple de ce partager la tache. Explication : Je vais faire un logiciel externe à mon jeu pour créer des niveaux. J'aimerais que les niveau soit enregistrer en .txt, .ini ou autre extension (si possible non modifiable avec un éditeur de texte). Voici un exemple : - Code:
-
(nom niveau) 1111111111 1s00000001 1111111101 1110000101 1000000101 1000000101 1000000001 110j000101 1100000101 1111111111 Un peu comme : IcemazeJe ne sais pas du tout comment m'y prendre pour faire ça, pouvez vous m'aider ? Merci d'avance _________________ |
|
onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Création de niveau .txt Ven 17 Fév 2012 - 16:48 | |
| Tu sais pas t'y prendre a quel niveau ? Edition de la map ou l'enregistrement ? |
|
Mobi Utilisateur confirmé: Rang ****
Messages : 1256 Localisation : Dijon
| Sujet: Re: Création de niveau .txt Ven 17 Fév 2012 - 16:54 | |
| l'enregistrement et la lecture du fichier. _________________ |
|
arthuro Utilisateur confirmé: Rang ****
Messages : 1483 Localisation : Paris Projet Actuel : Diagon https://arthursonzogni.com/Diagon
| Sujet: Re: Création de niveau .txt Ven 17 Fév 2012 - 18:28 | |
| Avec Game Maker; Tu peux commencer par apprendre à ouvrir des fichiers, lire et écrire. voila, la doc (attention elle date peut-être) - Spoiler:
Il est souvent utile d'utiliser des fichiers externes dans les jeux. Par exemple, vous pourriez vouloir créer un fichier décrivant à quels moments certaines choses doivent se passer dans votre jeu. Vous pourriez également souhaiter sauvegarder des informations qui seront utilisées lors d'une prochaine exécution du jeu (par exemple, sauvegarde de la room courante). Les fonctions suivantes permettent de lire et d'écrire des données dans les fichiers de type texte :
file_text_open_read(fname) Ouvre en lecture le fichier de nom fname. La fonction retourne l'id du fichier qui devra être ensuite utilisé dans les autres fonctions. Il vous est possible d'ouvrir plusieurs fichiers en même temps (32 au maximum). N'oubliez pas de fermer les fichiers dès que vous n'en avez plus besoin. file_text_open_write(fname) Ouvre en écriture le fichier de nom fname, créant ce dernier si celui-ci n'existe pas déjà. La fonction retourne l'id du fichier créé qui devra ensuite être utilisé dans les autres fonctions. file_text_open_append(fname) Ouvre en mode ajout le fichier de nom fname, créant ce dernier si celui-ci n'existe pas déjà. La fonction retourne l'id du fichier qui devra ensuite être utilisé dans les autres fonctions. file_text_close(fileid) Ferme le fichier d'id fileid. file_text_write_string(fileid,str) Ecrit la chaîne str dans le fichier d'id fileid. file_text_write_real(fileid,x) Ecrit le nombre réel x dans le fichier d'id fileid. file_text_writeln(fileid) Ecrit un caractère newline (passage à la ligne suivante) dans le fichier d'id fileid. file_text_read_string(fileid) Lit une chaîne à partir du fichier d'id fileid puis retourne la chaîne lue. file_text_read_real(fileid) Lit un nombre réel à partir du fichier d'id fileid puis retourne la valeur lue. file_text_readln(fileid) Saute le reste de la ligne courante du fichier d'id fileid puis se place au début de la ligne suivante. file_text_eof(fileid) Indique si l'on a atteint la fin du fichier.
Vous pouvez utiliser les fonctions suivantes pour manipuler les fichiers du système d'exploitation :
file_exists(fname) Indique si le fichier de nom fname existe (true) ou pas (false). file_delete(fname) Supprime le fichier fname. file_rename(oldname,newname) Renomme le fichier oldname en newname. file_copy(fname,newname) Copie le fichier fname dans un nouveau fichier de nom newname. directory_exists(dname) Retourne si le répertoire indiqué dname existe. directory_create(dname) Crée le répertoire dname (avec le chemin complet) si ce dernier n'existe pas déjà. file_find_first(mask,attr) Retourne le nom du premier fichier satisfaisant le filtre mask et les attributs attr. Une chaîne vide sera retournée si la recherche n'a pas abouti. Le filtre mask peut contenir le nom d'un chemin mais aussi des caractères jokers comme par exemple 'C:\temp\*.doc'. Les attributs vous permettent de fournir les fichiers supplémentaires que vous souhaitez voir (les fichiers 'normaux' seront toujours retournés s'ils satisfont le masque). Vous pouvez utiliser les constantes suivantes afin de rechercher le type de fichiers souhaité :
fa_readonly fichiers en lecture seule fa_hidden fichiers cachés fa_sysfile fichiers systèmes fa_volumeid fichier d'id de volumes fa_directory répertoires fa_archive fichiers archives
file_find_next() Retourne le nom du prochain fichier satisfaisant le masque et les attributs précédemment fournis. Une chaîne vide sera retournée si aucun fichier n'a été trouvé. file_find_close() Afin de libérer de la mémoire, cette commande doit être invoquée après manipulation des fichiers. file_attributes(fname,attr) Indique si le fichier vérifie tous les attributs attr. Vous pouvez utiliser toute combinaison de constantes vues précédemment.
Les fonctions suivantes peuvent être utilisées pour modifier les noms de fichiers. Veuillez noter que ces fonctions ne fonctionnent pas directement avec les fichiers mais uniquement par le biais de chaînes de caractères.
filename_name(fname) Retourne le nom du fichier indiqué, avec l'extension mais sans le chemin. filename_path(fname) Retourne le chemin du nom de fichier indiqué, y compris le caractère backslash de fin de chemin. filename_dir(fname) Retourne le nom de répertoire du nom de fichier indiqué, ce qui normalement est identique au chemin sans le caractère backslash de fin de chemin. filename_drive(fname) Retourne des informations sur le lecteur où est enregistré le fichier de nom fname. filename_ext(fname) Retourne l'extension du nom de fichier indiqué, y compris le point séparateur. filename_change_ext(fname,newext) Retourne le nom de fichier indiqué, avec l'extension (incluant le point) avec ajout de la nouvelle extension newext. En utilisant une chaîne vide comme nouvelle extension, il vous est ainsi possible de supprimer l'extension.
Dans de rares situations, vous voudrez lire des données à partir de fichiers binaires. Les routines suivantes de bas niveau sont réservées à cet usage :
file_bin_open(fname,mod) Ouvre le fichier binaire fname. Le paramétre mode indique les actions possibles sur ce fichier (0 = lecture, 1 = écriture, 2 = lecture et écriture). La fonction retourne l'id du fichier devant être utilisé dans les autres fonctions. Vous pouvez ouvrir plusieurs fichiers en même temps (32 au maximum). N'oubliez pas de fermer les fichiers dès que vous n'en avez plus besoin. file_bin_rewrite(fileid) Réinitialise le fichier d'id fileid, c'est à dire l'efface puis recommence à écrire depuis le début. file_bin_close(fileid) Ferme le fichier d'id fileid. file_bin_size(fileid) Retourne la taille (en octets) du fichier d'id fileid. file_bin_position(fileid) Retourne la position courante (en octets; 0 correspond à la première position) dans le fichier d'id fileid. file_bin_seek(fileid,pos) Déplace le pointeur courant du fichier à la position indiquée. Pour écrire en fin de fichier, déplacez le pointeur en fin de fichier en utilisant la taille de ce dernier avant d'écrire. file_bin_write_byte(fileid,byte) Ecrit un octet de données dans le fichier d'id fileid. file_bin_read_byte(fileid) Lit un octet de données à partir du fichier puis retourne cette valeur.
Si le joueur a sélectionné le mode secure (mode sécurisé) dans ses préférences, pour de nombreuse routines, il ne sera pas possible d'indiquer un chemin. Seuls les fichiers du répertoire du jeu pourront être modifiés.
Les trois fonctions suivantes peuvent être utilisées pour des opérations de lecture seule :
game_id* Correspond à l'identificateur unique du jeu. Cela peut vous être utile si vous souhaitez disposer d'un nom de fichier unique. working_directory* Il s'agit ici du répertoire de travail du jeu (working directory) (ne comprend pas le caractère backslash de fin de chemin). temp_directory* Répertoire temporaire créé pour le jeu. Vous pouvez y stocker temporairement des fichiers. Les fichiers de ce répertoire seront supprimés à la fin du jeu.
Dans certaines situations, vous désirerez donner aux joueurs la possibilité de fournir des arguments sous forme de ligne de commandes pour le jeu avec lequel ils jouent (par exemple afin de créer des cheats (astuces de jeu) ou encore des modes spéciaux). Les deux routines suivantes permettent d'exploiter ces arguments.
parameter_count() Retourne le nombre de paramétres de la ligne de commandes (le nom du programme constituant l'un de ces paramétres). parameter_string(n) Retourne les n paramétres de la ligne de commandes. Le premier paramétre correspond à l'index 0. C'est le nom du programme.
Vous pouvez lire le contenu des variables d'environnement en utilisant la fonction suivante :
environment_get_variable(name) Retourne la valeur (sous forme de chaîne de caractères) de la variable d'environnement de nom name.
Ensuite tu peux voir dans la doc comment utiliser les variables de type texte pour lire lettre a lettre ton fichier. |
|
onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Création de niveau .txt Ven 17 Fév 2012 - 19:31 | |
| |
|
SPLN Utilisateur confirmé: Rang ***
Messages : 588 Localisation : Sur son ordinateur *vous vois* arrêtez de me regarder comme ça Projet Actuel : En quête de projet(s)!
Mes projets:
SP Lecteur Multimedia (Stand by)
S-Portable Graphics (demo1.8 is out! demo2.0 is planned)
SSB RPG (Stand by)
| Sujet: Re: Création de niveau .txt Sam 18 Fév 2012 - 7:05 | |
| Pour ça j'utilise l’hexadécimal. D'abord je me fais quelque part une table de valeur du genre: - object_id a écrit:
00 - Separateur 0D0A - Retour à la ligne 01 - obj_1 02 - obj2 etc...
Sauf que parfois moi je bosse avec des séparateurs et avec les lignes du genre - Code:
-
HEADER|0D|0A obj_1(id)|00|x|00|y|0D|0A obj_2(id)|00|x|00|y|0D|0A Puis je récupère les infos avec sep_string_get_arg (voir section script) pour chaque ligne avec file_text_read_ln (car "0D0A" c'est un retour à la ligne) Ce qui fait que j'ai une série d'information à traité dans une seul ligne. Après si tu regarde mon système de fichier (*.spp - Fichier Playlist) pour mon projet en suspens (SP Lecteur Multimedia) tu verras que je fais un retour à la ligne pour chaque fichier à charger de la playlist car je ne pose que les infos d'un même média sur une ligne, c'est plus ordonné ainsi que de tout étaler car j'avais prévu d'ajouter d'autres paramètre plus tard dans ce "type" de fichier playlist. Après il existe d'autre méthode c'est sûr, mais moi j'utilise pas mal les "Coma Separated Values". Voilà. |
|
Mobi Utilisateur confirmé: Rang ****
Messages : 1256 Localisation : Dijon
| Sujet: Re: Création de niveau .txt Sam 18 Fév 2012 - 10:51 | |
| Merci pour tout, ça marche presque _________________ |
|
Contenu sponsorisé
| Sujet: Re: Création de niveau .txt | |
| |
|