1
resposta

[Projeto] Jogo até o momento

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

//adicionando a variavel aqui em cima fora de qualquer função chama-se variável global - usa qunado temos certeza que será usado em tudo
char palavrasecreta [20];
char chutes[26];
int tentativas = 0;


//o nome na frente da função indica o resultado que retorna para o código o void é vazio em inglês logo não retorna valores, apenas realiza
void escolhepalavra()
{
     /* palavrasecreta [0] = 'M'; palavrasecreta [1] = 'E'; palavrasecreta [2] = 'L'; palavrasecreta [3] = 'A'; palavrasecreta [4] = 'N'; palavrasecreta [5] = 'C'; 
    palavrasecreta [6] = 'I';  palavrasecreta [7] = 'A'; palavrasecreta [8] = '\0'; 
    (é dessa maneira que o sprintf salva ue usando  o %s le ele le até o \0 e acaba a string)  */
    sprintf(palavrasecreta, "MELANCIA"); //s de string - sprintf // salva os caracteres escritos dentro do array determinado
}

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

//o nome int na frente retorna um inteiro, o return no fim indica o retorno da função retorna o valor, nesse caso optamos para devolver o valor int achou
int jachutou(char letra)
{
    int achou = 0;

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

void desenhaforca()
{
    for (int i = 0; i < strlen(palavrasecreta); i++) //A função strlen é utilizada para calcular o tamanho de uma string em C.
        {                                                //Ela retorna o número de caracteres na string, excluindo o caractere nulo de terminação. 
            int achou = jachutou(palavrasecreta[i]);
            
            if(achou)
            {
                printf("%c", palavrasecreta[i]);
            }
            else
            {
                printf("_ ");
            }
        }
        printf("\n");
}

void chuta()
{
    char chute;
    scanf(" %c", &chute);// espaço antes %c serve para ignorar o 'enter' pois 'enter' pode ser considerado char e fica no buffer causando erro

    chutes[tentativas] = chute;    //Array é um ponteiro que aponta para o primeiro elemento do array nesse caso chutes[0]
    tentativas++;                  // por isso não necessita de a apontar de maneira diferente igual o ponteiro int* tentativas
}


int main()
{
   int acertou = 0;
   int enforcou = 0;
   
   escolhepalavra(palavrasecreta);
   abertura();

   do 
   {
        desenhaforca(palavrasecreta, chutes, tentativas);
        chuta(chutes, tentativas);
   }
   while(!acertou && !enforcou); //exclamação é mesma coisa de dizer não ou falso, não acertou que é acertou == 0 // ! nega uma variável boleana 

}
1 resposta

Olá Matheus, tudo bem?

Fico feliz em poder acompanhar o seu desenvolvimento nos estudos. Continuei contando sempre com a Alura para aprofundar ainda mais no conhecimento sobre a linguagem de programação C.

Abraços e bons estudos.