SDL_LoadIMG et string

lectpe Messages postés 162 Date d'inscription lundi 12 novembre 2007 Statut Membre Dernière intervention 17 juillet 2010 - 17 févr. 2009 à 18:32
lectpe Messages postés 162 Date d'inscription lundi 12 novembre 2007 Statut Membre Dernière intervention 17 juillet 2010 - 18 févr. 2009 à 12:31
Bonjour à tous,

Je suis en-train de coder un mini-jeu rpg en C++ qui est affiché en 2D grâce à la SDL.

Il y a donc des cartes (des maps) dont le contenu est stocké dans un fichier. Je m'explique :

La carte est assimilable à un tableau à deux dimensions dont la valeur d'une case est l'identifiant du morceau de carte à afficher.

Dans un fichier, il est donc stocké pour chaque endroit de la carte une ligne, une colonne et un identifiant.

L'identifiant est une chaine de type string.

Ensuite, grâce à la SDL, je veux l'afficher grâce à ce code :

            picture=IMG_Load(identifiant.c_str());        
            SDL_SetColorKey(picture, SDL_SRCCOLORKEY, SDL_MapRGB(picture->format, 84, 138, 150));
            SDL_BlitSurface(picture, NULL, screen, &position);

Le problème vient du fait que la compilation se passe correctement, mais lors de l'exécution, la fenêtre se ferme aussitôt.

En fait, l'identifiant est de type string comme je l'ai dit et ce que doit afficher IMG_Load() est de type const char*.

J'ai donc utilisé identifiant.c_str() pour obtenir un const char *.

L'identifiant est ici : ID_0001.

J'ai testé l'affichage grâce à fprintf() et comparé avec strcmp() l'identifiant que je récupérai grâce à identifiant.c_str() et les deux chaines comparées sont strictement identiques.

Mais ça ne fonctionne pas...

Si j'ai été assez clair et que vous avez la solution de mon problème, je vous remercierai de votre aide.

Grégory

2 réponses

SebLinck Messages postés 212 Date d'inscription mardi 17 mai 2005 Statut Membre Dernière intervention 23 juin 2011
17 févr. 2009 à 21:30
Si tu fait du C++ pourquoi ne pastiliser la classe string ?

Cordialement,
Sébastien.
0
lectpe Messages postés 162 Date d'inscription lundi 12 novembre 2007 Statut Membre Dernière intervention 17 juillet 2010 3
18 févr. 2009 à 12:31
Bonjour,


En fait, j'ai trouvé la solution :


il suffit effectivement d'utiliser la classe string et plus particulièrement la méthode strcmp car tous les identifiants sont définis et du coup, il suffit de comparer l'identifiant récupéré avec chacun des identifiants prédéfinis.


Merci de votre réponse.


Cordialement,


Grégory.
0