µLua DS - Forum officiel | Official forum Index du Forum

µLua DS - Forum officiel | Official forum
Le bon endroit pour en savoir plus sur MicroLua et pour parler de vos projets ! | The right place to learn more about MicroLua and talk about your projects !

 FAQFAQ   RechercherRechercher   MembresMembres   GroupesGroupes   S’enregistrerS’enregistrer   ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

Comment enregistrer sa map ?

 
Poster un nouveau sujet   Répondre au sujet    µLua DS - Forum officiel | Official forum Index du Forum -> Section française -> Demande d'aide
Sujet précédent :: Sujet suivant  
Auteur Message
Sharkou


Hors ligne

Inscrit le: 22 Fév 2012
Messages: 84
Localisation: Bretagne

MessagePosté le: Sam 4 Jan 2014 - 16:49    Sujet du message: Comment enregistrer sa map ? Répondre en citant

Salut,

J'aimerais créer un éditeur de map dans mon jeu, j'utilise les Scrollmaps.
Le problème c'est que la fonction ScrollMap.setTile() modifie la map mais elle ne l'enregistre pas dans map.map or c'est ce que je voudrais pouvoir faire ^^
Et je crois pas que les fichiers.ini peuvent être utilisés pour ça...
Vous pourriez m'aider ?, merci :p


Revenir en haut
Publicité






MessagePosté le: Sam 4 Jan 2014 - 16:49    Sujet du message: Publicité

PublicitéSupprimer les publicités ?
Revenir en haut
Reylak
Administrateur

Hors ligne

Inscrit le: 24 Nov 2008
Messages: 2 838
Localisation: Toulouse

MessagePosté le: Sam 4 Jan 2014 - 22:27    Sujet du message: Comment enregistrer sa map ? Répondre en citant

Et bien il faudrait en fait que tu modifies le fichier .map comme un fichier classique (avec le module "io" de Lua quoi). Il te faut parser le fichier (facile, il y a des pipes "|" partout :p), comme ça t'en as un tableau, pis tu modifies le tableau et tu réenregistres le fichier à partir de ce tableau (ou alors tu te débrouilles pour modifier pile la bonne case, un peu plus compliqué mais plus rapide je suppose).
Quoiqu'il en soit je suis persuadé que quelqu'un a déjà fait ça (genre Fantasix avec son Slippery Cave), alors si tu es un peu feignant, ou pour t'inspirer, regarde par là Wink
_________________


Plein d'infos sur le SourceForge !


Revenir en haut
Visiter le site web du posteur MSN Skype
Sharkou


Hors ligne

Inscrit le: 22 Fév 2012
Messages: 84
Localisation: Bretagne

MessagePosté le: Sam 4 Jan 2014 - 22:56    Sujet du message: Comment enregistrer sa map ? Répondre en citant

Merci je vois un peu comment faire mais y'aurait pas un tuto ou une doc' en français pour apprendre à utiliser le module "io" ?

Revenir en haut
Reylak
Administrateur

Hors ligne

Inscrit le: 24 Nov 2008
Messages: 2 838
Localisation: Toulouse

MessagePosté le: Sam 4 Jan 2014 - 23:45    Sujet du message: Comment enregistrer sa map ? Répondre en citant

Je pense qu'il te faut "io.open()" qui produit un "objet" fichier, puis la méthode ":close()" de cet objet pour le fermer.
Sur ce fichier, la méthode ":read()" te permettra très probablement de charger tout le fichier dans un string.
Ensuite, pour transformer ce string en table, je pense qu'il faut faire une boucle for sur table.gmatch en t'inspirant de l'exemple de la doc Lua (sur lua.org) : tu vas ainsi parcourir tout le string nombre par nombre (le pattern repose sur les pipes), et le corps de la boucle fait un table.insert() du nombre dans une table.

Un tuto en français je peux pas t'aider désolé. La documentation anglaise n'est pas très dure, c'est pas de la grande littérature et il y a beaucoup d'exemples Smile
_________________


Plein d'infos sur le SourceForge !


Revenir en haut
Visiter le site web du posteur MSN Skype
Sharkou


Hors ligne

Inscrit le: 22 Fév 2012
Messages: 84
Localisation: Bretagne

MessagePosté le: Dim 5 Jan 2014 - 00:22    Sujet du message: Comment enregistrer sa map ? Répondre en citant

Ok merci beaucoup j'vais voir ça alors !

