Guest User

Untitled

a guest
Jun 23rd, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 11.60 KB | None | 0 0
  1. /************************************************************/
  2. /*              FLETA MACAVILCA Luis                        */
  3. /*              Groupe 2101                                 */
  4. /*              Dossier 1 : MASTERMIND                      */
  5. /************************************************************/
  6.  
  7.  
  8. #include <stdio.h>
  9. #include <stdlib.h>
  10. #include <time.h>
  11. #include <ctype.h>
  12.  
  13. void accueil ();    /*fonction de Bienvenue*/
  14. int menu (); /*Le menu*/
  15. void init_couleur (char *,int couleur_juste_max); /*fonction pour genere la combinaison de coulaur*/
  16. void utili (char *,int couleur_juste_max);  /*fonction pour que l'utilisateur entre ses couleurs*/
  17. void affich_utili (char *,int couleur_juste_max);   /*fonction pour afficher la combinaison entree*/
  18. int compa (char *,char *,int couleur_juste_max);    /*fonction pour compater les deux vecteurs (secrete et celle entree)*/
  19. int regles ();  /*les regles du jeu*/
  20. int perso_couleur ();   /*fonction pour definir le nombre couleur pr la combinaison*/
  21. int perso_poss ();      /*fonction pour definir les possibilitee */
  22.  
  23. int main()
  24. {
  25.     char code[4],tentative[4];
  26.     int rep=1,choix,nbr_poss=0,nbr_poss_max,couleur_juste_max,num_ten=0,i,couleur_juste=0;
  27.  
  28.     srand(time(NULL));
  29.     accueil();
  30.     while (rep==1)
  31.     {
  32.         choix=menu ();
  33.         switch(choix)
  34.         {
  35.             case 1: system("cls");
  36.  
  37.                     couleur_juste_max=4;
  38.                     nbr_poss_max=10;
  39.  
  40.                     init_couleur (&code[0],couleur_juste_max);
  41.  
  42.                     /**Juste pour tester, affiche le code couleur**/
  43.                     /*for(i=0;i<couleur_juste_max;i++)
  44.                     {
  45.                         printf("%c",code[i]);
  46.                     } */
  47.  
  48.                     printf("\nVous avez 10 essais\n");
  49.                     while (nbr_poss<nbr_poss_max && couleur_juste<couleur_juste_max)
  50.                     {
  51.                         num_ten++;
  52.  
  53.                         printf("\nTentative (%d sur 10)\n",num_ten);
  54.                         utili (&tentative[0],couleur_juste_max);
  55.  
  56.                         system("cls");
  57.                         affich_utili (&tentative[0],couleur_juste_max);
  58.                         printf("\n\n");
  59.                         couleur_juste=compa (&tentative[0],&code[0],couleur_juste_max);
  60.                         nbr_poss++;
  61.                     }
  62.  
  63.                     if (couleur_juste==4)
  64.                     {
  65.                         printf("\n\t\tBRAVO ! Vous Avez trouver la bonne combinaison ! YES!\n\n\n");
  66.                     }
  67.  
  68.                     if (nbr_poss==10)
  69.                     {
  70.                         printf("\n\t\t\tDommage ! Vous avez perdu !");
  71.                         printf("\n\t\t\tLes couleurs secretes etaient : \n\t\t\t\t");
  72.                         for(i=0;i<4;i++)
  73.                         {
  74.                             printf("(%c)",code[i]);
  75.                         }
  76.                         printf("\n\n\n");
  77.                     }
  78.                     rep=0;
  79.                     break;
  80.  
  81.             case 2: system("cls");
  82.                     couleur_juste_max=perso_couleur ();
  83.                     nbr_poss_max=perso_poss ();
  84.  
  85.                     init_couleur (&code[0],couleur_juste_max);
  86.                     /**Juste pr tester, affiche le code couleur**/
  87.                     /*for(i=0;i<couleur_juste_max;i++)
  88.                     {
  89.                         printf("%c",code[i]);
  90.                     } */
  91.  
  92.                     printf("\nVous avez %d essais\n",nbr_poss_max);
  93.                     while (nbr_poss<nbr_poss_max&&couleur_juste<couleur_juste_max)
  94.                     {
  95.                         num_ten++;
  96.                         printf("\nTentative (%d sur %d)\n",num_ten,nbr_poss_max);
  97.                         utili (&tentative[0],couleur_juste_max);
  98.                         system("cls");
  99.                         affich_utili (&tentative[0],couleur_juste_max);
  100.                         printf("\n\n");
  101.                         couleur_juste=compa (&tentative[0],&code[0],couleur_juste_max);
  102.                         nbr_poss++;
  103.                     }
  104.  
  105.                     if (couleur_juste==couleur_juste_max)
  106.                     {
  107.                         printf("\n\t\tBRAVO ! Vous Avez trouver la bonne combinaison ! YES!\n\n\n");
  108.                     }
  109.  
  110.                     if (nbr_poss==nbr_poss_max)
  111.                     {
  112.                         printf("\n\t\t\tDommage ! Vous avez perdu !");
  113.                         printf("\n\t\t\tLes couleurs secretes etaient : \n\t\t\t\t");
  114.                         for(i=0;i<couleur_juste_max;i++)
  115.                         {
  116.                             printf("(%c)",code[i]);
  117.                         }
  118.                         printf("\n\n\n");
  119.                     }
  120.                     rep=0;
  121.                     break;
  122.  
  123.             case 3: rep=0;
  124.                     rep=regles ();
  125.                     break;
  126.  
  127.             case 4: return 0;
  128.                     rep=0;
  129.                     break;
  130.  
  131.             default:printf("Mauvais choix\n\n");
  132.                     rep=1;
  133.  
  134.         }
  135.  
  136.     }
  137.  
  138.  
  139.     return 0;
  140. }
  141.  
  142. void accueil ()
  143. {
  144.     char enter;
  145.  
  146.     printf("\n\n\n\n\n");
  147.     printf("\t    ------------------------------------------------------\n");
  148.     printf("\t\t\t    Projet 1 : Mastermind\n\n");
  149.     printf("\t\t\t    FLETA MACAVILCA\n\n");
  150.     printf("\t\t\t    LUIS\n\n");
  151.     printf("\t\t\t    2101\n\n");
  152.     printf("\t\t\t    Info Gestion 2011-2012\n\n");
  153.     printf("\t    ------------------------------------------------------\n");
  154.     printf("\n\n\n\nENTER pour continuer");
  155.  
  156.     fflush(stdin);
  157.     do
  158.     {
  159.         enter=getchar();
  160.         system("cls");
  161.  
  162.     }while(enter != '\n');
  163.  
  164. }
  165.  
  166. int menu ()
  167. {
  168.     int choix;
  169.     system("cls");
  170.     printf("\t\t*****************************************\n");
  171.     printf("\t\t|\t\tMASTERMIND\t\t|\n");
  172.     printf("\t\t*****************************************\n");
  173.     printf("\n\n");
  174.     printf("\n\t\t-----------------------------------------\n");
  175.     printf("\t\t|\t\t   MENU\t\t\t|");
  176.     printf("\n\t\t-----------------------------------------\n");
  177.     printf("\t\t|\t   1-jouer\t\t\t|\n");
  178.     printf("\t\t|\t   2-Personnaliser le jeu\t|\n");
  179.     printf("\t\t|\t   3-Les Regles\t\t\t|\n");
  180.     printf("\t\t|\t   4-Quitter\t\t\t|\n");
  181.     printf("\t\t-----------------------------------------\n");
  182.     printf("\n\n");
  183.     printf("\t\tVotre choix:");
  184.     scanf("%d",&choix);
  185.     fflush(stdin);
  186.     return choix;
  187. }
  188.  
  189. int regles ()
  190. {
  191.     int rep;
  192.     char quit;
  193.     do
  194.     {
  195.         system("cls");
  196.         printf("*****************************************************************************\n");
  197.         printf("*\tRegle du jeu:\t\t\t\t\t\t\t    *\n");
  198.         printf("*\t-------------\t\t\t\t\t\t\t    *\n");
  199.         printf("*\t-L'ordinateur va generer une combinaison de 4 couleurs distinctes   *\n*\t (combinaison secrete).\t\t\t\t\t\t    *\n");
  200.         printf("*\t-L'utilisateur devra entrer 4 couleurs parmis les 6 autorisees      *\n*\t une par une afin de trouver la combinaison secrete.\t\t    *\n");
  201.         printf("*\t R:Rouge  B:Bleu  V:vert  J:Jaune  N:Noir  O:Orange                 *\n");
  202.         printf("*\t-L'ordinateur vous affichera le nombre de couleur correctement      *\n*\t placee ou les couleurs qui y figure mais mal placee\t\t    *\n");
  203.         printf("*\t-Vous aurez 10 chances pour trouver les bonnes couleurs.            *\n");
  204.         printf("*\t                                                                    *\n");
  205.         printf("*\t Q pour revenir au menu                                             *\n");
  206.         printf("*****************************************************************************\n");
  207.         scanf("%c",&quit);
  208.         fflush(stdin);
  209.         quit=toupper(quit);
  210.     }while (quit!='Q');
  211.     if (quit=='Q')
  212.     {
  213.         rep=1;
  214.     }
  215.     return rep;
  216. }
  217.  
  218. int perso_couleur ()
  219. {
  220.     int nbr_couleur;
  221.     do
  222.     {
  223.         printf("\nVous voulez une combinaison de combien de couleur (entre 3 et 6): \n");
  224.         scanf("%d",&nbr_couleur);
  225.     }while (nbr_couleur<3 || nbr_couleur>6);
  226.     return nbr_couleur;
  227. }
  228.  
  229. int perso_poss ()
  230. {
  231.     int nbr_poss;
  232.     do
  233.     {
  234.         printf("\nVous voulez combien de possibilite? (entre 2 et 20)\n");
  235.         scanf("%d",&nbr_poss);
  236.     }while (nbr_poss<2 || nbr_poss>20);
  237.     return nbr_poss;
  238. }
  239.  
  240.  
  241. void init_couleur (char *code,int couleur_juste_max)
  242. {
  243.     int i, j,co, lettreRepet;
  244.  
  245.     for(i=0;i<couleur_juste_max;i++)
  246.     {
  247.  
  248.         do
  249.         {
  250.             lettreRepet=0;
  251.             co=rand()%(5-0+1)+0;
  252.             switch (co)
  253.             {
  254.                 case 0: code[i]='R';
  255.                         break;
  256.                 case 1: code[i]='B';
  257.                         break;
  258.                 case 2: code[i]='V';
  259.                         break;
  260.                 case 3: code[i]='J';
  261.                         break;
  262.                 case 4: code[i]='N';
  263.                         break;
  264.                 case 5: code[i]='O';
  265.                         break;
  266.                 default: ;
  267.            }
  268.  
  269.             for(j=0;j<i;j++)
  270.             {
  271.                 if(code[i]==code[j])
  272.                 {
  273.                     lettreRepet=1;
  274.                 }
  275.             }
  276.  
  277.         }while(lettreRepet==1);
  278.     }
  279.  
  280.  
  281. }
  282.  
  283. void utili (char *tentative,int couleur_juste_max)
  284. {
  285.     int i,j,pos_coul,lettreRepet;
  286.     printf("\n----------------------------------------------------------------\n");
  287.     printf("Les couleurs:  R:Rouge  B:Bleu  V:vert  J:Jaune  N:Noir  O:Orange");
  288.     printf("\n----------------------------------------------------------------\n\n");
  289.     for(i=0;i<couleur_juste_max;i++)
  290.     {
  291.         do
  292.         {
  293.             pos_coul=i+1;
  294.  
  295.             do
  296.             {
  297.                 lettreRepet=0;
  298.                 printf("Entrez la couleur de votre choix (Couleur %d/%d):",pos_coul,couleur_juste_max);
  299.                 fflush(stdin);
  300.                 tentative[i]=getchar();
  301.                 tentative[i]=toupper(tentative[i]);
  302.  
  303.             }while(tentative[i] != 'R' && tentative[i] != 'B' && tentative[i] != 'V' && tentative[i] != 'J' && tentative[i] != 'N' && tentative[i] != 'O' );
  304.  
  305.  
  306.             for(j=0;j<i;j++)  /*Verifie si ce que l'utilisateur a entré n'est pas deja dans le vecteur. */
  307.             {
  308.                 if(tentative[i]== tentative[j])
  309.                 {
  310.                     lettreRepet=1;
  311.                 }
  312.             }
  313.  
  314.         }while(lettreRepet==1);
  315.     }
  316.  
  317. }
  318.  
  319. void affich_utili (char *tentative,int couleur_juste_max)
  320. {
  321.     int i;
  322.     printf("\t\t\t    *** Vos couleurs ***\n");
  323.     printf("\t\t\t\t");
  324.     for(i=0;i<couleur_juste_max;i++)
  325.     {
  326.         printf("(%c)",tentative[i]);
  327.     }
  328. }
  329.  
  330. int compa (char *tentative,char *code,int couleur_juste_max)
  331. {
  332.     int i,j,couleur_juste = 0, couleur_mauvais =0;
  333.     for(i=0;i<couleur_juste_max;i++)
  334.     {
  335.         for(j=0;j<couleur_juste_max;j++)
  336.         {
  337.             if(tentative[i]==code[j] && i==j)
  338.             {
  339.                 couleur_juste++;
  340.                 j=couleur_juste_max;
  341.             }
  342.             else
  343.             {
  344.                 if(tentative[i]==code[j] && i!=j)
  345.                 {
  346.                     couleur_mauvais++;
  347.                 }
  348.                 else
  349.                 {
  350.                 }
  351.             }
  352.  
  353.         }
  354.  
  355.     }
  356.     printf("\t\t    vous avez %d couleurs au bon endroit\n", couleur_juste);
  357.     printf("\t\t    vous avez %d couleurs au mauvais endroit\n", couleur_mauvais);
  358.     printf("\n\t*****************************************************************\n");
  359.  
  360.     return couleur_juste;
  361. }
Add Comment
Please, Sign In to add comment