Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- #include <stdio.h>
- #include <string.h>
- #include <time.h>
- int losowanie(unsigned long long dlugosc_stringa, const char slownik[]);
- int dlugosc_wyrazu_przecinek(const char slownik[], int wylosowany_indeks);
- void wczytanie_wyrazu(const char slownik[], int dlugosc_wyrazu, int wylosowany_indeks, char wyraz[]);
- void ukrywanie_wyrazu(char wyraz[], int size);
- void drukowanie_wyrazu(char wyraz[], int size);
- int zgadywanie_wyrazu(const char wyraz[], char pusty_wyraz[], int size, char symbol);
- int wczytywanie_liter(const char wyraz[], char pusty_wyraz[], int size, char lista_blednych_liter[], int ile_blednych);
- void drukowanie_szubienicy(int liczba_bledow);
- void drukowanie_listy_blednych(char wyraz[]);
- int sprawdz_czy_wpisany(const char pusty_wyraz[], char lista_blednych_liter[], int size, char litera);
- int main(){
- POWROT:
- srand(time(NULL));
- int licznik_bledow = 0, licznik_trafien = 0, czy_jeszcze_raz;
- const char slownik[] = "klawiatura,myszka,komputer,glosniki,monitor";
- char wylosowany_wyraz[30]={0}, pusty_wyraz[30] = {0}, lista_blednych_liter[30]={0};
- unsigned long long dlugosc_slownika = strlen(slownik);
- int wylosowany_indeks = losowanie(dlugosc_slownika, slownik);
- int dlugosc_wyrazu = dlugosc_wyrazu_przecinek(slownik, wylosowany_indeks);
- wczytanie_wyrazu(slownik, dlugosc_wyrazu, wylosowany_indeks, wylosowany_wyraz);
- ukrywanie_wyrazu(pusty_wyraz, dlugosc_wyrazu);
- while(licznik_bledow < 12 && licznik_trafien != dlugosc_wyrazu){
- drukowanie_wyrazu(pusty_wyraz, dlugosc_wyrazu);
- printf("Wpisz litere z alfabetu:");
- int check_wczytywanie = wczytywanie_liter(wylosowany_wyraz, pusty_wyraz, dlugosc_wyrazu, lista_blednych_liter, licznik_bledow);
- if(check_wczytywanie > 0){
- printf("Zgadles litere\n");
- licznik_trafien += check_wczytywanie;
- drukowanie_szubienicy(licznik_bledow);
- drukowanie_listy_blednych(lista_blednych_liter);
- continue;
- }
- else if(check_wczytywanie == 0){
- printf("Nie zgadles litery\n");
- licznik_bledow++;
- drukowanie_szubienicy(licznik_bledow);
- drukowanie_listy_blednych(lista_blednych_liter);
- continue;
- }
- else if(check_wczytywanie == -1){
- printf("Incorrect input\n");
- drukowanie_szubienicy(licznik_bledow);
- drukowanie_listy_blednych(lista_blednych_liter);
- continue;
- }
- else if(check_wczytywanie == -2){
- printf("Powtorka litery sprobuj inna\n");
- drukowanie_szubienicy(licznik_bledow);
- drukowanie_listy_blednych(lista_blednych_liter);
- continue;
- }
- }
- if(licznik_trafien == dlugosc_wyrazu){
- printf("Wygrales!\nTo twoj wyraz\n");
- drukowanie_wyrazu(wylosowany_wyraz, dlugosc_wyrazu);
- }
- else{
- printf("Przegrales!\nTo twoj wyraz\n");
- drukowanie_wyrazu(wylosowany_wyraz, dlugosc_wyrazu);
- }
- printf("Czy chcesz zagrac jeszcze raz? Wpisz 1 dla tak lub 0 dla nie\n");
- scanf("%d", &czy_jeszcze_raz);
- if(czy_jeszcze_raz){
- goto POWROT;
- }
- return 0;
- }
- int losowanie(unsigned long long dlugosc_stringa, const char slownik[]){
- int los = rand()%dlugosc_stringa;
- while (slownik[los] != ',' && los >= 0){
- los--;
- }
- return los;
- }
- int dlugosc_wyrazu_przecinek(const char slownik[], int wylosowany_indeks){
- int pomoc = wylosowany_indeks+1;
- while(slownik[pomoc] != ',' && slownik[pomoc] != '\0'){
- pomoc++;
- }
- return pomoc - wylosowany_indeks - 1;
- }
- void wczytanie_wyrazu(const char slownik[], int dlugosc_wyrazu, int wylosowany_indeks, char wyraz[]){
- for(int i = 0; i < dlugosc_wyrazu; i++){
- wyraz[i] = slownik[i+wylosowany_indeks+1];
- }
- }
- void ukrywanie_wyrazu(char wyraz[], int size){
- for(int i = 0; i < size; i++){
- wyraz[i] = '_';
- }
- }
- void drukowanie_wyrazu(char wyraz[], int size){
- printf("\n");
- for(int i = 0; i < size; i++){
- printf("%c ", wyraz[i]);
- }
- printf("\n");
- }
- void drukowanie_listy_blednych(char wyraz[]){
- int i = 0;
- while(wyraz[i] != 0){
- printf("%c ", wyraz[i]);
- i++;
- }
- printf("\n");
- }
- int zgadywanie_wyrazu(const char wyraz[], char pusty_wyraz[], int size, char symbol){
- if(symbol < 'a' || symbol > 'z'){
- return -1;
- }
- else{
- int zamiana = 0;
- for(int i = 0; i < size; i++){
- if(wyraz[i] == symbol){
- pusty_wyraz[i] = wyraz[i];
- zamiana++;
- }
- }
- if(!zamiana){
- return 0;
- }
- return zamiana;
- }
- }
- int wczytywanie_liter(const char wyraz[], char pusty_wyraz[], int size, char lista_blednych_liter[], int ile_blednych){
- char litera;
- int check = scanf(" %c", &litera);
- int c;
- while ((c = getchar()) != '\n' && c != EOF) { }
- int czy_jest_wpisany = sprawdz_czy_wpisany(pusty_wyraz, lista_blednych_liter, size, litera);
- if(czy_jest_wpisany){
- return -2;
- }
- int sprawdzanie_zgadywania = zgadywanie_wyrazu(wyraz, pusty_wyraz, size, litera);
- if(sprawdzanie_zgadywania == -1 || !check){
- return -1;
- }
- else if(sprawdzanie_zgadywania == 0){
- lista_blednych_liter[ile_blednych] = litera;
- return 0;
- }
- else{
- return sprawdzanie_zgadywania;
- }
- }
- int sprawdz_czy_wpisany(const char pusty_wyraz[], char lista_blednych_liter[], int size, char litera){
- int j = 0;
- for(int i = 0; i < size; i++){
- if(litera == pusty_wyraz[i]){
- return 1;
- }
- }
- while(lista_blednych_liter[j] != 0){
- if(litera == lista_blednych_liter[j]){
- return 1;
- }
- j++;
- }
- return 0;
- }
- void drukowanie_szubienicy(int liczba_bledow){
- if(liczba_bledow == 0){
- printf("\n");
- }
- else if(liczba_bledow == 1){
- printf(" _________\n");
- }
- else if(liczba_bledow == 2){
- printf(" _________\n");
- printf(" | |\n");
- }
- else if(liczba_bledow == 3){
- printf(" _________\n");
- printf(" | |\n");
- printf(" | |\n");
- }
- else if(liczba_bledow == 4){
- printf(" _________\n");
- printf(" | |\n");
- printf(" | |\n");
- printf(" | |\n");
- }
- else if(liczba_bledow == 5){
- printf(" _________\n");
- printf(" | |\n");
- printf(" | |\n");
- printf(" | |\n");
- printf(" | |\n");
- }
- else if(liczba_bledow == 6){
- printf(" _________\n");
- printf(" | |\n");
- printf(" | |\n");
- printf(" | |\n");
- printf(" | |\n");
- printf(" | |\n");
- }
- else if(liczba_bledow == 7){
- printf(" _________\n");
- printf(" | |\n");
- printf(" | |\n");
- printf(" | |\n");
- printf(" | |\n");
- printf(" | |\n");
- printf(" /|\\ /|\\\n");
- }
- else if(liczba_bledow == 8){
- printf(" _________\n");
- printf(" | |\n");
- printf(" | |\n");
- printf(" | |\n");
- printf(" | |\n");
- printf(" | |\n");
- printf(" /|\\ /|\\\n");
- printf("/ | \\ / | \\\n");
- }
- else if(liczba_bledow == 9){
- printf(" _________\n");
- printf(" | | |\n");
- printf(" | |\n");
- printf(" | |\n");
- printf(" | |\n");
- printf(" | |\n");
- printf(" /|\\ /|\\\n");
- printf("/ | \\ / | \\\n");
- }
- else if(liczba_bledow == 10){
- printf(" _________\n");
- printf(" | | |\n");
- printf(" | O |\n");
- printf(" | |\n");
- printf(" | |\n");
- printf(" | |\n");
- printf(" /|\\ /|\\\n");
- printf("/ | \\ / | \\\n");
- }
- else if(liczba_bledow == 11){
- printf(" _________\n");
- printf(" | | |\n");
- printf(" | O |\n");
- printf(" | /|\\ |\n");
- printf(" | |\n");
- printf(" | |\n");
- printf(" /|\\ /|\\\n");
- printf("/ | \\ / | \\\n");
- }
- else if(liczba_bledow == 12){
- printf(" _________\n");
- printf(" | | |\n");
- printf(" | O |\n");
- printf(" | /|\\ |\n");
- printf(" | | |\n");
- printf(" | / \\ |\n");
- printf(" /|\\ /|\\\n");
- printf("/ | \\ / | \\\n");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement