Partage
  • Partager sur Facebook
  • Partager sur Twitter

une sorte de sleep();

sleep entre l'affichage de chaque caractere

Sujet résolu
    28 décembre 2005 à 21:37:58

    Salut à tous les zéros et merci à m@teo et son équipe pour leur travail.

    Je connais rien en programation si ce n'est ce début de cours de c/c++ sur lequel je travaille avec le SDZ. :p

    Mon problème : j'aimerais que le texte que j'affiche s'affiche comme s'il était en train de s'écrire...

    un genre de :

    Citation : de moi...


    printf("b");
    sleep(20);
    printf("o");
    sleep(20);
    printf("n");
    sleep(20);
    printf("j");
    sleep(20);
    printf("o");
    sleep(20);
    printf("u");
    sleep(20);
    printf("r");



    Comment faire pour refaire le même effet en une seule fois si c'est possible (j'imagine que oui étant donné qu'un bon programeur est censé être un fénéant... :-° )

    Je vous remercie de vos réponses et bonne continuation ! ;)
    • Partager sur Facebook
    • Partager sur Twitter
      28 décembre 2005 à 21:42:44

      Salut, tu pourrais creer une fonctions avec un for...
      • Partager sur Facebook
      • Partager sur Twitter
        28 décembre 2005 à 21:44:53

        Tu peux créer une fonction.

        Tu envoi à la fonction une chaine de caractère, et tu la parcours en affichant chacun des caractères avec un intervalle entre les deux.

        Je galère encore un peu avec les tableaux de caractères, mais ta fonction pourrait ressembler à ça :

        void ecrire( char texte[], int taille)
        {

           for( int i = 0; i <= taille; i++ )
           {
              printf("%s", texte[i]);
              sleep("20");
           }

        }


        Je suis sûr a 90% que mon code ne va pas marcher, mais l'idée est là !
        • Partager sur Facebook
        • Partager sur Twitter
          28 décembre 2005 à 21:46:27

          Ah ouai et je mettrais mon message dans une chaîne de characters !
          Je pense que çà devrait se faire tout seul.
          Pourquoi n'y ai-je pas pensé tout seul??? :euh:

          Merci Lydriel !

          EDIT :
          et Benjitheone...


          dernier EDIT : pour ceux que çà intéresse voilà ce que çà donne.
          (je sais c'est pas grandchose mais je trouve que c'est plus jouli quand çà défile que quand çà s'affiche tout d'un coup et je suis sûr que d'autres veulent faire pareil alors si çà peut vous aider...)

          Bon c'est pour les nouveaux zéros comme moi hein... Les pros pas besoin de vous attarder là dessus... :p


          #include <stdio.h>
          #include <stdlib.h>
          void affichage_texte(char message[]);

          int main(int argc, char *argv[])
          {
              char communique[]={"Bienvenue sur le premier programme "
              "d'AlChimiK :\n           FELIX LE MINOU !!!\n\n"};
              affichage_texte(communique);
              sleep(150);
             
              strcpy(communique,"Le but va etre de blablabla...\n");
              affichage_texte(communique);
              sleep(80);
             
              system("PAUSE");   
              return 0;
          }

          void affichage_texte(char message[])
          {
              int i=0;
              while (i<strlen(message))
              {
              sleep(30);
              printf("%c", message[i]);
              i++;
              }
          }

          Bon ben voilà... Normalement y'a tout là...çà doit marcher...
          J'espère que çà servira à quelqu'un
          (genre les zéros comme moi qui sont trop impatients pour attendre la suite du cours et qui s'galèrent à essayer de comprendre des trucs qu'ils pensent simples alors que bon... finalement sans le cours c'est nettement moins simple... o_O )

          Allez rendez-vous en cours avec le professeur m@teo. :)
          • Partager sur Facebook
          • Partager sur Twitter
            30 décembre 2005 à 1:26:38

            OK ça marche mais je n'y comprends rien.. tu peux rebalancer ce même code mais commenté cette fois? pour que chaque ligne soit compréhensible par le plus débile d'entre nous (en gros pour moi quoi ^^ ). Merci d'avance
            • Partager sur Facebook
            • Partager sur Twitter
              30 décembre 2005 à 4:15:17

              Et avant qu'on dise blabla, c'est quoi la fonction semblable mais en C++ ?
              • Partager sur Facebook
              • Partager sur Twitter
                30 décembre 2005 à 5:05:16

                *fouille dans des vieux dossiers*

                Ah voilà :p
                #include <iostream>
                #include <windows.h>

                using namespace std;

                int main(void)
                {
                   
                while (1) {
                int t=0, i;
                char tex[1024];
                cout<<"Entrez du texte :\n\n\n\n";
                gets(tex);
                cout<<"\n\n\n";
                i = strlen(tex);
                while (t<=i) {
                      Sleep(170);
                      cout<<tex[t];
                      t++;
                      }
                    getchar();
                   }
                }
                • Partager sur Facebook
                • Partager sur Twitter
                  30 décembre 2005 à 5:45:21

                  Standard, sans Windows.h maintenant :-°
                  • Partager sur Facebook
                  • Partager sur Twitter
                    30 décembre 2005 à 9:40:10

                    Mais j'arrive pas a que le texte s'affiche moins vite.... j'ai changer le sleep mais nan
                    • Partager sur Facebook
                    • Partager sur Twitter
                      30 décembre 2005 à 11:34:10

                      le sleep s'exprime en milliseconde, tu n'as peut-être pas augmenter assez pour voir une différence à l'oeil nu :)
                      • Partager sur Facebook
                      • Partager sur Twitter
                        30 décembre 2005 à 12:57:50

                        Voila une fonction standard (enfin je pense :p ) mais elle n'est pas en milliseconde :
                        #include <iostream>
                        #include <time.h>

                        using namespace std;

                        void write_text(char text[],int second);

                        int main(int argc,char** argv) {
                                int t = 0;
                                char text[1024];
                                cout << "Entrez du texte :\t";
                                cin.getline(text,1023);
                                cout << "\n\t";
                               
                                write_text(text,1);

                                getchar();
                                return 0;
                        }

                        void write_text(char text[],int second) {
                                int countLetter = 0;
                                int timeNow = time(NULL);
                                while (countLetter <= strlen(text)) {
                                        if(time(NULL) - timeNow >= second) {
                                                timeNow = time(NULL);
                                                cout.put(text[countLetter]);
                                                countLetter++;
                                        }
                                }
                        }


                        PS : ddx39, c'est quoi ce gets() en C++ ^^ , il y a cin.get() ou cin.getline() pour prendre une chaîne de caractère
                        • Partager sur Facebook
                        • Partager sur Twitter
                          30 décembre 2005 à 13:27:08

                          En C (commenté) :

                          #include <stdio.h>
                          #include <stdlib.h>
                          // on signale la fonction :
                          void affichage_texte(char message[]);

                          int main(int argc, char *argv[])
                          {
                              // on déclare ET initialise une chaine de caracters :
                              char communique[]={"Bienvenue sur le premier programme "
                              "d'AlChimiK :\n           FELIX LE MINOU !!!\n\n"};

                              //appelle de la fonction pour afficher en mode matrix :
                              affichage_texte(communique);
                              sleep(150);//petite pause pour respirer
                             
                              /* là on redonne une nouvelle valeur à la chaine de caracters :
                              grace à strcpy(nomDeLaChaine,"valeur de la chaine&quot;) */

                              strcpy(communique,"Le but va etre de blablabla...\n");

                              affichage_texte(communique);//et re appel à la fonction...
                              sleep(80);//et re pause...
                             
                              system("PAUSE");   
                              return 0;
                          }

                          //la dite fonction :

                          void affichage_texte(char message[])
                          {
                              int i=0;
                              /*tant qu'on n'arrive pas au bout de la chaine :
                              grace à strlen(nomDeLaChaine) pour connaitre la longueur*/


                              while (i<strlen(message))
                              {
                              sleep(30);//pause avant affichage
                              printf("%c", message[i]);//affichage du caracter
                              i++;
                              }
                          }


                          voilà.
                          Et pour faire varier le temps de pause, faut pas y'aller de main morte ;) .

                          Bon sinon pour info moi j'ai fait çà pour apprendre mais je l'utilise pas pour mes programmes parceque je crains que çà pose des problemes par le suite...

                          • Partager sur Facebook
                          • Partager sur Twitter
                            30 décembre 2005 à 23:21:43

                            Citation


                            PS : ddx39, c'est quoi ce gets() en C++ ^^ , il y a cin.get() ou cin.getline() pour prendre une chaîne de caractère



                            C'est quoi la différence entre un cin.get() et un cin.getline() au juste ???
                            • Partager sur Facebook
                            • Partager sur Twitter
                              31 décembre 2005 à 0:48:12

                              Citation : ddx39

                              Citation


                              PS : ddx39, c'est quoi ce gets() en C++ ^^ , il y a cin.get() ou cin.getline() pour prendre une chaîne de caractère



                              C'est quoi la différence entre un cin.get() et un cin.getline() au juste ???


                              Yen a un qui prend la ligne entière, et lautre euh.. bah je sais pas, le flux entier -_- ?
                              • Partager sur Facebook
                              • Partager sur Twitter
                                31 décembre 2005 à 10:38:55

                                Y'a une petite difference : get() lis et prend le caractère '\n', tantdis que getline() le lis mais ne le prend pas et s'arrête juste avant ^^
                                • Partager sur Facebook
                                • Partager sur Twitter

                                une sorte de sleep();

                                × 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