Perso dans mon petit jeu, je fais du tiling 2D aussi (avec SDL également).
Donc ma méthode (de lecture), je pense qu'elle est standard :
* Pour le chargement: Tu lis dans ton fichier map, des numéros séparés par des espaces avec ifstream (genre 0 = l'herbe, 1 = la route, 2 = ...).
* Tu stockes tes tiles (qui correspondent à des chiffres, camouflés dans un énum) dans un tableau C ou vector STL ou encore list STL à deux dimensions d'int.
Pour un vector, deux dimensions c'est :
std::vector< std::vector <int> > ma_map;
par exemple.
* Pour l'affichage: Tu parcours ton tableau de tiles avec deux boucles imbriquées (pour explorer tes deux dimensions de ton tableau) et tu blits tes diffèrentes surfaces grâce à ton tableau de tiles.
La formule pour obtenir les coordonnées du tile que tu es en train de blitter est simple :
La position X du tile courant est défini par la position de l'itérateur de premier boucle * la taille d'un tile en X
La position Y du tile courant est défini par la position de l'itérateur de la deuxième boucle * la taille d'un tile en Y
Je pense qu'il y avait des choses que tu connaissais déjà dedans. Je sais pas si c'est la méthode la plus optimisée, et si quelqu'un a mieux, qu'il poste.
PS: L'écriture c'est pareil sauf que c'est ofstream. (si tu bloques vraiment tu peux regarder le post sur mon petit jeu dans Projets, il y a un éditeur de niveaux)
Partager