Partage
  • Partager sur Facebook
  • Partager sur Twitter

Fonction du jeu plus ou moin

Ma fonction/présentation est-elle correcte

    3 janvier 2008 à 2:48:47

    Bonjour ou plutôt bonsoir a tous le monde

    Voila je ne suis pas sur de moi par rapport à ma 2 eme fonction compareNombre, je voudrais avoir l'avis d'un programmeur un peu plus instruit car j'ai commencé la programmation depuis moin d'une semaine et j'aimerais avoir des conseils critique sur ma présentation ou autre.

    Merci d'avance pour votre aide.

    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. #include <time.h>
    4. long genereNombre(long MIN, long MAX)
    5. {
    6.     srand(time(NULL));
    7.     return (rand() % (MAX - MIN+1)) + MIN;
    8. }
    9. long compareNombre (long nombreEntre, long nombreMystere, long compteur, long continuer)
    10. {
    11.     while(continuer)
    12.     {
    13.          do
    14.         {
    15.             printf("\nEntre un nombre : ");
    16.             scanf("%ld", &nombreEntre);
    17.             compteur++;
    18.         if(nombreEntre<nombreMystere)
    19.             printf("C'est plus !\n\n");
    20.         else if (nombreEntre>nombreMystere)
    21.             printf("C'est moin !\n\n");
    22.         else
    23.         {
    24.             printf("\nBravo vous avez trouver le nombre Mystere qui etait %ld, le tout en %ld coups", nombreEntre, compteur);
    25.             printf("Vous avez maintenant le choix entre : \n\n");
    26.             printf("0 : Arreter et vous reposer les neurones\n");
    27.             printf("1 : Continuer a vous exercer, youpi !\n");
    28.             printf("ATTENTION toute erreur de frappe entraine une nouvelle partie !!\n\n");
    29.             printf("Alors que voulez vous faire ? ");
    30.             scanf("%ld", &continuer);
    31.         }
    32.         }while(nombreEntre =! nombreMystere);
    33.     }
    34. }
    35. int main (void)
    36. {
    37.         long choixMode = 0, choixNiveau = 0, continuer = 1, MIN = 1, MAX = 100, compteur = 0, nombreEntre = 0, nombreMystere = 0, nombreJ1 = 0, nombreJ2 = 0;
    38.                 printf("***********  Bienvenue dans le jeu du Nombre Mystere  ***********\n\n");
    39.                 printf("===Menu Joueur===\n\n");
    40.                 printf("1 : Mode 1 joueur\n");
    41.                 printf("2 : Mode 2 joueur\n\n");
    42.                 printf("Votre choix ? ");
    43.                 scanf("%ld", &choixMode);
    44.         if(choixMode == 1)
    45.         {
    46.             printf("\nVous avez choisis le mode 1 joueur, quel difficulter voulez vous prendre ?\n\n");
    47.             printf("1 ==> Niveau 1 : Entre 1 et 100\n");
    48.             printf("2 ==> Niveau 2 : Entre 1 et 1000\n");
    49.             printf("3 ==> Niveau 3 : Entre 1 et 10000\n");
    50.             printf("4 ==> Niveau 4 : Entre 1 et 100000\n");
    51.             printf("5 ==> Niveau 5 : Entre 1 et 1000000 pour les dur !\n\n");
    52.             printf("Que choisissais vous ? ");
    53.             scanf("%ld", &choixNiveau);
    54.                         switch(choixNiveau)
    55.                         {
    56.                         case 1:
    57.                                 MAX=100; break;
    58.                         case 2:
    59.                                 MAX=1000; break;
    60.                         case 3:
    61.                                 MAX=10000; break;
    62.             case 4:
    63.                                 MAX=100000; break;
    64.             case 5:
    65.                                 MAX=1000000; break;
    66.                         default:
    67.                                 printf("Veuillez choisir 1, 2, 3, 4 ou 5\n\n"); break;
    68.                         }
    69.             nombreMystere = genereNombre(MIN, MAX);
    70.             compteur = 0;
    71.             compareNombre(nombreEntre, nombreMystere, compteur, continuer);
    72.                 }
    73.                 else
    74.                 {
    75.                     printf("\nVous avez choisis le mode 2 joueur, pas de niveau de difficulte a vous de jouer !\n\n");
    76.                     while(continuer)
    77.                     {
    78.                         compteur = 0;
    79.                         printf("Joueur 1 veuillez entrer un nombre attention il doit rester secret : ");
    80.                 scanf("%ld", &nombreJ1);
    81.                 system("cls");
    82.                 printf("\nJoueur 2 c'est a vous, touver le nombre du joueur 1\n");
    83.                         do
    84.                         {
    85.                             printf("\nEntrer un nombre : ");
    86.                             scanf("%ld", &nombreJ2);
    87.                             compteur++;
    88.                             if(nombreJ2<nombreJ1)
    89.                         printf("C'est plus !\n");
    90.                     else if(nombreJ2>nombreJ1)
    91.                         printf("C'est moin !\n");
    92.                     else
    93.                     {
    94.                         printf("\nBravo vous avez trouver le nombre du joueur 1 qui etait %ld, le tout en %ld coups", nombreJ1, compteur);
    95.                         printf("Vous avez maintenant le choix entre : \n\n");
    96.                         printf("0 : Arreter et vous reposer les neurones\n");
    97.                         printf("1 : Continuer a vous amuser, youpi !\n");
    98.                         printf("ATTENTION toute erreur de frappe entraine une nouvelle partie !!\n\n");
    99.                         printf("Alors que voulez vous faire ? ");
    100.                         scanf("%ld", &continuer);
    101.                     }
    102.                         }while(nombreJ2 != nombreJ1);
    103.                     }
    104.                 }
    105.     return 0;
    106. }
    • Partager sur Facebook
    • Partager sur Twitter
      3 janvier 2008 à 3:43:50

      Est-ce que cela fonctionne? parce qu'en mettant srand(time(NULL)) dans ta fonction genereNombre, tu appelle srand plusieurs fois si tu fais plusieurs parties et il ne faut JAMAIS rappelé srand deux fois ou plus (mets le au début de main par exemple)

      Sinon, je ne suis pas beaucoup expérimenté mais je trouve ca bien pour quelques raisons:

      1. Tu ne mets pas tout dans la fonction main, ce qui démontre déja un peu plus d'organisation (bien sur tu pourrais mettre ca dans d'autres fichiers mais je ne suis pas sur que tu aie vu la programmation modulaire)

      2. Ta 2e fonction est bien fait et elle prend aussi compte si l'utilisateur entre autre chose que le choix demandé

      Bien sur c'est bien parti pour quelqu'un qui vient de débuter, mais continue a l'améliorer et toi-même tu vas t'améliorer!

      J'espere t'avoir aidé!
      • Partager sur Facebook
      • Partager sur Twitter
        3 janvier 2008 à 4:22:46

        Oui mon programme fonctionne trés bien mais le seul point louche pour moi c'est belle et bien le sran(time(NULL)) qui lors d'une (2eme, 3 eme...) partie ne pose pas de prolème alors qu'il devrait vu qu'il est appelé plusieurs fois ici donc j'aimerais quelques explications :)

        Merci pour tes points de vues sur mon programme mais je le perfectionne en avançant dans le cour de m@téo j'ai eu un soucis et mettant en pratique la programmation modulaire justement par rapport à ce fameux srand(time(NULL)) :( j'arrive au pointeur la et je crois qu'une bonne nuit de sommeil s'impose :)

        Si quelqu'un aurait l'aimabilité de m'éclairé sur ce fameux srand(time(NULL)) enfin surtout de me dire pourquoi cela fonctionne alors que je fais apelle à lui plusieurs fois.

        Bonne soirée à tous
        • Partager sur Facebook
        • Partager sur Twitter
          3 janvier 2008 à 11:06:18

          alors si j'ai bien compris, srand fait un calcul sur un nombre (seed) avec son parametre.
          puisque le parametre envoyé est ici time() (qui renvoie l'heure (différente à chaque appel)), le nombre que calcule srand est toujours différent.

          enfin je me suis référé à cette page
          • Partager sur Facebook
          • Partager sur Twitter
            3 janvier 2008 à 12:42:50

            Citation : OverCrash

            Si quelqu'un aurait l'aimabilité de m'éclairé sur ce fameux srand(time(NULL)) enfin surtout de me dire pourquoi cela fonctionne alors que je fais apelle à lui plusieurs fois.


            http://mapage.noos.fr/emdel/notes.htm#rand
            • Partager sur Facebook
            • Partager sur Twitter
            Music only !

            Fonction du jeu plus ou moin

            × 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