#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <string.h>
#include "headerfiles.h"
// VARIAVEIS GLOBAIS
char palavrasecreta[20];
char chutes[26];
int chutesdados=0;
void abertura(){
printf("*******************************************************************************\n");
printf("******************************* JOGO DA FORCA *******************************\n");
printf("*******************************************************************************\n\n");
}
void chuta(){
char chute;
scanf(" %c",&chute);
chutes[chutesdados] = chute;
chutesdados++;
}
int jachutou(char letra){
int achou = 0;
for( int j=0; j<chutesdados; j++){
if(chutes[j] == letra){
achou = 1;
break;
}
}
return achou;
}
void desenhoforca(){
for(int i=0; i < strlen(palavrasecreta); i++){
int achou = jachutou(palavrasecreta[i]);
if(achou){
printf("%c ",palavrasecreta[i]);
}else{
printf("_ ");
}
}
printf("\n");
}
void adicionapalavra(){
char quer;
printf("Você deseja adicionar uma nova palavra ao jogo? (S/N)\n");
scanf(" %c",&quer);
if(quer == 'S'){
char novapalavra[20];
printf("Qual a nova palavra? ");
scanf("%s", &novapalavra);
FILE* f;
f = fopen("palavras.c", "r+");
if(f == 0){
printf("Desculpe, banco de dados não disponível\n\n");
exit(1);
}
int qtd;
fscanf(f, "%d", &qtd);
qtd++;
fseek(f, 0, SEEK_SET);
fprintf(f, "%d", qtd);
fseek(f, 0, SEEK_END);
fprintf(f,"\n%s", novapalavra);
fclose(f);
}
}
void escolherpalavra(){
FILE* f;
f=fopen("palavras.c","r");
if(f == 0){
printf("Desculpe, banco de dados não disponível\n\n");
exit(1);
}
int qtddepalavras;
fscanf(f,"%d",&qtddepalavras);
srand(time(0));
int randomico = rand() % qtddepalavras;
for(int i=0; i<=randomico; i++){
fscanf(f,"%s",palavrasecreta);
}
fclose(f);
}
int acertou(){
for (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(int j=0; j<strlen(palavrasecreta); j++){
if(chutes[i] == palavrasecreta[j]){
existe=1;
break;
}
}
if(!existe) erros++;
}
return erros >= 5;
}
int main()
{
setlocale(LC_ALL,"Portuguese");
escolherpalavra();
abertura();
do{
desenhoforca();
chuta();
}while(!acertou() && !enforcou());
adicionapalavra();
}