Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define TAM 100
- char para_maiuscula(char x);
- int eminuscula(char x);
- int eletra(char x);
- void fgets_sem_enter(char str[], int tam);
- void choose_word();
- void guess_letter();
- void letter_in_word(char x);
- void erro();
- void Dica(int tam, char x);
- int dica_completa(int tam);
- void dica_ini();
- void zera_dica();
- void Erros(int tam);
- void current_dica(int tam);
- void inicio();
- void instrucoes();
- char palavra[TAM];
- char dica[TAM];
- char digitados[TAM] = {0};
- char erros[TAM];
- int Erro = 0;
- int completa = 1;
- int indice_erros = 0;
- //Transforma char em maiuscula
- char para_maiuscula(char x)
- {
- int dif = 'a' - 'A';
- x -= dif;
- return x;
- }
- //Checa se um char é minusculo
- int eminuscula(char x)
- {
- if(x >= 'a' && x <= 'z')
- return 1;
- return 0;
- }
- //Checa se um char é letra
- int eletra(char x)
- {
- if ((x >= 'A' && x <= 'Z') || (x >= 'a' && x <= 'z'))
- return 1;
- return 0;
- }
- // Remove o enter digitado no fgets
- void fgets_sem_enter(char str[], int tam)
- {
- int i;
- fgets(str, tam, stdin);
- for(i = 0; i < tam ; i++)
- {
- if (str[i] == '\n')
- {
- str[i] = '\0';
- break;
- }
- }
- }
- //transforma dica em '_'
- void zera_dica()
- {
- int i;
- int tam = strlen(palavra);
- for(i = 0; i < tam; i++)
- {
- if (palavra[i] == ' ')
- dica[i] = ' ';
- else
- dica[i] = '_';
- }
- }
- //imprime a primeira dica
- void dica_ini()
- {
- int tam = strlen(palavra);
- int i;
- printf(" ");
- for(i = 0; i < tam; i++)
- {
- printf("%c ", dica[i]);
- }
- printf("\n");
- }
- //imprime a dica com a letra adivinhada substituida caso ela esteja certa, senao, imprime a dica da maneira que estava antes
- void Dica(int tam, char x)
- {
- int i;
- char opcao, enter;
- for(i = 0; i < tam; i++)
- {
- if ( x == palavra[i])
- {
- dica[i] = x;
- }
- }
- current_dica(tam);
- printf("\n\n");
- if (dica_completa(tam))
- {
- completa = 0;
- printf("\n\n PARABENS!1!!!1!um!1! VOCE GANHOU!\n\n");
- jogarnov:
- printf("\n\n DESEJA JOGAR NOVAMENTE?\n\n");
- printf(" S:SIM\n");
- printf(" N:NAO");
- scanf("%c%c", &opcao, &enter);
- switch(opcao)
- {
- case 's': case 'S':
- inicio();
- break;
- case 'n': case 'N':
- break;
- default:
- goto jogarnov;
- }
- }
- }
- //inprime o estado atual da dica
- void current_dica(int tam)
- {
- int i;
- printf(" ");
- for(i = 0; i < tam; i++)
- {
- printf("%c ", dica[i]);
- }
- }
- //Imprime os erros ja digitados
- void Erros(int tam)
- {
- int i;
- printf(" Erros: ");
- for(i = 0; i < tam; i++)
- {
- printf("%c - ", erros[i]);
- }
- printf("\n");
- }
- //verifica se a dica esta completa
- int dica_completa(int tam)
- {
- int i;
- for(i = 0; i < tam ; i++)
- {
- if (dica[i] == '_')
- return 0;
- }
- return 1;
- }
- //imprime o boneco de acordo com o numero de erros
- void erro()
- {
- if (Erro == 0)
- {
- printf("\n");
- printf(" ______________\n");
- printf(" | \\|\n");
- printf(" |\n");
- printf(" |\n");
- printf(" |\n");
- printf(" |\n");
- printf(" ______________|_\n");
- printf("\n\n");
- }
- else if (Erro == 1)
- {
- printf("\n");
- printf(" ______________\n");
- printf(" | \\|\n");
- printf(" O |\n");
- printf(" |\n");
- printf(" |\n");
- printf(" |\n");
- printf(" ______________|_\n");
- printf("\n\n");
- }
- else if (Erro == 2)
- {
- printf("\n");
- printf(" ______________\n");
- printf(" | \\|\n");
- printf(" O |\n");
- printf(" | |\n");
- printf(" |\n");
- printf(" |\n");
- printf(" ______________|_\n");
- printf("\n\n");
- }
- else if (Erro == 3)
- {
- printf("\n");
- printf(" ______________\n");
- printf(" | \\|\n");
- printf(" O |\n");
- printf(" /| |\n");
- printf(" |\n");
- printf(" |\n");
- printf(" ______________|_\n");
- printf("\n\n");
- }
- else if (Erro == 4)
- {
- printf("\n");
- printf(" ______________\n");
- printf(" | \\|\n");
- printf(" O |\n");
- printf(" /|\\ |\n");
- printf(" |\n");
- printf(" |\n");
- printf(" ______________|_\n");
- printf("\n\n");
- }
- else if (Erro == 5)
- {
- printf("\n");
- printf(" ______________\n");
- printf(" | \\|\n");
- printf(" O |\n");
- printf(" /|\\ |\n");
- printf(" / |\n");
- printf(" |\n");
- printf(" ______________|_\n");
- printf("\n\n");
- }
- else if (Erro == 6)
- {
- printf("\n");
- printf(" \n VOCE PERDEU \n");
- printf(" ______________\n");
- printf(" | \\|\n");
- printf(" O |\n");
- printf(" /|\\ |\n");
- printf(" / \\ |\n");
- printf(" |\n");
- printf(" ______________|_\n");
- printf("\n\n");
- }
- }
- //o usuario1 escolhe a palavra
- void choose_word()
- {
- system("cls");
- printf("\n JOGO DA FORCA\n");
- printf(" ===============\n");
- printf("\n Escolha uma palavra: ");
- fgets_sem_enter(palavra, TAM);
- strupr(palavra);
- system("cls");
- }
- // usuario2 tenta adivinhar uma letra da plavra
- void guess_letter()
- {
- int cont = 0;
- if (cont == 0)
- {
- zera_dica();
- printf("\n JOGO DA FORCA\n");
- printf(" ===============\n\n");
- Erros(indice_erros);
- erro();
- dica_ini();
- printf("\n");
- cont++;
- }
- char letra;
- char enter;
- int i = 0;
- int j, k;
- while(Erro <= 6 && completa)
- {
- printf("\n Adivinhe uma letra: ");
- scanf("%c%c", &letra, &enter);
- while (!(eletra(letra)))
- {
- printf("\n Por favor, digite uma LETRA: ");
- scanf("%c%c", &letra, &enter);
- }
- //converte a letra digitada para miuscula
- if (eminuscula(letra))
- {
- letra = para_maiuscula(letra);
- }
- if (i == 0)
- {
- digitados[i] = letra;
- i++;
- }
- else
- {
- loop:
- for(j = 0, k = 0; j < i; j++)
- {
- if (letra == digitados[j])
- k = 1;
- }
- if (k != 0)
- {
- printf("\n Voce ja digitou esta letra! Por favor, digite uma letra diferente: ");
- scanf("%c%c", &letra, &enter);
- while (!(eletra(letra)))
- {
- printf("\n Por favor, digite uma LETRA: ");
- scanf("%c%c", &letra, &enter);
- }
- if (eminuscula(letra))
- {
- letra = para_maiuscula(letra);
- }
- goto loop;
- }
- digitados[i] = letra;
- i++;
- }
- system("cls");
- printf("\n JOGO DA FORCA\n");
- printf(" ===============\n\n");
- letter_in_word(letra);
- }
- }
- void letter_in_word(char x)
- {
- int i, j = 0;
- int tam = strlen(palavra);
- for(i = 0; i < tam ; i++)
- {
- if (x == palavra[i])
- {
- j++;
- Erros(indice_erros);
- erro();
- Dica(tam, x);
- break;
- }
- }
- if ( j == 0 )
- {
- erros[indice_erros] = x;
- indice_erros++;
- Erros(indice_erros);
- Erro++;
- erro();
- current_dica(tam);
- printf("\n\n");
- }
- }
- void instrucoes()
- {
- system("cls");
- char enter;
- printf("\n\n INSTRUCOES\n");
- printf(" ============\n\n");
- printf(" 1:TU TEM Q ADIVINHAR A PALAVRA\n");
- printf(" 2:DIGITA AS LETRA E FE");
- scanf("%c", &enter);
- return;
- }
- void inicio()
- {
- bege:
- system("cls");
- printf("\n JOGO DA FORCA\n");
- printf(" ===============\n");
- char opcao, enter;
- printf(" J:JOGAR\n");
- printf(" I:INSTRUCOES\n");
- printf(" S:SAIR\n");
- scanf("%c%c", &opcao, &enter);
- switch(opcao)
- {
- case 'J':
- case 'j':
- choose_word();
- guess_letter();
- break;
- case 'I':
- case 'i':
- instrucoes();
- goto bege;
- break;
- case 'S':
- case 's':
- return;
- default:
- goto bege;
- }
- }
- int main()
- {
- inicio();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement