Olá Pedro!
Que legal que você conseguiu fazer sem o for duplo! Aqui algumas sugestões para você avaliar:
Inicialização do array traco
: Você deve inicializar o array traco
com underlines ('_'
) para representar as letras ainda não descobertas. Além disso, não se esqueça de adicionar o caractere nulo '\0'
no final para torná-lo uma string válida.
Verificação de acerto: O seu código precisa de uma lógica para verificar se o jogador acertou todas as letras da palavra. Isso pode ser feito verificando se a string traco
é igual à string palavra
.
Condição de término: Você precisa definir a condição terminou
para quando o jogador quiser desistir ou quando todas as tentativas forem usadas (caso você implemente um limite de tentativas).
Aqui está uma sugestão de como você pode modificar o seu código:
#include <stdio.h>
#include <string.h>
int main() {
char palavra[] = "melancia";
int acertou = 0;
int terminou = 0;
char traco[strlen(palavra) + 1];
char chute;
// Inicializa o array traco com '_'
for (int i = 0; i < strlen(palavra); i++) {
traco[i] = '_';
}
traco[strlen(palavra)] = '\0'; // Adiciona o caractere nulo no final
do {
printf("\nDigite uma letra: ");
scanf(" %c", &chute);
for (int i = 0; i < strlen(palavra); i++) {
if (chute == palavra[i]) {
traco[i] = chute;
}
}
printf("%s\n", traco);
// Verifica se o jogador acertou a palavra
if (strcmp(traco, palavra) == 0) {
acertou = 1;
printf("Parabéns! Você acertou a palavra!\n");
}
} while (!acertou && !terminou);
return 0;
}
Espero que essas dicas ajudem a melhorar o seu código! Lembre-se de que você pode adicionar mais funcionalidades, como um contador de tentativas, para tornar o jogo mais completo.
Espero ter ajudado e bons estudos!