Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se
1
resposta

Passando para exibir o código

#include <stdio.h>
#include <string.h>
#include "forca.h"
#include <time.h>
#include <stdlib.h>
char palavrasecreta[TAMANHO_PALAVRA];
char chutes[26];
int chutesdados = 0;
    void abertura(){
        printf("\n\n");
        printf("***********************\n");
        printf("*    Jogo de Forca    *\n");
        printf("***********************\n\n");
    }
    void chuta(){
        char chute;
        scanf(" %c", &chute);
        chutes [chutesdados] = chute;
        chutesdados++;
    }
    int jachutou(char letra){
            int achou = 0;
            for (int j = 0; j < chutesdados; j++){
                if (chutes[j] == letra){
                achou = 1;
                break;
                }
            }
            return achou;
    } 
    void desenhaforca(){
        int erros = chuteserrados();
        printf("  _______       \n");
        printf(" |/      |      \n");
        printf(" |      %c%c%c  \n", (erros>=1?'(':' '), 
            (erros>=1?'_':' '), (erros>=1?')':' '));
        printf(" |      %c%c%c  \n", (erros>=3?'\\':' '), 
            (erros>=2?'|':' '), (erros>=3?'/': ' '));
        printf(" |       %c     \n", (erros>=2?'|':' '));
        printf(" |      %c %c   \n", (erros>=4?'/':' '), 
            (erros>=4?'\\':' '));
        printf(" |              \n");
        printf("_|___           \n");
        printf("\n\n");
        for(int i = 0; i < strlen(palavrasecreta); i++){
                int achou = jachutou(palavrasecreta[i]);
                if (achou){
                    printf("%c", palavrasecreta[i]);
                } else{
                    printf("_ "); 
                }  
            }
        printf("\n");
    }
    void adicionapalavra(){
        char quer;
        printf("Vôce deseja adicionar uma nova palavra no jogo (S/N)");
        scanf("%s", &quer);
        if (quer == 'S') {
            char novapalavra[TAMANHO_PALAVRA];
            printf("Qual nova palavra: ");
            scanf("%s", novapalavra);
            FILE* f;
            f = fopen("palavras.txt", "r+");
            if(f == 0){
               printf("Desculpe, banco de dados não encontrado\n\n");
               exit(1); 
            }
            int qtd;
            fscanf(f, "%d", &qtd);
            qtd++;
            fseek(f, 0, SEEK_SET);
            fprintf(f, "%d", qtd);
            fseek(f, 0, SEEK_END);
            fprintf(f, "\n%s", novapalavra);
            fclose(f);   
        }  
    }
    void escolhepalavra(){
        FILE* f;
        f = fopen("palavras.txt", "r");
        if (f == 0) {
            printf("Desculpe, banco de dados não encontrado\n\n");
            exit(1);
        }
        int qtdepalavras;
        fscanf(f, " %d", &qtdepalavras);
        srand(time(0));
        int randomico = rand() % qtdepalavras;
        for (int i = 0; i <= randomico; i++) {
             fscanf(f, "%s", palavrasecreta);
        }
        fclose(f);
    }
    int acertou(){
        for (int i = 0; i < strlen(palavrasecreta); i++){
            if (!jachutou(palavrasecreta[i])){
                return 0;  
            }
        }
        return 1;  
    }   
    int chuteserrados() {
        int erros = 0;
        for(int i = 0; i < chutesdados; i++) {
            int existe = 0;
            for(int j = 0; j < strlen(palavrasecreta); j++) {
                if(chutes[i] == palavrasecreta[j]) {
                    existe = 1;
                    break;
                }
            }
            if(!existe) erros++;
        }
        return erros;
}
    int enforcou() {    
        return chuteserrados() >= 5;
}
    int main(){
        abertura();
        escolhepalavra();
        do
        {
            desenhaforca(); 
            chuta();         
        } while (!acertou() && !enforcou());
            if (acertou()) {
                printf("\nParabéns, você ganhou!\n\n");               
            }else{
                printf("\nPuxa, você foi enforcado!\n");
                printf("A palavra era **%s**\n\n", palavrasecreta);               
            }          
    }
1 resposta

Olá, Alan! Tudo bem?

Isso aí! Ótimo código.

Qualquer dúvida nos procure aqui no fórum :)

Continue praticando e ótimos estudos.

Abraços!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software