Partage
  • Partager sur Facebook
  • Partager sur Twitter

boucle en do...while

marche pas du premier coup !

Sujet résolu
    31 décembre 2005 à 8:44:35

    bonjour (ou bonsoir),

    voilà, j'ai commencé un jeu "papier, cailloux, ciseaux" avec une boucle qui refait à chaque fois le menu tant qu'on écrit pas le nom d'un niveau existant, regardez plutôt :

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>

    char menu()
    {
        char facile[7] = "facile";
            char moyenne[8] = "moyenne";
            char elevee[7] = "elevee";
            char reponse[15];

            do
            {
                     system("CLS");
                     printf("Les niveau de difficulte sont : (le 1er objet bat le 2eme, le 2eme bas le 3eme, etc...)\n");
                     printf("- facile : papier, cailloux et ciseaux,\n");
                     printf("- moyenne : papier, cailloux, eclair, eau et ciseaux,\n");
                     printf("- elevee : papier, cailloux, vent, eclair, eau, feu et ciseaux,\n");
                     printf("Vous avez choisi le niveau de difficulte ");
                     gets (reponse);

                     if (strcmp (facile,reponse) != 0 && strcmp (moyenne,reponse) != 0 && strcmp (elevee,reponse) != 0)
                     {
                                        printf("\nVotre choix est invalide, vous devez recommencer ! (appuyez sur 'Entree')\n\n");
                                            getchar();
             }

            } while (strcmp (facile,reponse) != 0 && strcmp (moyenne,reponse) != 0 && strcmp (elevee,reponse) != 0);

            if (strcmp (facile,reponse) == 0)
            {
                                    return 1;
            }

            else if (strcmp (moyenne,reponse) == 0)
            {
                                    return 2;
            }

            else if (strcmp (elevee,reponse) == 0)
            {
                                    return 3;
            }
    }

    long chronometre(long duree, long fin_decompte)
    {
             while (duree > fin_decompte)
             {
                       printf("%ld,", duree);
                       sleep(1000);
                       duree--;
         }
         
         printf("... c'est parti !");
    }

    int main(int argc, char *argv[])
    {
            if (menu() == 1)
            {
                                    printf("\nVous etes pret a defier l'ordinateur en niveau facile ?\n\n");
                                    sleep(3000);
                                    chronometre(3, 0);
            }

            else if (menu() == 2)
            {
                               printf("\nAttention ! C'est pas du gateau de battre l'ordinateur en niveau moyen !\n\n");
                               sleep(3000);
                                    chronometre(3, 0);
            }

            else if (menu() == 3)
            {
                                    printf("\nJe vous souhaite bonne chance, car battre l'ordinateur en difficulte elevee est un exploit !\n\n");
                                    sleep(4000);
                                    chronometre(3, 0);
            }

            getchar();
            return 0;
    }


    le problème vient de la fonction menu() à mon avis, car quand j'execute le programme et que je tape "facile", ça marche, mais quand je tape "moyenne", ça ne marche pas du premier coup et je suis obligé de retaper, enfin avec "elevee" c'est pareil que pour "moyenne" sauf avec une fois en plus !!!

    pouvez-vous m'expliquer d'où vient l'erreur s.v.p. ?

    @+
    • Partager sur Facebook
    • Partager sur Twitter
      31 décembre 2005 à 10:03:39

      Salut,

      en fait, ton probleme vient de main je pense
      t'as ecrit :

      if ( menu() == 1)
      .../* instructions 1 */
      if ( menu() == 2)
      .../* instructions 2 */
      if ( menu() == 3)
      .../* instructions 3 */

      c'est à dire que tu fais la premiere fois menu() et si c'est égal à 1 alors instructions 1

      sinon on refait menu() et si menu == 2 alors instruction 2

      sinon on refait encore menu () et ...

      utilise switch je pense
      • Partager sur Facebook
      • Partager sur Twitter
        31 décembre 2005 à 10:09:30

        je vais essayer, je te dis si ça marche !

        EDIT : merci beaucoup ça marche super !
        • Partager sur Facebook
        • Partager sur Twitter

        boucle en do...while

        × 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