Advertisement
wojcieszek

wisielec

Feb 25th, 2020
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 8.77 KB | None | 0 0
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <time.h>
  5.  
  6. int losowanie(unsigned long long dlugosc_stringa, const char slownik[]);
  7. int dlugosc_wyrazu_przecinek(const char slownik[], int wylosowany_indeks);
  8. void wczytanie_wyrazu(const char slownik[], int dlugosc_wyrazu, int wylosowany_indeks, char wyraz[]);
  9. void ukrywanie_wyrazu(char wyraz[], int size);
  10. void drukowanie_wyrazu(char wyraz[], int size);
  11. int zgadywanie_wyrazu(const char wyraz[], char pusty_wyraz[], int size, char symbol);
  12. int wczytywanie_liter(const char wyraz[], char pusty_wyraz[], int size, char lista_blednych_liter[], int ile_blednych);
  13. void drukowanie_szubienicy(int liczba_bledow);
  14. void drukowanie_listy_blednych(char wyraz[]);
  15. int sprawdz_czy_wpisany(const char pusty_wyraz[], char lista_blednych_liter[], int size, char litera);
  16.  
  17. int main(){
  18.     POWROT:
  19.     srand(time(NULL));
  20.     int licznik_bledow = 0, licznik_trafien = 0, czy_jeszcze_raz;
  21.     const char slownik[] = "klawiatura,myszka,komputer,glosniki,monitor";
  22.     char wylosowany_wyraz[30]={0}, pusty_wyraz[30] = {0}, lista_blednych_liter[30]={0};
  23.     unsigned long long dlugosc_slownika = strlen(slownik);
  24.     int wylosowany_indeks = losowanie(dlugosc_slownika, slownik);
  25.     int dlugosc_wyrazu = dlugosc_wyrazu_przecinek(slownik, wylosowany_indeks);
  26.     wczytanie_wyrazu(slownik, dlugosc_wyrazu, wylosowany_indeks, wylosowany_wyraz);
  27.     ukrywanie_wyrazu(pusty_wyraz, dlugosc_wyrazu);
  28.     while(licznik_bledow < 12 && licznik_trafien != dlugosc_wyrazu){
  29.         drukowanie_wyrazu(pusty_wyraz, dlugosc_wyrazu);
  30.         printf("Wpisz litere z alfabetu:");
  31.         int check_wczytywanie = wczytywanie_liter(wylosowany_wyraz, pusty_wyraz, dlugosc_wyrazu, lista_blednych_liter, licznik_bledow);
  32.         if(check_wczytywanie > 0){
  33.             printf("Zgadles litere\n");
  34.             licznik_trafien += check_wczytywanie;
  35.             drukowanie_szubienicy(licznik_bledow);
  36.             drukowanie_listy_blednych(lista_blednych_liter);
  37.             continue;
  38.         }
  39.         else if(check_wczytywanie == 0){
  40.             printf("Nie zgadles litery\n");
  41.             licznik_bledow++;
  42.             drukowanie_szubienicy(licznik_bledow);
  43.             drukowanie_listy_blednych(lista_blednych_liter);
  44.             continue;
  45.         }
  46.         else if(check_wczytywanie == -1){
  47.             printf("Incorrect input\n");
  48.             drukowanie_szubienicy(licznik_bledow);
  49.             drukowanie_listy_blednych(lista_blednych_liter);
  50.             continue;
  51.         }
  52.         else if(check_wczytywanie == -2){
  53.             printf("Powtorka litery sprobuj inna\n");
  54.             drukowanie_szubienicy(licznik_bledow);
  55.             drukowanie_listy_blednych(lista_blednych_liter);
  56.             continue;
  57.         }
  58.     }
  59.     if(licznik_trafien == dlugosc_wyrazu){
  60.         printf("Wygrales!\nTo twoj wyraz\n");
  61.         drukowanie_wyrazu(wylosowany_wyraz, dlugosc_wyrazu);
  62.     }
  63.     else{
  64.         printf("Przegrales!\nTo twoj wyraz\n");
  65.         drukowanie_wyrazu(wylosowany_wyraz, dlugosc_wyrazu);
  66.     }
  67.     printf("Czy chcesz zagrac jeszcze raz? Wpisz 1 dla tak lub 0 dla nie\n");
  68.     scanf("%d", &czy_jeszcze_raz);
  69.     if(czy_jeszcze_raz){
  70.         goto POWROT;
  71.     }
  72.     return  0;
  73. }
  74.  
  75. int losowanie(unsigned long long dlugosc_stringa, const char slownik[]){
  76.       int los = rand()%dlugosc_stringa;
  77.       while (slownik[los] != ',' && los >= 0){
  78.           los--;
  79.       }
  80.       return los;
  81. }
  82.  
  83. int dlugosc_wyrazu_przecinek(const char slownik[], int wylosowany_indeks){
  84.     int pomoc = wylosowany_indeks+1;
  85.     while(slownik[pomoc] != ',' && slownik[pomoc] != '\0'){
  86.         pomoc++;
  87.     }
  88.     return pomoc - wylosowany_indeks - 1;
  89. }
  90.  
  91. void wczytanie_wyrazu(const char slownik[], int dlugosc_wyrazu, int wylosowany_indeks, char wyraz[]){
  92.     for(int i = 0; i < dlugosc_wyrazu; i++){
  93.         wyraz[i] = slownik[i+wylosowany_indeks+1];
  94.     }
  95. }
  96.  
  97. void ukrywanie_wyrazu(char wyraz[], int size){
  98.     for(int i = 0; i < size; i++){
  99.         wyraz[i] = '_';
  100.     }
  101. }
  102.  
  103. void drukowanie_wyrazu(char wyraz[], int size){
  104.     printf("\n");
  105.     for(int i = 0; i < size; i++){
  106.         printf("%c ", wyraz[i]);
  107.     }
  108.     printf("\n");
  109. }
  110.  
  111. void drukowanie_listy_blednych(char wyraz[]){
  112.     int i = 0;
  113.     while(wyraz[i] != 0){
  114.         printf("%c ", wyraz[i]);
  115.         i++;
  116.     }
  117.     printf("\n");
  118. }
  119.  
  120. int zgadywanie_wyrazu(const char wyraz[], char pusty_wyraz[], int size, char symbol){
  121.     if(symbol < 'a' || symbol > 'z'){
  122.         return  -1;
  123.     }
  124.     else{
  125.         int zamiana = 0;
  126.         for(int i = 0; i < size; i++){
  127.             if(wyraz[i] == symbol){
  128.                 pusty_wyraz[i] = wyraz[i];
  129.                 zamiana++;
  130.             }
  131.         }
  132.         if(!zamiana){
  133.             return 0;
  134.         }
  135.         return zamiana;
  136.     }
  137. }
  138.  
  139. int wczytywanie_liter(const char wyraz[], char pusty_wyraz[], int size, char lista_blednych_liter[], int ile_blednych){
  140.     char litera;
  141.     int check = scanf(" %c", &litera);
  142.     int c;
  143.     while ((c = getchar()) != '\n' && c != EOF) { }
  144.     int czy_jest_wpisany = sprawdz_czy_wpisany(pusty_wyraz, lista_blednych_liter, size, litera);
  145.     if(czy_jest_wpisany){
  146.         return -2;
  147.     }
  148.     int sprawdzanie_zgadywania = zgadywanie_wyrazu(wyraz, pusty_wyraz, size, litera);
  149.     if(sprawdzanie_zgadywania == -1 || !check){
  150.         return -1;
  151.     }
  152.     else if(sprawdzanie_zgadywania == 0){
  153.         lista_blednych_liter[ile_blednych] = litera;
  154.         return 0;
  155.     }
  156.     else{
  157.         return sprawdzanie_zgadywania;
  158.     }
  159. }
  160.  
  161. int sprawdz_czy_wpisany(const char pusty_wyraz[], char lista_blednych_liter[], int size, char litera){
  162.     int j = 0;
  163.     for(int i = 0; i < size; i++){
  164.         if(litera == pusty_wyraz[i]){
  165.             return 1;
  166.         }
  167.     }
  168.     while(lista_blednych_liter[j] != 0){
  169.         if(litera == lista_blednych_liter[j]){
  170.             return 1;
  171.         }
  172.         j++;
  173.     }
  174.     return 0;
  175. }
  176.  
  177. void drukowanie_szubienicy(int liczba_bledow){
  178.     if(liczba_bledow == 0){
  179.         printf("\n");
  180.     }
  181.     else if(liczba_bledow == 1){
  182.         printf("  _________\n");
  183.     }
  184.     else if(liczba_bledow == 2){
  185.         printf("  _________\n");
  186.         printf("  |       |\n");
  187.     }
  188.     else if(liczba_bledow == 3){
  189.         printf("  _________\n");
  190.         printf("  |       |\n");
  191.         printf("  |       |\n");
  192.     }
  193.     else if(liczba_bledow == 4){
  194.         printf("  _________\n");
  195.         printf("  |       |\n");
  196.         printf("  |       |\n");
  197.         printf("  |       |\n");
  198.     }
  199.     else if(liczba_bledow == 5){
  200.         printf("  _________\n");
  201.         printf("  |       |\n");
  202.         printf("  |       |\n");
  203.         printf("  |       |\n");
  204.         printf("  |       |\n");
  205.     }
  206.     else if(liczba_bledow == 6){
  207.         printf("  _________\n");
  208.         printf("  |       |\n");
  209.         printf("  |       |\n");
  210.         printf("  |       |\n");
  211.         printf("  |       |\n");
  212.         printf("  |       |\n");
  213.     }
  214.     else if(liczba_bledow == 7){
  215.         printf("  _________\n");
  216.         printf("  |       |\n");
  217.         printf("  |       |\n");
  218.         printf("  |       |\n");
  219.         printf("  |       |\n");
  220.         printf("  |       |\n");
  221.         printf(" /|\\     /|\\\n");
  222.     }
  223.     else if(liczba_bledow == 8){
  224.         printf("  _________\n");
  225.         printf("  |       |\n");
  226.         printf("  |       |\n");
  227.         printf("  |       |\n");
  228.         printf("  |       |\n");
  229.         printf("  |       |\n");
  230.         printf(" /|\\     /|\\\n");
  231.         printf("/ | \\   / | \\\n");
  232.     }
  233.     else if(liczba_bledow == 9){
  234.         printf("  _________\n");
  235.         printf("  |   |   |\n");
  236.         printf("  |       |\n");
  237.         printf("  |       |\n");
  238.         printf("  |       |\n");
  239.         printf("  |       |\n");
  240.         printf(" /|\\     /|\\\n");
  241.         printf("/ | \\   / | \\\n");
  242.     }
  243.     else if(liczba_bledow == 10){
  244.         printf("  _________\n");
  245.         printf("  |   |   |\n");
  246.         printf("  |   O   |\n");
  247.         printf("  |       |\n");
  248.         printf("  |       |\n");
  249.         printf("  |       |\n");
  250.         printf(" /|\\     /|\\\n");
  251.         printf("/ | \\   / | \\\n");
  252.     }
  253.     else if(liczba_bledow == 11){
  254.         printf("  _________\n");
  255.         printf("  |   |   |\n");
  256.         printf("  |   O   |\n");
  257.         printf("  |  /|\\  |\n");
  258.         printf("  |       |\n");
  259.         printf("  |       |\n");
  260.         printf(" /|\\     /|\\\n");
  261.         printf("/ | \\   / | \\\n");
  262.     }
  263.     else if(liczba_bledow == 12){
  264.         printf("  _________\n");
  265.         printf("  |   |   |\n");
  266.         printf("  |   O   |\n");
  267.         printf("  |  /|\\  |\n");
  268.         printf("  |   |   |\n");
  269.         printf("  |  / \\  |\n");
  270.         printf(" /|\\     /|\\\n");
  271.         printf("/ | \\   / | \\\n");
  272.     }
  273. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement