Olá, Pedro!
Agora o seu código está funcionando corretamente, no quesito de mostrar cada palavra acertada em sequência. O que eu indicaria é que você adicionasse uma condição de parada para quando a palavra é acertada.
Segue um exemplo:
#include <stdio.h>
#include <string.h>
#include <locale.h>
void abertura() {
printf("*****************************\n");
printf("* Jogo de Forca *\n");
printf("*****************************\n\n");
}
void chuta(char chutes[26], int* tentativas){
char chute;
scanf(" %c", &chute);
chutes[(*tentativas)] = chute;
(*tentativas)++;
}
int jachutou(char letra, char chutes[26], int tentativas){
int achou = 0;
for (int j = 0; j < tentativas; j++) {
if (chutes[j] == letra) {
achou = 1;
break;
}
}
return achou;
}
int ganhou(char palavrasecreta[20], char chutes[26], int tentativas) {
for (int i = 0; i < strlen(palavrasecreta); i++) {
if (!jachutou(palavrasecreta[i], chutes, tentativas)) {
return 0;
}
}
return 1;
}
int main() {
setlocale(LC_ALL, "Portuguese");
char palavrasecreta[20];
sprintf(palavrasecreta, "MELANCIA");
int acertou = 0;
int enforcou = 0;
char chutes[26];
int tentativas = 0;
int maxTentativas = 10; // Pode ajustar conforme necessário
abertura();
do {
// Imprime a palavra secreta
for (int i = 0; i < strlen(palavrasecreta); i++) {
int achou = jachutou(palavrasecreta[i], chutes, tentativas);
if (achou) {
printf("%c ", palavrasecreta[i]);
} else {
printf("_ ");
}
}
printf("\n");
chuta(chutes, &tentativas);
acertou = ganhou(palavrasecreta, chutes, tentativas);
enforcou = (tentativas >= maxTentativas);
} while (!acertou && !enforcou);
if (acertou) {
printf("Parabéns, você ganhou!\n");
} else if (enforcou) {
printf("Você foi enforcado!\n");
}
return 0;
}
Essa condição é aplicada na comparação da palavra secreta com a palavra gerada ao fim das tentativas, e quando elas forem iguais o jogo acaba.
Bons estudos!