1
resposta

[Projeto] O jogo

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "variaveisforca.h" //Defini as funções da livraria - header files em .h e chama entre ""

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

void escolhepalavra()
{
    FILE* f; //ponteiro de f

    f = fopen("palavras.txt", "r"); //Função fopen abre o arquivo e deve primeiro entre "" anunciar o arquivo (salvo em outpout), e "r" sifnifica que é apenas a leitura
   

    int qtddepalavras;
    fscanf(f, "%d", &qtddepalavras);//fscanf le o arquivo e deve primeiro de tudo anunciar o arquivo
     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   ****\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;
}

void desenhaforca()
{
    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()
{
    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 >= 5;
}

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

void adicionapalavra()
{
    char quer;

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

    if(quer == 'S')
    {
        char novapalavra[20];
        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);//SEEK_END a referência a ultima posição do arquivo
        fprintf(f, "\n%s", novapalavra);

        fclose(f);
    }
}



int main()
{  
   escolhepalavra(palavrasecreta);
   abertura();

   do 
   {
        desenhaforca(palavrasecreta, chutes, chutesdados);
        chuta(chutes, chutesdados);
   }
   while(!acertou() && !enforcou());
   
   adicionapalavra();

}
1 resposta

Oiii Matheus, tudo bem?

Meus parabéns pela sua dedicação em colocar em prática o que está aprendendo com os estudos na Alura, essa dedicação é muito importante para o seu desenvolvimento como pessoa programadora.

Abraços e bons estudos.