Partage
  • Partager sur Facebook
  • Partager sur Twitter

pour ma roulette

aidez moi !!! svp

    29 octobre 2006 à 21:52:31

    bonsoir !
    mon casino avance bien (cf. sujet : "mon black-jack fait 1074 ligne !!");

    mais voila j'ai commence la roulette et j'ai un blem :
    on choisi :
    -si on mise sur le nombre a trouve
    -sur le manque (de 1 a 18 )
    - sur la passe (de 19 a 36)
    -sur un nombre pair ou impair

    et donc pour le manque j'ai pense faire un tableau mais je suis pas sur
    et pour les nombres pair ou impair commencé a 1 et ajoute de 2 en 2 !
    merci
    roulette.c

    #include <stdio.h>
    #include <stdlib.h>
    #include "prototype.h"

    void purge3(void);

    long roulette()
    {
        long choixRoulette = 0, mise = 0, choixMise = 0, nbrEntrer = 0, nbrReel = 0;
        long MAX = 36, MIN = 1, pts = 20, ptsPerdu = 0;


        printf("Vous avez choisi : La roulette.\n\n\n"
               "Choissisez se que vous voulez faire ?\n\n"
               "1. Commencer le jeu.\n2. Regles.\n\n\n"
               "Votre choix est : ");
        purge3();
        scanf("%ld", &choixRoulette);
        printf("\n\n\n\n");

        switch(choixRoulette)
        {
            case 1:
            printf("Vous avez choisi : Commencer le jeu.\n\n\n"
                   "Appuyer sur une touche pour commencez le jeu.");
            purge3();
            getchar();
            system("CLS");
            // le jeu commence ici :
            printf("POINTS : 20.                                             MISE : ");
            scanf("%ld", &mise);

            while(mise > 20 || mise < 0) // si la mise est superieur au points, on lance la boucle
            {

                printf("\nVous avez entree une mise trop grande ou un nombre negatif !!\n"
                       "Recommencer !!\n\n\n"
                       "POINTS : %ld.                                             MISE : ", pts);
                scanf("%ld", &mise);
            }

            printf("\nComment voulez-vous miser ?\n\n\n"
                   "1. Miser sur un nombre.\n"
                   "2. Miser sur le Manque (de 1 a 18).\n"
                   "3. Miser sur la Passe (de 19 a 36).\n"
                   "4. Miser sur un nombre impair.\n"
                   "5. Miser sur un nombre pair.\n\n"
                   "Votre choix est : ");
            scanf("%ld", &choixMise);
            srand(time(NULL));


            switch(choixMise)
            {
                case 1:
                nbrReel = (rand() % (MAX - MIN + 1)) + MIN;
                printf("\nVous allez miser sur un nombre.\n"
                       "Ce nombre que vous misez est : ");
                scanf("%ld", &nbrEntrer);
                printf("\n\n");
                if(nbrEntrer == nbrReel)
                {
                    printf("Bravo !!! Vous avez gagne !!! Le nombre etait bien %ld.\n\n", nbrReel);
                }
                else
                {
                    printf("Vous avez perdu !!! Le nombre etait %ld.\n\n", nbrReel);
                    ptsPerdu = nbrEntrer * mise;
                    pts = pts - ptsPerdu;
                    if(pts < 0) // si les pts sont plus petit que 0 :
                    {
                        system("PAUSE");
                    }
                    else
                    {
                        printf("Vous avez perdu %ld points.\n\n", ptsPerdu);
                        printf("Il vous reste  %ld points.\n\n\n", pts);
                        system("PAUSE");
                    }
                }
                break;

            }
            break;

            case 2:
            printf("Vous avez choisi : Regles.\n\n\n"
                   "Vous commencez avec 20 points et vous quitter le jeu QUE si vous avez\n"
                   "100 pts. Vous devez trouve le nombre que l'ordinateur choisi entre 1\n"
                   "et 36 !!\n\n"
                   "Mais avant, vous avez le choix :\n"
                   "- Deviner le nombre.\n"
                   "- Deviner si c'est Manque (de 1 a 18) ou Passe (de 19 a 36).\n"
                   "- si le nombre est impair ou pair.\n\n"
                   "Appuyer sur une touche pour commencez le jeu.");
            purge3();
            getchar();
            return 0;
        }
    }

    void purge3(void)
    {
        int c = 0;
        while ((c = getchar()) != '\n' && c != EOF)
        {}
    }
    • Partager sur Facebook
    • Partager sur Twitter
      29 octobre 2006 à 22:17:38

      bonjour,

      Quel est ton problème ?
      Sinon , je crois qu'il manque une instruction break; juste après ta dernière condition .Là , je ne suis pas sûr mais ton premier appel de fonction :
      purge3();

      il sert à quoi ?

      Gronul91
      • Partager sur Facebook
      • Partager sur Twitter
        29 octobre 2006 à 22:35:34

        J'ai vu un purge(), un purge2(), et maintenant un purge3()... C'est quoi la différence entre ces fonctions ?
        • Partager sur Facebook
        • Partager sur Twitter
          30 octobre 2006 à 22:05:45

          Citation : remram44

          J'ai vu un purge(), un purge2(), et maintenant un purge3()... C'est quoi la différence entre ces fonctions ?



          bah codeBlock me dit qu'il y a une erreur sinon voici mon code :
          roulette.c

          #include <stdio.h>
          #include <stdlib.h>
          #include "prototype.h"

          void purge3(void);

          long roulette()
          {
              long choixRoulette = 0, mise = 0, choixMise = 0, nbrEntrer = 0, nbrReel = 0;
              long MAX = 36, MIN = 1, pts = 20, ptsPerdu = 0;


              printf("Vous avez choisi : La roulette.\n\n\n"
                     "Choissisez se que vous voulez faire ?\n\n"
                     "1. Commencer le jeu.\n2. Regles.\n\n\n"
                     "Votre choix est : ");
              purge3();
              scanf("%ld", &choixRoulette);
              printf("\n\n\n\n");

              switch(choixRoulette)
              {
                  case 1:
                  printf("Vous avez choisi : Commencer le jeu.\n\n\n"
                         "Appuyer sur une touche pour commencez le jeu.");
                  purge3();
                  getchar();
                  system("CLS");
                  // le jeu commence ici :
                  printf("POINTS : 20.                                             MISE : ");
                  scanf("%ld", &mise);

                  while(mise > 20 || mise < 0) // si la mise est superieur au points, on lance la boucle
                  {

                      printf("\nVous avez entree une mise trop grande ou un nombre negatif !!\n"
                             "Recommencer !!\n\n\n"
                             "POINTS : %ld.                                             MISE : ", pts);
                      scanf("%ld", &mise);
                  }

                  printf("\nComment voulez-vous miser ?\n\n\n"
                         "1. Miser sur un nombre.\n"
                         "2. Miser sur le Manque (de 1 a 18).\n"
                         "3. Miser sur la Passe (de 19 a 36).\n"
                         "4. Miser sur un nombre impair.\n"
                         "5. Miser sur un nombre pair.\n\n"
                         "Votre choix est : ");
                  scanf("%ld", &choixMise);
                  srand(time(NULL));


                  switch(choixMise)
                  {
                      case 1:
                      nbrReel = (rand() % (MAX - MIN + 1)) + MIN;
                      printf("\nVous allez miser sur un nombre.\n"
                             "Ce nombre que vous misez est : ");
                      scanf("%ld", &nbrEntrer);
                      printf("\n\n");
                      if(nbrEntrer == nbrReel)
                      {
                          printf("Bravo !!! Vous avez gagne !!! Le nombre etait bien %ld.\n\n", nbrReel);
                      }
                      else
                      {
                          printf("Vous avez perdu !!! Le nombre etait %ld.\n\n", nbrReel);
                          ptsPerdu = nbrEntrer * mise;
                          pts = pts - ptsPerdu;
                          if(pts < 0) // si les pts sont plus petit que 0 :
                          {
                              printf("Appuyer sur une touche pour continuer...");
                              purge3();
                              getchar();
                          }
                          else
                          {
                              printf("Vous avez perdu %ld points.\n\n", ptsPerdu);
                              printf("Il vous reste  %ld points.\n\n\n", pts);
                              system("PAUSE");
                          }
                      }
                      break;

                  }
                  break;

                  case 2:
                  printf("Vous avez choisi : Regles.\n\n\n"
                         "Vous commencez avec 20 points et vous quitter le jeu QUE si vous avez\n"
                         "100 pts. Vous devez trouve le nombre que l'ordinateur choisi entre 1\n"
                         "et 36 !!\n\n"
                         "Mais avant, vous avez le choix :\n"
                         "- Deviner le nombre.\n"
                         "- Deviner si c'est Manque (de 1 a 18) ou Passe (de 19 a 36).\n"
                         "- si le nombre est impair ou pair.\n\n"
                         "Appuyer sur une touche pour commencez le jeu.");
                  purge3();
                  getchar();
                  return 0;
              }
          }

          void purge3(void)
          {
              int c = 0;
              while ((c = getchar()) != '\n' && c != EOF)
              {}
          }


          merci de me repondre pour ma question (cf 1er message)
          • Partager sur Facebook
          • Partager sur Twitter
            30 octobre 2006 à 22:30:59

            Salut,

            Pourquoi un prototype se balade en plein milieu d'un .c alors que tu as un joli prototype.h ?

            Il manque un break à case 2: du switch(choixRoulette) !
            Et pourquoi tu as un switch avec une seule case ?

            Voilà :D
            • Partager sur Facebook
            • Partager sur Twitter
              30 octobre 2006 à 23:12:11

              parce que je n'ai pas finis !!
              et voila !!
              • Partager sur Facebook
              • Partager sur Twitter
                30 octobre 2006 à 23:30:39

                pour savoir si un nombre est pair ou non facilement : nb % 2 (nb modulo 2)
                si = 0 alors il est pair
                si = 1 alors il est impair

                Ensuite, je ne connais pas le principe de la roulette, si tu voulais bien expliquer un peu mieux ...
                • Partager sur Facebook
                • Partager sur Twitter
                  30 octobre 2006 à 23:32:37

                  et bien on choisi si on mise sur un nmobre ou sur le manque, la passe ou sur un nombre pair ou impair (cf regles).
                  • Partager sur Facebook
                  • Partager sur Twitter
                    31 octobre 2006 à 1:24:36

                    Montre nous les règles avant de te lancer dans un explication pas très explicite.

                    Ton code est horrible a lire.
                    L'utilisation que tu fais des switches est un peu brouillon quand même, je trouve horrible d'imbriquer des conditions dans les switches. N'oublie surtout pas les break pour chaque case.
                    J'aurais plutôt fais un switch de menu puis des boucles pour chaque choix et on sortirait d'une de ces boucles si ce qu'on souhaite a été réaliser.
                    Une boucle de jeu engloberais le tout.

                    Avant de te lancer dans tes projets je pense qu'il faudrait peut-être faire des exercices ....

                    Kurapix
                    • Partager sur Facebook
                    • Partager sur Twitter
                      31 octobre 2006 à 9:12:40

                      Citation : Master Thor

                      pour savoir si un nombre est pair ou non facilement : nb % 2 (nb modulo 2)
                      si = 0 alors il est pair
                      si = 1 alors il est impair

                      Ensuite, je ne connais pas le principe de la roulette, si tu voulais bien expliquer un peu mieux ...



                      Oui, il existe également une autre méthode, qui consiste à vérifier l'êtat du bit de poids de faible. Pour ceci, il suffit d'appliquer l'oppérateur & (ET bit à bit). Un exemple, prenons un nombre :

                      00101011

                      Pour vérifier si le bit de poids faible (celui qui a la puissance 0) est à 1, il suffit de _masquer_ tous les autres :

                      00101011
                      & 00000001
                      = 00000001 = 1 -> le nombre est donc impair

                      Ainsi, il est possible de produire le code suivant :


                      #include <stdio.h>

                      static int estPair(int nombre)
                      {
                              return !(nombre & 1);
                      }

                      int main(void)
                      {
                              printf("%d\n", estPair(30));
                              printf("%d\n", estPair(51));
                              return 0;
                      }



                      Affiche


                      1
                      0


                      (Ceci est juste une paranthèse :p)
                      • Partager sur Facebook
                      • Partager sur Twitter
                        31 octobre 2006 à 12:47:00

                        Ah oui ça marche aussi octal :)

                        Donc si j'ai bien compris, l'ordi choisi un nombre entre 1 et 36.
                        Si ce nombre est compris entre 1 et 18 c'est un manque, et si il est compris entre 19 et 36 c'est une passe.
                        Là je ne vois pas vraiment le problème ...
                        if (nb >= 19)
                        {
                            // manque
                        }
                        else
                        {
                            // passe
                        }

                        Enfin je ne pense pas que ce soit le problème, ça parait trop simple ....
                        Et si tu mise sur un nombre, c'est la même chose.
                        Et pour le choix d'un nombre pair ou impair, tu as deux solutions juste au dessus.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          3 novembre 2006 à 13:55:13

                          Citation : Master Thor

                          pour savoir si un nombre est pair ou non facilement : nb % 2 (nb modulo 2)
                          si = 0 alors il est pair
                          si = 1 alors il est impair

                          Ensuite, je ne connais pas le principe de la roulette, si tu voulais bien expliquer un peu mieux ...



                          bah j'ai essayer mais j'y arrive pas !!

                          roulette.c

                          #include <stdio.h>
                          #include <stdlib.h>
                          #include <time.h>
                          #include "prototype.h"

                          void purge3(void);

                          long roulette()
                          {
                              long choixRoulette = 0, mise = 0, choixMise = 0, nbrEntrer = 0, nbrReel = 0;
                              long MAX = 36, MIN = 1, pts = 20, ptsPerdu = 0, ptsGagner = 0, nbrPair = 0;
                              long nbrImpair = 1;


                              printf("Vous avez choisi : La roulette.\n\n\n"
                                     "Choissisez se que vous voulez faire ?\n\n"
                                     "1. Commencer le jeu.\n2. Regles.\n\n\n"
                                     "Votre choix est : ");
                              purge3();
                              scanf("%ld", &choixRoulette);
                              printf("\n\n\n\n");

                              switch(choixRoulette)
                              {
                                  case 1:
                                  printf("Vous avez choisi : Commencer le jeu.\n\n\n"
                                         "Appuyer sur une touche pour commencez le jeu.");
                                  purge3();
                                  getchar();
                                  system("CLS");
                                  // le jeu commence ici :
                                  printf("POINTS : 20.                                             MISE : ");
                                  scanf("%ld", &mise);

                                  while(mise > 20 || mise < 0) // si la mise est superieur au points, on lance la boucle
                                  {

                                      printf("\nVous avez entree une mise trop grande ou un nombre negatif !!\n"
                                             "Recommencer !!\n\n\n"
                                             "POINTS : %ld.                                             MISE : ", pts);
                                      scanf("%ld", &mise);
                                  }

                                  printf("\nComment voulez-vous miser ?\n\n\n"
                                         "1. Miser sur un nombre.\n"
                                         "2. Miser sur le Manque (de 1 a 18).\n"
                                         "3. Miser sur la Passe (de 19 a 36).\n"
                                         "4. Miser sur un nombre impair.\n"
                                         "5. Miser sur un nombre pair.\n\n"
                                         "Votre choix est : ");
                                  scanf("%ld", &choixMise);
                                  srand(time(NULL));


                                  switch(choixMise)
                                  {
                                      case 1:
                                      nbrReel = (rand() % (MAX - MIN + 1)) + MIN;
                                      printf("\nVous allez miser sur un nombre.\n"
                                             "Ce nombre que vous misez est : ");
                                      scanf("%ld", &nbrEntrer);
                                      printf("\n\n");
                                      if(nbrEntrer == nbrReel)
                                      {
                                          ptsGagner = nbrEntrer * mise;
                                          pts = pts - ptsGagner;
                                          printf("Bravo !!! Vous avez gagne !!!\n"
                                                 "Vous avez gagne %ld points."
                                                 "Vous avez maintenant %ld points."
                                                 "Le nombre etait bien %ld.\n\n", ptsGagner, pts, nbrReel);
                                      }
                                      else
                                      {
                                          printf("Vous avez perdu !!! Le nombre etait %ld.\n\n", nbrReel);
                                          ptsPerdu = nbrEntrer * mise;
                                          pts = pts - ptsPerdu;
                                          if(pts < 0) // si les pts sont plus petit que 0 :
                                          {
                                              printf("Appuyer sur une touche pour continuer...");
                                              purge3();
                                              getchar();
                                          }
                                          else
                                          {
                                              printf("Vous avez perdu %ld points.\n\n", ptsPerdu);
                                              printf("Il vous reste  %ld points.\n\n\n", pts);
                                              system("PAUSE");
                                          }
                                      }
                                      break;

                                      case 2:
                                      nbrReel = (rand() % (MAX - MIN + 1)) + MIN;
                                      printf("\nVous allez miser sur le manque.\n\n");
                                      ptsPerdu = nbrEntrer * mise;
                                      pts = pts - ptsPerdu;

                                      if(nbrReel > 18)
                                      {
                                          printf("Vous avez perdu !!! Le nombre etait %ld.\n\n", nbrReel);
                                          ptsPerdu = nbrEntrer * mise;
                                          pts = pts - ptsPerdu;
                                          if(pts < 0) // si les pts sont plus petit que 0 :
                                          {
                                              printf("Appuyer sur une touche pour continuer...");
                                              purge3();
                                              getchar();
                                          }
                                          else
                                          {
                                              printf("Vous avez perdu %ld points.\n\n", ptsPerdu);
                                              printf("Il vous reste  %ld points.\n\n\n", pts);
                                              system("PAUSE");
                                          }
                                      }
                                      else
                                      {
                                          ptsGagner = nbrEntrer * mise;
                                          pts = pts - ptsGagner;
                                          printf("Bravo !!! Vous avez gagne !!!\n"
                                                 "Vous avez gagne %ld points."
                                                 "Vous avez maintenant %ld points."
                                                 "Le nombre etait bien %ld.\n\n", ptsGagner, pts, nbrReel);
                                      }
                                      break;

                                      case 3:
                                      nbrReel = (rand() % (MAX - MIN + 1)) + MIN;
                                      printf("\nVous allez miser sur la passe.\n\n");
                                      ptsPerdu = nbrEntrer * mise;
                                      pts = pts - ptsPerdu;

                                      if(nbrReel < 19)
                                      {
                                          printf("Vous avez perdu !!! Le nombre etait %ld.\n\n", nbrReel);
                                          ptsPerdu = nbrEntrer * mise;
                                          pts = pts - ptsPerdu;
                                          if(pts < 0) // si les pts sont plus petit que 0 :
                                          {
                                              printf("Appuyer sur une touche pour continuer...");
                                              purge3();
                                              getchar();
                                          }
                                          else
                                          {
                                              printf("Vous avez perdu %ld points.\n\n", ptsPerdu);
                                              printf("Il vous reste  %ld points.\n\n\n", pts);
                                              system("PAUSE");
                                          }
                                      }
                                      else
                                      {
                                          ptsGagner = nbrEntrer * mise;
                                          pts = pts - ptsGagner;
                                          printf("Bravo !!! Vous avez gagne !!!\n"
                                                 "Vous avez gagne %ld points."
                                                 "Vous avez maintenant %ld points."
                                                 "Le nombre etait bien %ld.\n\n", ptsGagner, pts, nbrReel);
                                      }
                                      break;

                                      case 4:
                                      nbrReel = (rand() % (MAX - MIN + 1)) + MIN;
                                      printf("\nVous allez miser sur un nombre Impair.\n\n");
                                      printf("Entrer le nombre IMPAIR que vous voulez miser : ");
                                      purge3();
                                      scanf("%ld", &nbrEntrer);
                                      printf("\n\n\n");
                                      nbrReel%2;
                                      if(1)
                                      {
                                          printf("Impair");
                                      }
                                      else if(0)
                                      {
                                          printf("pair");
                                      }
                                      break;
                                  }
                                  break;

                                  case 2:
                                  printf("Vous avez choisi : Regles.\n\n\n"
                                         "Vous commencez avec 20 points et vous quitter le jeu QUE si vous avez\n"
                                         "100 pts. Vous devez trouve le nombre que l'ordinateur choisi entre 1\n"
                                         "et 36 !!\n\n"
                                         "Mais avant, vous avez le choix :\n"
                                         "- Deviner le nombre.\n"
                                         "- Deviner si c'est Manque (de 1 a 18) ou Passe (de 19 a 36).\n"
                                         "- si le nombre est impair ou pair.\n\n"
                                         "Appuyer sur une touche pour commencez le jeu.");
                                  purge3();
                                  getchar();
                                  return 0;
                                  break;
                              }
                          }

                          void purge3(void)
                          {
                              int c = 0;
                              while ((c = getchar()) != '\n' && c != EOF)
                              {}
                          }

                          merci
                          • Partager sur Facebook
                          • Partager sur Twitter
                            3 novembre 2006 à 13:58:21

                            Euh


                            nbrReel%2;
                                        if(1)
                                        {
                                            printf("Impair");
                                        }
                                        else if(0)
                                        {
                                            printf("pair");
                                        }


                            qu'est ce donc que ceci ? Relis toi car là ton problème est évident, je te laisse réfléchir. De plus, pourquoi as tu un purge1, purge2, purge3, un seul ne suffit pas ?
                            • Partager sur Facebook
                            • Partager sur Twitter
                              3 novembre 2006 à 14:03:35

                              pour purge : code block signale une erreur
                              et pour le code : ouai je sais 0 = faux et 1 = vrai
                              donc c'est pour ca que ca affiche toujours le "impair"
                              merci
                              ps: donc master thor comment voulait -tu dire ca ??
                              • Partager sur Facebook
                              • Partager sur Twitter
                                3 novembre 2006 à 14:06:38

                                Citation : kudo2

                                pour purge : code block signale une erreur
                                et pour le code : ouai je sais 0 = faux et 1 = vrai
                                donc c'est pour ca que ca affiche toujours le "impair"
                                merci
                                ps: donc master thor comment voulait -tu dire ca ??



                                Non, tu n'as pas compris son algorithme. pour purge, quelle est l'erreur ?


                                #include <stdio.h>

                                int estPair(int nombre)
                                {
                                    return (nombre % 2 == 0 ? 1 : 0 );
                                }

                                int main(void)
                                {
                                     printf("%d\n", estPair(30));
                                     printf("%d\n", estPair(51));
                                     return 0;
                                }



                                Ceci devrait te satisfaire.
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  3 novembre 2006 à 14:08:19

                                  ok là tu utilise les ternaires
                                  merci
                                  ps: pour purge :voici l'erreur(c'est surement de ma pare )

                                  Project : Console application
                                  Compiler : GNU GCC Compiler (called directly)
                                  Directory : C:\Documents and Settings\vincent\Mes documents\CodeBlocs, IDE\jeux\casino v1.0\
                                  --------------------------------------------------------------------------------
                                  Switching to target: default
                                  Compiling: jeux.c
                                  Compiling: machineSous.c
                                  Compiling: main.c
                                  Compiling: roulette.c
                                  Compiling: black_jack.c
                                  Linking console executable: C:\Documents and Settings\vincent\Mes documents\CodeBlocs, IDE\jeux\casino v1.0\casino v1.0.exe
                                  .objs\roulette.o:roulette.c:(.text+0x515): multiple definition of `purge'
                                  .objs\machineSous.o:machineSous.c:(.text+0xcc2): first defined here
                                  collect2: ld returned 1 exit status
                                  Process terminated with status 1 (0 minutes, 1 seconds)
                                  0 errors, 0 warnings

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    3 novembre 2006 à 14:10:17

                                    Citation : kudo2

                                    ok là tu utilise les ternaires
                                    merci



                                    Oui mais j'aurais très bien pu écrire ça


                                    int estPair(int nombre)
                                    {
                                        if (nombre % 2 == 0)
                                        {
                                            return 1;
                                        }
                                        else
                                        {
                                            return 0;
                                        }
                                    }


                                    Ou plus compact


                                    int estPair(int nombre)
                                    {
                                        return !(nombre & 1);
                                    }
                                    • Partager sur Facebook
                                    • Partager sur Twitter

                                    pour ma roulette

                                    × 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