1
resposta

Fiz de maneira diferente...

Fiz de outra maneira, criei um array espelho do array palavrasecreta e fiz substituindo e imprimindo-o na medida que for achada a letra, colocando também mensagem de erro.

#include <stdio.h>

#include <string.h>

#include <ctype.h>

#define TAM 20

int main(void) {

char espelho[TAM]; char palavrasecreta[TAM]; char chute; int i, acertou, enforcou, tentativas, achou;

acertou = 0; enforcou = 0; sprintf(palavrasecreta, "MELANCIA"); printf("\n%s", palavrasecreta);

//Carregar o vetor espelho do mesmo tamanho de palavrasecreta com '' for (i=0;i<strlen(palavrasecreta);i++){ espelho[i] = ''; // printf("\nA posicao %i = %c ", i, espelho[i]); }

tentativas = 1; do{

printf("\n\nInforme uma letra: ");
scanf(" %c", &chute);
chute = toupper(chute);
achou = 0;
//pesquisar no vetor espelho se existe a letra e substituir pelo chute
for (i = 0; i < strlen(palavrasecreta); i++){
    if (palavrasecreta[i] == chute){
        espelho[i] = chute;
        achou = 1;
      }
    }
    //mostrar o espelho apos pesquisa de chute
    for (i=0;i<strlen(palavrasecreta);i++){
      printf("%c", espelho[i] );
    }
    //mostrar mensagem que a letra nao tem em palavrasecreta
    if (!achou){
      printf("\n\nErrou!!  Tente novamente...");
    }
tentativas++;

} while(!acertou && !enforcou); return 0; }

1 resposta

Olá, Ben!

Pelo que entendi, você está implementando o jogo da Forca em C e gostaria de saber se fez de maneira correta. Vou analisar o código que você compartilhou e te dar um feedback.

Primeiramente, você criou um array chamado "espelho" que terá o mesmo tamanho da palavra secreta. Esse array será preenchido com underscores "_" para representar as letras ainda não descobertas. Isso é uma ótima abordagem!

Em seguida, você utiliza um loop para percorrer a palavra secreta e substituir os underscores no array "espelho" pelas letras corretas que o jogador adivinhar. Essa lógica está correta e vai permitir que o jogador veja as letras que acertou.

Além disso, você também implementou um loop para permitir que o jogador faça várias tentativas de adivinhar as letras. A cada tentativa, você verifica se a letra está presente na palavra secreta e atualiza o array "espelho" de acordo. Caso o jogador erre a letra, você exibe uma mensagem de erro. Essa lógica está correta e vai permitir que o jogo funcione corretamente.

No entanto, notei que você declarou as variáveis "acertou" e "enforcou", mas não as utilizou no loop principal. Essas variáveis são importantes para controlar o fim do jogo, ou seja, quando o jogador acertar todas as letras ou quando o número máximo de tentativas for atingido. Sugiro que você atualize essas variáveis dentro do loop principal para que o jogo funcione corretamente.

No geral, sua implementação está correta e você está no caminho certo! Continue testando e fazendo melhorias no seu código. Se tiver mais alguma dúvida, é só me dizer.

Espero ter ajudado e bons estudos!