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
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 (' ');
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
@++
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.
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
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.
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("*"); } }
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...
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(); return0; }
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?? )
Re-édit: Je les ai tous testé, aucun caractère d'échappement ne marche
× 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.
If you'd like to join us, read "How do we work at OpenClassrooms"! :)