Olá, Walef!
Pelo código que você compartilhou, parece que você está tentando implementar um jogo de forca em C. No entanto, você está enfrentando um problema em que, ao dar o chute certo, não aparece a letra correta, apenas os tracejados.
Pelo que pude analisar, o problema está na lógica de exibição das letras corretas. No trecho de código que você compartilhou, você está percorrendo a palavra secreta e verificando se cada letra já foi chutada pelo jogador. Se a letra já foi chutada, você exibe a letra correta. Caso contrário, você exibe um underscore.
No entanto, parece que você não está atualizando corretamente a variável achou
quando uma letra é encontrada nos chutes do jogador. Isso pode estar fazendo com que todas as letras sejam exibidas como underscore.
Uma possível solução para esse problema é adicionar um break
no momento em que uma letra é encontrada nos chutes do jogador. Dessa forma, você interrompe o loop interno e evita que o underscore seja exibido desnecessariamente.
Aqui está o trecho de código atualizado:
do {
for (int i = 0; i < strlen(palavrasecreta); i++) {
int achou = 0;
for (int j = 0; j < tentativas; j++) {
if (chutes[j] == palavrasecreta[i]) {
achou = 1;
break; // Adicionado o break aqui
}
}
if (achou) {
printf("%c ", palavrasecreta[i]);
} else {
printf("_ ");
}
}
printf("\n");
char chute;
printf("Qual letra? ");
scanf(" %c", &chute);
chutes[tentativas] = chute;
tentativas++;
} while (!acertou && !enforcou);
Com essa modificação, o código deve exibir corretamente as letras chutadas pelo jogador em vez de exibir apenas os tracejados.
Espero ter ajudado e bons estudos!