1
resposta

[Projeto] Finalizando o jogo

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "variaveisforca.h" 

char palavrasecreta [TAMANHO_PALAVRA];
char chutes[26];
int chutesdados = 0;

void escolhepalavra()
{
    FILE* f; 

    f = fopen("palavras.txt", "r"); 
   

    int qtddepalavras;
    fscanf(f, "%d", &qtddepalavras);
     if(f == 0)
    {
        printf("Desculpe, banco de dados indisponivel!\n\n");
        exit(1);
    }

    srand(time(0));
    int randomico = rand() % qtddepalavras;

    for(int i = 0; i <= randomico; i++)
    {
        fscanf(f, "%s", palavrasecreta);
    }


    fclose(f);
}

void abertura()
{
    printf("**************************************\n");
    printf("****   Jogo de Forca das Frutas   ****\n");
    printf("**************************************\n\n");
}

int jachutou(char letra)
{
    int achou = 0;

    for(int j = 0; j < chutesdados; j++)
    {
        if(chutes[j] == letra)
        {
            achou = 1;
            break;
        }
    }
    return achou;
}

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;

}

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 chuta()
{
    char chute;
    scanf(" %c", &chute);

    chutes[chutesdados] = chute;    
    chutesdados++;                  
}

int enforcou()
{
    return chuteserrados() >= 5;
}

int acertou()
{
    for(int i = 0; i < strlen(palavrasecreta); i++)
    {
        if(!jachutou(palavrasecreta[i]))
        {
            return 0;
        }
    }
    return 1;
}

void adicionapalavra()
{
    char quer;

    printf("\nVoce deseja adicionar uma nova palavra no jogo? (S/N)");
    scanf(" %c", &quer);

    if(quer == 'S')
    {
        char novapalavra[TAMANHO_PALAVRA];
        printf("Qual a nova palavra? ");
        scanf("%s", &novapalavra);

        FILE* f;

        f = fopen("palavras.txt", "r+"); 
        if(f == 0)
        {
            printf("Desculpe, banco de dados indisponivel!\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);
    }
}

int main()
1 resposta

Olá Matheus, tudo bem com você?

Seu código está correto e certamente servirá de inspiração para os demais estudantes que o lerem. Continue contando sempre com o fórum da Alura e compartilhando o seu desenvolvimento nos estudos.

Abraços e bons estudos