Partage
  • Partager sur Facebook
  • Partager sur Twitter

Gérer l'affichage de chiffre en SDL

Sujet résolu
    23 mars 2018 à 17:07:24

    Bonjour.

    Je suis entrain de faire un projet en SDL 2, et j'ai quelques soucis sur l'affichage d'écriture.

    En effet, je souhaite pouvoir adapter l'espace entre chiffre en fonction d'un coefficient, mais je ne vois pas trop comment faire. J'ai écris cela pour afficher mes chiffres :

      char c [4] = {'1','2','3','4'};
      SDL_Surface * texte= TTF_RenderText_Blended(font,c , color); 
      env->text = SDL_CreateTextureFromSurface(ren, texte);
      texte = TTF_RenderText_Blended(font, "9", color); 
      SDL_FreeSurface(texte);
      TTF_CloseFont(font);
    

    Par la suite, je fais donc ceci pour les liés à ma fenetre :

      SDL_QueryTexture(env->text, NULL, NULL, &rect.w, &rect.h);
      rect.x = w/2 - rect.w/2; rect.y = h/2 - rect.h/2;
      SDL_RenderCopy(ren, env->text, NULL, &rect);



    Le problème est l'affichage, en effet j'obtiens celà :

    Vous me direz, ça s'affiche ! Oui, mais j'aimerai pouvoir gérer l'écart entre chaque chiffre. Mais je vois pas comment faire, et je n'ai pas envie de faire une variable SDL_Surface pour chaque chiffre >.>

    Ai-je loupé quelque chose dans la documentation qui peut m'aider ?

    Je vous remercie d'avance !

    -
    Edité par LePetitBen 23 mars 2018 à 17:51:19

    • Partager sur Facebook
    • Partager sur Twitter
      23 mars 2018 à 17:19:01

      Salut,

      TTF prend une chaîne de caractère, s'il n'y a pas d'espace dans la chaîne, il n'y en a pas dans le résultat.

      Si tu veux mettre un espace, commence par initialiser ta table normalement plutôt que caractère par caractère :

      char tab[10] = "coucou", ça va un peu plus vite. Je veux un espace ? char tab[10] = "cou cou".

      Bref, il faut formatter la chaîne avant de l'envoyer à TTF, pas d'autre moyen. Ou autant de texture que de lettres, mais ça tu l'avais déjà compris ^^ .

      Bonne continuation.

      -
      Edité par drx 23 mars 2018 à 17:20:30

      • Partager sur Facebook
      • Partager sur Twitter

      Bonhomme !! | Jeu de plateforme : Prototype.

        23 mars 2018 à 17:40:57

        Hello,

        En dehors de ce qu'a écrit drx, tu as de la chance que TTF_Render....() ne plante pas: c n'est pas terminé par un \0

        • Partager sur Facebook
        • Partager sur Twitter

        On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

          23 mars 2018 à 17:51:53

          Le fait de ne pas terminer par \0 fait planter la fonction ?
          • Partager sur Facebook
          • Partager sur Twitter
            23 mars 2018 à 17:53:52

            Oui, la fonction s'attend à recevoir un string au sens C du terme, donc une suite de caractères dont la fin est indiquée par un \0 (tout comme le font, par exemple, strcpy() et strlen() )

            -
            Edité par edgarjacobs 23 mars 2018 à 17:55:09

            • Partager sur Facebook
            • Partager sur Twitter

            On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

            Gérer l'affichage de chiffre en SDL

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown