Olá, meu jogo está finalizando após duas tentativas. Alguém poderia me ajudar a entender oq ue pode ter causado?
#include <stdio.h>
#include <locale.h>
#include <time.h>
#include <stdlib.h>
#include <string.h>
#include "forca.h"
char palavrasecreta [20];
char chutes[26];
int chutesdados = 0;
void abertura() {
setlocale(LC_ALL, "Portguese");
printf("*********************\n");
printf("* Jogo de forca *\n");
printf("*********************\n\n");
}
void chuta(){
char chute;
scanf(" %c", &chute);
chutes[chutesdados] = chute;
chutesdados++;
}
void desenhaforca(){
for(unsigned int i = 0; i < strlen(palavrasecreta); i++) {
int achou = jachutou(palavrasecreta[i]);
if(achou) {
printf("%c ", palavrasecreta[i]);
} else {
printf("_ ");
}
}
printf("\n");
}
void escolhepalavra(){
FILE* f;
f = fopen("../palavras.txt", "r");
if(f == 0) {
printf("Desculpe, banco de dados não disponível.\n\n");
exit(1);
}
int qtdpalavras;
fscanf(f, "%d", &qtdpalavras);
srand(time(0));
int randomico = rand() % qtdpalavras;
for(int i = 0; i <= randomico; i++){
fscanf(f, "%s", palavrasecreta);
}
fclose(f);
}
int acertou () {
for(unsigned int i = 0; i < strlen(palavrasecreta); i++) {
if(!jachutou(palavrasecreta[i])) {
return 0;
}
}
return 1;
}
int enforcou() {
int erros = 0;
for(int i = 0; i < chutesdados; i++) {
int existe = 0;
for(unsigned int j = 0; j < strlen(palavrasecreta); j++) {
if(chutes[i] == palavrasecreta[j]) {
existe = 1;
break;
}
}
if(!existe) erros++;
}
return erros >= 5;
}
int jachutou(char letra) {
int achou =0;
for(int j = 0; j < chutesdados; chutesdados++){
if(chutes[j] == letra) {
achou = 1;
break;
}
}
return achou;
}
int main() {
abertura();
escolhepalavra();
do {
desenhaforca();
chuta();
} while (!acertou() && !enforcou());
}