Partage
  • Partager sur Facebook
  • Partager sur Twitter

Une commande pour cacher

Sujet résolu
    23 janvier 2006 à 18:39:21

    Bijour tout le monde,

    C'a y'est c'est décidé,je me lance dans le C.
    Grace a M@teo21 et ses tutos clairs et complets,j'arrive a programmer le jeu du nombre mystere.
    Le seul probleme,c'est que je suis en train de mettre un mode 2 joueurs.Apres que le premier joueur ai entré le nombre,c'est au second de le deviner.Mais le nombre du premier joueur reste visible

    je voudrai donc savoir si il existe une commande du genre "hide" qui permettrait de cacher un nombre apres un scanf

    Voila voilou :-°:-°

    Diki
    • Partager sur Facebook
    • Partager sur Twitter
      23 janvier 2006 à 18:58:55

      Perso, j'ai aussi fait un "Nombre Mystere" multijoueur et fait fais sa :

      printf("Joueur 1, le chiffre que le joueur 2 devra deviner :\n");
      scanf("%ld", nombreJoueur1);

      printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");

      printf("Joueur 2, devine le chiffre du joueur 1 :\n");
      scanf("%ld", nombreJoueur2);


      Voilà ! J'ai sauté pleins de lignes :lol:
      • Partager sur Facebook
      • Partager sur Twitter
        23 janvier 2006 à 19:05:00

        Merci mais j'y avais pensé o_Oo_O

        je voudrais faire une technique moins barbare :lol::lol:
        • Partager sur Facebook
        • Partager sur Twitter
          23 janvier 2006 à 19:12:43

          je pense que tu peux choisir la solution qui est non portable je pense :


          system("CLS");
          • Partager sur Facebook
          • Partager sur Twitter
            23 janvier 2006 à 19:13:36


            int i = 0;
              while (i<100) {
               printf("\n");
               i++;
              }
            • Partager sur Facebook
            • Partager sur Twitter
              23 janvier 2006 à 19:24:25

              C'est encore plus barbare ça ddx39 :p
              Faire un CLS est à mon avis le meilleur moyen qui s'offre à toi en effet, ça efface l'écran.
              • Partager sur Facebook
              • Partager sur Twitter

              If you'd like to join us, read "How do we work at OpenClassrooms"! :)

                23 janvier 2006 à 19:33:13

                Ahhhhh merci....ca marche!!!!
                • Partager sur Facebook
                • Partager sur Twitter
                  23 janvier 2006 à 22:15:25

                  Citation : M@teo21

                  Faire un CLS est à mon avis le meilleur moyen qui s'offre à toi en effet, ça efface l'écran.



                  Ui mais ça éfface TOUT l'écran :-° (ce qui n'est pas forcement désiré par l'utilisateur ^^ )
                  • Partager sur Facebook
                  • Partager sur Twitter
                    23 janvier 2006 à 22:20:15

                    pis system() c'est mal :lol: *SBLAFF*
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Anonyme
                      23 janvier 2006 à 22:26:54

                      En effet system c'est mal, quand aux lignes ça ne sera jamais vraiment efficace, il existe pleins de consoles différentes qui peuvent remonter bien au dessus de 100 lignes.

                      LA solution simple, rapide, efficace, pratique, bref, LA solution idéale :
                      char chaine[20];
                      int i;
                      int taille;
                      fgets (chaine, 20, stdin);
                      putchar ('\r');
                      taille = strlen (chaine);
                      for (i = 0; i < taille; i++)
                        putchar (' ');
                      • Partager sur Facebook
                      • Partager sur Twitter
                        23 janvier 2006 à 23:07:24

                        Citation : louisclem

                        char chaine[20];
                        int i;
                        int taille;
                        fgets (chaine, 20, stdin);
                        putchar ('\r');
                        taille = strlen (chaine);
                        for (i = 0; i < taille; i++)
                          putchar (' ');



                        Loooooool c'est exactement ce à quoi j'ai pensé :D sauf que j'avais la flemme d'inventer le code :p
                        • Partager sur Facebook
                        • Partager sur Twitter
                          24 janvier 2006 à 9:14:15

                          super sympa ce bout de code est magnifique mais ca serrait encore mieux de nous l expliquer pour que l on puisse le retapper au cas ou l on en aurait besoin une nouvelle fois...
                          Alors voila ma question: Ca fait quoi ce code?? Peut etre avec un petit peu de commentaires...
                          Merci d avance
                          @++
                          • Partager sur Facebook
                          • Partager sur Twitter
                            24 janvier 2006 à 12:29:42

                            Ce ne serait pas plutôt \b ? (backspace)
                            • Partager sur Facebook
                            • Partager sur Twitter
                              24 janvier 2006 à 12:43:05

                              Quelque chose me dit que ça ne marchera pas, j'essaierai de poster quelque chose ce soir quand je serai là ; en attendant, si ta console est l'entrée et la sortie, si l'utilisateur entre un \n ça va changer de ligne donc \r ne fera rien.
                              • Partager sur Facebook
                              • Partager sur Twitter
                              Anonyme
                                24 janvier 2006 à 18:39:49

                                Mouais.. chui caaaaassssééé :'(:'( j'ai voulu faire mon intéresant avec un super code mais comme souvent j'ai oublié de le tester....

                                Un \b pourquoi pas, je ne l'ai jamais utilisé mais ça marche peut être.

                                Et, petites explications : le principe du code était de revenir au début de la ligne avec le \r, puis de récupérer la taille de la chaîne entrée (avec strlen) et d'afficher autant d'espaces que la longueur de la chaîne donc l'effacer en fait. Mais comme le curseur aura sûrement fait une nouvelle ligne en tappant entrée, le retour au début de ligne ne fera rien et il effacera à coups d'espaces la ligne d'en dessous :(
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  24 janvier 2006 à 18:43:05

                                  En fait, ya pas de solution standard --- qui s'en serait douté --- à ce genre de choses ; sur un système qui a getch() par ex, on peut imaginer lire un caractère et tout de suite le remplacer par une étoile avec printf("\b*"). Sinon, il y a bien de façons de faire les choses de manière spécifique à un système, je suppose.
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    24 janvier 2006 à 22:42:15


                                    int getmdp()
                                    {
                                            int c = 0;
                                            int n = 0;

                                            do
                                            {
                                                    c = getch();    // attends la prochaine touche
                                                    if (c >= '0' && c <= '9')  // si c'est un chiffre uniquement
                                                    {
                                                            n *= 10;
                                                            n += (c-'0');      // mise a jour de n
                                                            printf("*");
                                                    }
                                            }

                                            while (c != 13);        // jusqu'a entrée (code 13)

                                            printf("\n");   // revient a la ligne
                                            return n;
                                    }



                                    cette fonction te permet de remplacer en temps réel ton nombre par des étoiles...
                                    tu la met à la place de ton scanf. (par contre tu change le type des variables en fonction de ce que t'as besoin...
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      25 janvier 2006 à 18:54:50

                                      Perso moi j'ai toujours utilisé le system("cls") qui est un peu plus long et occupe plus de lignes mais à l'avantage d'être simple.
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        25 janvier 2006 à 18:57:15

                                        rand() permet de générer des nombres de manières aléatoires il me semble donc ça peut etre une solution
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          27 janvier 2006 à 18:16:03

                                          Citation : Nesquik69

                                          Perso moi j'ai toujours utilisé le system("cls") qui est un peu plus long et occupe plus de lignes mais à l'avantage d'être simple.

                                          Mais un type avec un avatar de Tux qui dit ça...

                                          Bon, ``system("cls");, ca pue le steak, c'est net.

                                          Pour un cas du genre 'cacher un nombre après un scanf()', utilise juste ``printf("\b"); autant de fois qu'il le faut...
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                          Anonyme
                                            27 janvier 2006 à 18:46:46

                                            Citation : V1944

                                            Citation : Nesquik69

                                            Perso moi j'ai toujours utilisé le system("cls") qui est un peu plus long et occupe plus de lignes mais à l'avantage d'être simple.

                                            Mais un type avec un avatar de Tux qui dit ça...

                                            Bon, ``system("cls");, ca pue le steak, c'est net.

                                            Pour un cas du genre 'cacher un nombre après un scanf()', utilise juste ``printf("\b"); autant de fois qu'il le faut...


                                            Marche pas, j'ai testé ce code (tout simple)
                                            int main(int argc, char *argv[])
                                            {
                                                int test = 0;
                                                scanf("%d", &test);
                                                printf("\b\b");
                                                printf("Appuyez sur un touche pour arr\x88ter...");
                                                getchar();
                                                return 0;
                                            }
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                            Anonyme
                                              27 janvier 2006 à 18:56:04

                                              Ben testes, tu verras
                                              Edit: faudrait trouver un caractère permettant de retourner à la ligne précédante (comment ça tout le monde avait compris?? :euh: )
                                              Re-édit: Je les ai tous testé, aucun caractère d'échappement ne marche
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                30 janvier 2006 à 21:44:35

                                                Inclus #include <conio.h>

                                                et essaye cette commande:

                                                clrscr();

                                                C'est portable et moins barbare que les sauts de lignes...
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  30 janvier 2006 à 22:35:16

                                                  Citation : Uims

                                                  Inclus #include <conio.h>

                                                  et essaye cette commande:

                                                  clrscr();

                                                  C'est portable et moins barbare que les sauts de lignes...


                                                  C'est portable ptet entre Windows et Windows mais ce n'est pas standard en tout cas.
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    30 janvier 2006 à 22:56:01

                                                    de toute facon meme si ca l'efface a l'ecran on peut le recuperer avec la fleche du haut oO
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      30 janvier 2006 à 23:16:47

                                                      Logiquement non puisque ça l'afface ^^
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter

                                                      Une commande pour cacher

                                                      × 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