Partage
  • Partager sur Facebook
  • Partager sur Twitter

Du texte avec du temps

avec SDL_TTF

Sujet résolu
    20 août 2006 à 18:40:17

    Bonjour,
    J'ai essayer de faire un programme avec SDL_TTF qui m'affiche du texte, le contenu du texte est donné par argv[2], il n'est donc pas donné d'avance.
    Jusque la pas de probléme, mais sa se complique lorsque je veux y faire intervenir le temps, je veux donc faire s'afficher chaque caractére a une certaine intervale de temps, cela va donner l'impression que le texte est taper en temps réell.

    Par exemple a
    t=0 : e
    t=30: es
    t=60: ess
    t=90: essa

    etc...

    mais sa ne veut pas marcher. je ne sais plus comment faire.

    Merci d'avance de votre aide.

    Pour toute question ou réclamation merci de poster.
    • Partager sur Facebook
    • Partager sur Twitter
      20 août 2006 à 18:59:50

      Peut être qu'avec un code, ça serait plus utile.
      • Partager sur Facebook
      • Partager sur Twitter
        20 août 2006 à 19:46:37

        voila donc je fais une boucle pour chaqu'un de mes caractéres, a chaque fois que j'execute la boucle sa m'ajoute un caractére a ma variable phrase puis l'affiche aprés.
        "caractére" correspond aux nombre de caractéres de la phrase. et "phrase" et un nouveau tableau qui va stocker la phrase au fur et a mesure que les caractéres vont s'ajouter


        for(i=0; i<=caractere; i++)
                {
                sprintf(phrase, "%s %c", phrase, cmd[i]);
                SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
                texte = TTF_RenderText_Blended(police, phrase, couleurNoire);
                SDL_BlitSurface(texte, NULL, ecran, &position); /* Blit du texte par-dessus */
                SDL_Delay(300);
                }
        • Partager sur Facebook
        • Partager sur Twitter
          20 août 2006 à 19:53:34

          cmd c'est ce qui stoque la phrase au complet, donc la, je choisi le caractére que je veux avec cmd[i]
          • Partager sur Facebook
          • Partager sur Twitter
            20 août 2006 à 20:00:11

            Si le programme renvoie 1, faut que tu enlève le = à la condition du for.
            • Partager sur Facebook
            • Partager sur Twitter
              20 août 2006 à 20:14:43

              non non sa se compile bien, mais quand je le lance la fenêtre s'ouvre et se referme tout de suite, alors que j'ai bien mis la fonction pour empecher que cela ne se ferme, comme le disait mateo. mais la sa se referme
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                20 août 2006 à 20:34:40

                Il manque le SDL_FreeSurface correspondant au TTF_RenderText_Blended dans la boucle.
                Il manque aussi sans doute un SDL_Flip avant le SDL_Delay.
                Comment sont initialisés phrase et cmd ?
                Il faut que tu nous montres plus de code, la déclaration de toutes les variables utilisées dans ce morceau de code et toutes leurs altérations avant l'entrée dans cette boucle.

                Si la fenêtre se ferme brutalement malgré le fait que tu aies utilisé la fonction pause, c'est qu'il doit y avoir une erreur de segmentation cachée dans ton code.
                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  20 août 2006 à 21:21:02

                  Apparemment, tu ne sais pas utiliser sprintf, cherche de ce côté là car des appels a cette fonction tels que :
                  sprintf(phrase,NULL);
                  n'ont strictement aucun sens.

                  Rapidement :


                  char text[]="Ma phrase a affiché progressivement";
                  int i;
                  int textLength=strlen(text);
                  char buffer[256]={0};
                  for(i=0;i<textLength;i++){
                      sprintf(buffer,"%s%c",buffer,text[i]);
                      // Ou plus optimisé : buffer[i]=text[i];buffer[i+1]=0;
                      // Ici buffer vaudra successivement M, Ma, Ma , Ma p, etc...
                  }
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Du texte avec du temps

                  × 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