Mon jeu en C ne s'arrête s'arrete tout seul..

Résolu/Fermé
samghami Messages postés 61 Date d'inscription mercredi 21 mars 2012 Statut Membre Dernière intervention 2 mars 2016 - 22 mai 2012 à 19:05
samghami Messages postés 61 Date d'inscription mercredi 21 mars 2012 Statut Membre Dernière intervention 2 mars 2016 - 22 mai 2012 à 22:03
Bonjour, mon programme s'eteint automatiquement meme via la fonction
getchar();


Voici ma portion de code:
case 2: {
       int nombreMystere = 0, nombreEntre = 0, compteur = 0, Ncompteur = 10;
    const int MAX = 500, MIN = 1;
    //génération du nombre aléatoire

    srand(time(NULL));
    nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
    /*La boucle du programme. Elle se repete tant que l'utilisateur
    na pas trouvée le nombre mystere */
    //on explique la difficulté:
    printf("Vous avez choisie la difficulte Moyen! Le nombre est compris entre 1 et 500\n");
    do {

    //On demande le nombre
    printf("Quel est le nombre ? ");
    scanf("%d", &nombreEntre);
    compteur = compteur + 1;
    Ncompteur = Ncompteur - 1;

if (Ncompteur > 0)
{
    //on compare le nombre entrée avec le nombre mystere
    if (nombreMystere > nombreEntre)
        printf("C'est plus que %d !\n\n", nombreEntre);
    else if (nombreMystere < nombreEntre)
        printf("C'est moin que %d ! \n\n", nombreEntre);
    else
         printf("Bravo vous avez trouve le nombre mystere qui etais %d !!! \n\n Le nombre a ete trouve en %d coups", nombreMystere, compteur);

    }
else
{
    printf("\nVous avez perdu!\n La reponse etait %d\n\n",nombreMystere);
}
    }
     while (nombreEntre != nombreMystere && Ncompteur > 0);
       getchar();}
       break;


Quelqu'un pourrais-t-il m'aider? je souhaite juste que si le nombre de chance (Variable Ncompteur) est epuisé, l'on affiche Vous avez perdu! etc... et qu'il face une pause, ensuite que l'utilisateur tape entrée et que le programme s'éteigne

2 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
22 mai 2012 à 19:53
Bonjour,

Mets tout simplement : system("pause"); avant le return 0; final.
0
samghami Messages postés 61 Date d'inscription mercredi 21 mars 2012 Statut Membre Dernière intervention 2 mars 2016 1
Modifié par samghami le 22/05/2012 à 20:11
Sur le Site du zero https://openclassrooms.com/fr/ Il est indiquer que ce n'est pas terrible d'utiliser système pause.

L'on ma conseiller d'utiliser "getchar()" pour faire une pause.
Tu en pense quoi?
Mais je vais tester la solution et je tiens infomer
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
22 mai 2012 à 21:33
Effectivement, c'est un sujet polémique.
A savoir :
La fonction system() est une horreur car très peu performante. Ceci dit en fin de programme pour appeler l'instruction "pause" c'est négligeable. system("pause") n'est pas portable : sur GNU/Linux, ça ne marchera pas (à moins de définir une instruction pause bien évidemment).
D'un autre côté, getchar() est portable. Mais il faut bien gérer le buffer clavier. Du moins, il faut s'assurer qu'il soit vide avant d'appeler getchar() pour faire une pause.

Que ce soit getchar() ou system(""), la solution n'est pas top puisqu'en console, l'instruction n'a pas lieu d'être.

Donc pour conclure, si tu te fiches de la portabilité et que tu ne maîtrises pas trop le C, utilise system("pause"); sinon utilise getchar(), mais dans ce cas n'oublie pas de vider le buffer clavier.
0
samghami Messages postés 61 Date d'inscription mercredi 21 mars 2012 Statut Membre Dernière intervention 2 mars 2016 1
22 mai 2012 à 21:36
Pour info je suis juste en train d'apprendre le C. Je connais assez de base pour faire le programme que j'ai fais ni plus ni moin. Je te remercie pour ton aide, j'essais ta solution et je te dis si cela fonctionne
0
samghami Messages postés 61 Date d'inscription mercredi 21 mars 2012 Statut Membre Dernière intervention 2 mars 2016 1
22 mai 2012 à 21:55
Cela fonctionne a la perfection, Merci
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
22 mai 2012 à 22:00
Bonne continuation et à bientôt sur CCM ;-)
0
samghami Messages postés 61 Date d'inscription mercredi 21 mars 2012 Statut Membre Dernière intervention 2 mars 2016 1
22 mai 2012 à 22:03
Merci est je pense que je reviendrai poser de nouvelle question de programmation.
Car l'entraide enrichi les connaissances et ça sa me plais :)
0