Revenir en haut
Thomas99


Hors ligne

Inscrit le: 12 Avr 2012
Messages: 141
Localisation: Le forum.

MessagePosté le: Dim 5 Jan 2014 - 11:11    Sujet du message: Comment enregistrer sa map ? Répondre en citant

Mais... mais pourquoi, Reylak, veut-tu parser le .map ? A moins que je rate quelque chose, ça ne sert à rien, vu que les ScrollMaps le font déjà à notre place. C'est archi-simple à faire, il suffit d'une fonction qui prend en paramètre la ScrollMap, sa longueur, sa hauteur, et le path du fichier où la sauvegarder. La fonction parcourt toute la map, à chaque tile elle écrit " ScrollMap.getTile(...) .. '|' " dans le fichier, et ça devrait être bon. J'avais fait un éditeur un jour, si jamais je retrouve cette fonction je la met ici...

EDIT : Et la voilà :
Code:
function saveMap(scrollmap, width, height, path)
   file = io.open(path, "w")

   for tileY=0, height-1 do
      for tileX=0, width-1 do
         file:write(tostring(ScrollMap.getTile(scrollmap, tileX, tileY)).."|")
      end
      screen.print(SCREEN_UP, 50, 70, "Sauvegarde en cours : "..math.floor(((tileY+1)/height)*100) .." %")
      render()
      file:write("\n")
   end

   file:flush()
   file:close()
end

Il indique même le % d'avancement :p
_________________
Publié : ctrµLua, Candran
A publier : TCPDebugger, FastShell
A finir : µPortal, LLUL, µStore, serveur wifis, microlua.js, d'autres trucs
Mon site \o/


Dernière édition par Thomas99 le Dim 5 Jan 2014 - 11:21; édité 2 fois
Revenir en haut
Visiter le site web du posteur
Reylak
Administrateur

Hors ligne

Inscrit le: 24 Nov 2008
Messages: 2 838
Localisation: Toulouse

MessagePosté le: Dim 5 Jan 2014 - 11:14    Sujet du message: Comment enregistrer sa map ? Répondre en citant

Mmh ça se fait comme ça aussi oui... Bah au moins il aura eu un aperçu du machin en Lua :p
_________________


Plein d'infos sur le SourceForge !


Revenir en haut
Visiter le site web du posteur MSN Skype
Sharkou


Hors ligne

Inscrit le: 22 Fév 2012
Messages: 84
Localisation: Bretagne

MessagePosté le: Dim 5 Jan 2014 - 15:07    Sujet du message: Comment enregistrer sa map ? Répondre en citant

Wow merci trop cool Very Happy
Tu pourrais m'expliquer vite fait comment tu calcules les pourcentages ?^^


Revenir en haut
Thomas99


Hors ligne

Inscrit le: 12 Avr 2012
Messages: 141
Localisation: Le forum.

MessagePosté le: Dim 5 Jan 2014 - 16:57    Sujet du message: Comment enregistrer sa map ? Répondre en citant

C'est assez simple :
Code:
math.floor( ( (tileY+1)/height ) *100 )

Là dedans,
Code:
( (tileY+1)/height )
donne le pourcentage (entre 0 et 1), on divise le y de la ligne actuellement traitée (plus 1, car ça commencer à zéro) par le nombre total de lignes. Puis
Code:
math.floor( ( (tileY+1)/height ) *100 )
on multiplie par 100 pour avoir quelque chose de plus facile à lire. Ensuite, on utilise math.floor pour arrondir et pas se retrouver avec quelque chose comme 42.33333333333333%.
_________________
Publié : ctrµLua, Candran
A publier : TCPDebugger, FastShell
A finir : µPortal, LLUL, µStore, serveur wifis, microlua.js, d'autres trucs
Mon site \o/


Revenir en haut
Visiter le site web du posteur
Sharkou


Hors ligne

Inscrit le: 22 Fév 2012
Messages: 84
Localisation: Bretagne

MessagePosté le: Dim 5 Jan 2014 - 18:14    Sujet du message: Comment enregistrer sa map ? Répondre en citant

Ok merci Smile

Revenir en haut
Contenu Sponsorisé






MessagePosté le: Aujourd’hui à 03:50    Sujet du message: Comment enregistrer sa map ?

Revenir en haut
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    µLua DS - Forum officiel | Official forum Index du Forum -> Section française -> Demande d'aide Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

 
Sauter vers:  

Index | Creer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com