Depois de ter criado um arquivo externo para adicionar os protótipos das funções e também o banco de dados das palavras, o meu jogo parou de adicionar as letras na tela quando eu acerto o chute.
Alguém pode me dar um help, por favor?! Grato desde já :D
PS: aqui está os arquivos completos (https://drive.google.com/drive/folders/1dMKCUT5nqC0eEm4WpLMnzgrlk5UKwO3G?usp=sharing).
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <ctype.h>
#include "forca.h"
//Variáveis globais
char palavraSecreta[20];
char chutes[30];
int chutesDados = 0;
int main() {
aberturaJogo();
escolhaPalavra();
do {
desenhaForca();
chuteUsuario();
} while(!acertou() && !enforcou());
adicionaPalavra();
}
void aberturaJogo() {
printf("******************\n");
printf("* Jogo da Forca *\n");
printf("******************\n\n");
} //Função desenvolvida para exibir uma mensagem de abertura do jogo
void chuteUsuario() {
char chute;
printf("Qual letra? ");
scanf(" %c", &chute);
chutes[chutesDados] = chute;
chutesDados++;
} //Função desenvolvida para capturar o chute do usuário
int jaChutou(char letra) {
int achou = 0;
for(int j = 0; j < chutesDados; j++) {
if(chutes[j] == letra) {
achou = 1;
break;
}
}
return achou;
} //Função desenvolvida para verificar a letra chutada e se ela está na palavra secreta
void desenhaForca() {
printf("Voce ja deu %i chutes.\n", chutesDados);
for(int i = 0; i < strlen(palavraSecreta); i++) {
if(jaChutou(palavraSecreta[i])) {
printf("%c ", palavraSecreta[i]);
}
else {
printf("_ ");
}
}
printf("\n");
} //Função desenvolvida para criar a forca
void escolhaPalavra() {
FILE* palavras;
palavras = fopen("palavras.txt", "r");
if(palavras == 0) {
printf("\nDesculpe, banco de dados nao disponivel!\n\n");
exit(1);
}
int qtdPalavras;
fscanf(palavras, "%i", &qtdPalavras);
srand(time(0));
int randomico = (rand() % qtdPalavras);
for(int i = 0; i <= randomico; i++) {
fscanf(palavras, "%s", palavraSecreta);
}
fclose(palavras);
} //Função desenvolvida para escolher a palavra secreta da rodada no jogo
void adicionaPalavra() {
char resposta;
printf("Deseja adicionar uma nova palavra ao jogo?\n");
printf("Responda com S para SIM ou N para NAO.\n");
scanf(" %c", &resposta);
resposta = toupper(resposta); //Converte a letra digitada em maiúscula
if(resposta == 'S') {
char novaPalavra[20];
printf("Qual eh a nova palavra? ");
scanf("%s", novaPalavra);
strupr(novaPalavra); //Converte a string toda para letras maiúsculas
FILE* palavras;
palavras = fopen("palavras.txt", "r+"); //r+ significa "leitura e escrita"
if(palavras == 0) {
printf("\nDesculpe, banco de dados nao disponivel!\n\n");
exit(1);
}
int qtdPalavras;
fscanf(palavras, "%i", &qtdPalavras);
qtdPalavras++;
fseek(palavras, 0, SEEK_SET);
fprintf(palavras, "%i", qtdPalavras);
fseek(palavras, 0, SEEK_END);
fprintf(palavras, "\n%s", novaPalavra);
fclose(palavras);
}
}
int enforcou() {
int erros = 0;
for(int i = 0; i < chutesDados; i++) {
int existe = 0;
for(int j = 0; j < strlen(palavraSecreta); j++) {
if(chutes[i] == palavraSecreta[j]) {
existe = 1;
break;
}
}
if(!existe) erros++;
}
return erros >= 5;
} //Função desenvolvida para verificar se o usuário foi enforcado ou não
int acertou() {
for(int i = 0; i < strlen(palavraSecreta); i++) {
if(!jaChutou(palavraSecreta[i])) {
return 0;
}
}
return 1;
} //Função desenvolvida para verificar se o usuário acertou ou não a letra