Advertisement
Guest User

123

a guest
Jan 18th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.51 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <math.h>
  5. #include <time.h>
  6. #include <locale.h>
  7. #include <string.h>
  8. #include <complex.h>
  9. #define rozmiar 4
  10.  
  11. void ustalanie_szyfru(char *szyfr);
  12. void wyswieltenie_szyfru(char *szyfr);
  13. void gra(char *szyfr, char *proba);
  14. void ustalenie_proby(char *proba);
  15.  
  16. int main(void)
  17. {
  18.     char szyfr[rozmiar];
  19.     char proba[rozmiar+1];
  20.     ustalanie_szyfru(szyfr);
  21.     //wyswieltenie_szyfru(szyfr);
  22.     printf("Z - zielony\n");
  23.     printf("N - niebieski\n");
  24.     printf("C - czerwony\n");
  25.     printf("F - fioletowy\n");
  26.     printf("B - brazowy\n");
  27.     ustalenie_proby(proba);
  28.     gra(szyfr, proba);
  29.    
  30.    
  31.     system("PAUSE");
  32. }
  33.  
  34. void ustalanie_szyfru(char* szyfr)
  35. {
  36.     int a;
  37.     int pozycja;
  38.     srand((unsigned int)time(NULL));
  39.     /*
  40.     0 - zielony (Z)
  41.     1 - niebieski (N)
  42.     2 - czerwony (C)
  43.     3 - fioletowy (F)
  44.     4 - brazowy  (B)
  45.     */
  46.     for (pozycja = 0; pozycja < rozmiar; pozycja++)
  47.     {
  48.         a = rand() % 5; //losowa liczba z zakresu od 0 do 4 - kazda liczba odpowiada kolorowi
  49.         if (a == 0)
  50.         {
  51.             szyfr[pozycja] = 'Z';
  52.         }
  53.         if (a == 1)
  54.         {
  55.             szyfr[pozycja] = 'N';
  56.         }
  57.         if (a == 2)
  58.         {
  59.             szyfr[pozycja] = 'C';
  60.         }
  61.         if (a == 3)
  62.         {
  63.             szyfr[pozycja] = 'F';
  64.         }
  65.         if (a == 4)
  66.         {
  67.             szyfr[pozycja] = 'B';
  68.         }
  69.  
  70.     }
  71. }
  72.  
  73. void wyswieltenie_szyfru(char *szyfr)
  74. {
  75.     int pozycja;
  76.     for (pozycja = 0; pozycja < rozmiar; pozycja++)
  77.     {
  78.         printf("%c", szyfr[pozycja]);
  79.     }
  80.     printf("\n");
  81. }
  82.  
  83. void gra(char *szyfr,char *proba)
  84. {
  85.     int wygrana = 0;
  86.     int spr = 0;
  87.     int licznik = 1;
  88.     int licznik_temp;
  89.     int pozycja_proba;
  90.     int pozycja_szyfr;
  91.     int podpowiedz_biala = 0;
  92.     int podpowiedz_czarna = 0;
  93.     char temp[rozmiar]; //tablica przechowujaca znaki ktorych nie mozemy liczyc w przypadku podpowiedzi bialej
  94.     int pozycja_temp = 0;
  95.    
  96.    
  97.     while (wygrana == 0)
  98.     {
  99.          
  100.         for (pozycja_proba = 0; pozycja_proba < rozmiar; pozycja_proba++)
  101.         {
  102.             for (pozycja_szyfr = 0; pozycja_szyfr < rozmiar; pozycja_szyfr++)
  103.             {
  104.                 if (proba[pozycja_proba] == szyfr[pozycja_szyfr] && pozycja_proba == pozycja_szyfr)
  105.                 {
  106.                     podpowiedz_czarna++;
  107.                     temp[pozycja_temp] = proba[pozycja_proba];
  108.                     pozycja_temp++;
  109.                 }
  110.             }
  111.         }
  112.  
  113.         for (pozycja_proba = 0; pozycja_proba < rozmiar; pozycja_proba++)
  114.         {
  115.             for (pozycja_szyfr = 0; pozycja_szyfr < rozmiar; pozycja_szyfr++)
  116.             {
  117.                 if (proba[pozycja_proba] == szyfr[pozycja_szyfr])
  118.                 {
  119.                     if (pozycja_proba == pozycja_szyfr)
  120.                     {
  121.                         break;
  122.                     }
  123.                     for (licznik_temp = 0; licznik_temp < pozycja_temp; licznik_temp++)
  124.                     {
  125.                         if (proba[pozycja_proba] == temp[licznik_temp])
  126.                         {
  127.                             spr = 1;
  128.                             break;
  129.                         }
  130.                     }
  131.  
  132.                     if (spr == 1)
  133.                     {
  134.                         spr = 0;
  135.                         break;
  136.                     }
  137.  
  138.                     podpowiedz_biala++;
  139.                     temp[pozycja_temp] = proba[pozycja_proba];
  140.                     pozycja_temp++;
  141.                 }
  142.             }
  143.         }
  144.         //czyscimy tablice temp
  145.         pozycja_temp--;
  146.         for (pozycja_temp; pozycja_temp > 0; pozycja_temp--)
  147.         {
  148.             temp[pozycja_temp] = '-';
  149.         }
  150.        
  151.        
  152.         //wyswietlenie podpowiedzi
  153.         printf("czarne: %d\n", podpowiedz_czarna);
  154.         printf("biale: %d\n", podpowiedz_biala);
  155.  
  156.         if (podpowiedz_czarna == rozmiar) //sprawdzam czy wygrana
  157.         {
  158.             wygrana = 1;
  159.         }
  160.         else // w innym wypadku ustalenie nowej proby
  161.         {
  162.             licznik++;
  163.             printf("\n");
  164.             ustalenie_proby(proba);
  165.         }
  166.         //wyzerowanie podpowiedzi
  167.         podpowiedz_biala = 0;
  168.         podpowiedz_czarna = 0;
  169.     }
  170.     printf("Wygrales w %d probach!\n", licznik);
  171. }
  172.  
  173. void ustalenie_proby(char *proba)
  174. {
  175.     printf("Podaj szyfr (4 litery):");
  176.     scanf("%s", proba);
  177. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement