SFML problème de sprites

Résolu
pop70 Messages postés 181 Date d'inscription mardi 6 avril 2010 Statut Membre Dernière intervention 7 janvier 2012 - 18 déc. 2010 à 18:26
pop70 Messages postés 181 Date d'inscription mardi 6 avril 2010 Statut Membre Dernière intervention 7 janvier 2012 - 18 déc. 2010 à 18:38
Bonsoir tout le monde, j'ai un problème avec la bibliothèque SFML :
Je veux afficher des surfaces de 50px*50px tout les 50px (normal quoi).

Le fonctionnement :

J'ai un tableau du type int cMap[150-1][130-1], qui contient des chiffres.
En fonction du chiffre dans le tableau j'affiche une image.


Voici le morceau de code qui semble poser problème :

     for (int i = 0; i < (150 - 1); i++)
        {
                for (int j = 0; j < (130 - 1); j++)
                {
                    switch (cMap[i][j])
                    {
                        case 0:
                        SpriteCourant.SetImage (imgTerre);
                        break;
                        case 1:
                        SpriteCourant.SetImage (imgHerbe);
                        break;
                        case 2:
                        SpriteCourant.SetImage (imgPave);
                        break;
                        case 3:
                        SpriteCourant.SetImage (imgFontaine);
                        break;
                        case 4:
                        SpriteCourant.SetImage (imgPosteMaintenance);
                        break;
                        case 5:
                        SpriteCourant.SetImage (imgMaison);
                        break;

                        default:
                        SpriteCourant.SetImage (imgVide);
                        break;
                    }

                    SpriteCourant.SetPosition(i * tc, j*tc);

                    App.Draw(SpriteCourant);
                }
        }


Après quelques "calculs", ce code me parait bon, mais dans la fenetre, au lieu d'avoir des surfaces collées les unes aux autres, j'ai UN pixel entre chaque surface !

Et si je veux l'enlever je dois remplacer :
            SpriteCourant.SetPosition(i * tc, j*tc);

par :
                SpriteCourant.SetPosition(i * tc - i, j*tc - j);


Ce qui en plus de compliquer la tâche d'une manière conséquente.... Ne fonctionne pas ! Cette fois mes surfaces se chevauchent d'UN pixel.

Bref je ne vois pas ce qui pose problème





Pop70

1 réponse

pop70 Messages postés 181 Date d'inscription mardi 6 avril 2010 Statut Membre Dernière intervention 7 janvier 2012 10
18 déc. 2010 à 18:38
Désolé, j'ai posé la question trop vite. Sur ce forum : http://www.sfml-dev.org/forum-fr/viewtopic.php?t=3123&highlight=espace+sprite la question avait déjà été posée. Pour ceux qui ont le même problème, il faut mettre son_image.SetSmooth (false);

Voila voila ...


Pop70
3
Rejoignez-nous