include <stdio.h>
include <string.h>
include "forca.h"
include <stdlib.h>
include <time.h>
// variaveis globais
char palavrasecreta [TAMANHO_PALAVRA]; int chutesdados = 0; char chutes [26];
//-------------------------------------------------------------------
void abertura(){ printf("/***/\n"); printf(" /JOGO DE FORCA/\n"); printf("/***/\n"); }
//-------------------------------------------------------------------
int jachutou(char letra){ int achou = 0; for (int j = 0; j< chutesdados; j++){ if ( chutes[j] == letra){ achou = 1; break;
}else { achou = 0; }
} return achou; }
//------------------------------------------------------------------
void desenhaforca(){ int erros = chuteserrados();
printf(" ___ \n"); printf(" |/ | \n"); printf(" | %c%c%c \n", (erros>=1?'(':' '), (erros>=1?'':' '), (erros>=1?')':' ')); printf(" | %c%c%c \n", (erros>=3?'\':' '), (erros>=2?'|':' '), (erros>=3?'/': ' ')); printf(" | %c \n", (erros>=2?'|':' ')); printf(" | %c %c \n", (erros>=4?'/':' '), (erros>=4?'\':' ')); printf(" | \n"); printf("|___ \n"); printf("\n\n");
for (int i = 0; i < strlen(palavrasecreta); i++){ int achou = 0;
achou = jachutou(palavrasecreta[i]);
if (achou){ printf("%c ",palavrasecreta[i]); }else{ printf("_ "); } }
printf("\n"); }
//--------------------------------------------------------------------
void chuta (){ scanf(" %c", &chutes[chutesdados]); chutesdados++; }
//------------------------------------------------------------------
void escolhepalavrasecreta(){
FILE* bancodedados;
bancodedados = fopen("bancodepalavras.txt","r");
if (!bancodedados){ printf("Desculpe! banco de dados não disponivel\n\n"); exit(1); }
int qtdpalavras; fscanf(bancodedados,"%d", &qtdpalavras);
srand(time(0)); int randomico = rand() % qtdpalavras;
for (int i = 0; i<= randomico; i++){ fscanf(bancodedados,"%s", palavrasecreta);
}
fclose(bancodedados);
}
//------------------------------------------------------------------
int enforcou(){
return chuteserrados()>=5;
}
//-------------------------------------------------------------------
int acertou(){
for( int i = 0; i < strlen(palavrasecreta); i++){
if(!jachutou(palavrasecreta[i])){
return 0;
}
}
return 1;
}
//------------------------------------------------------------------------ void adicionapalavra(){ char escolha;
printf("Voce deseja adicionar uma palavra nova?(S/N)\n"); scanf(" %c", &escolha);
if (escolha == 'S') { char novapalavra[TAMANHO_PALAVRA]; printf("Qual a sua nova palavara?"); scanf("%s", novapalavra);
FILE* bancodedados;
bancodedados = fopen("bancodepalavras.txt","r+");
if (!bancodedados){
printf("Desculpe! banco de dados não disponivel\n\n");
exit(1);
}
int qtdpalavras;
fscanf(bancodedados,"%d",&qtdpalavras);
qtdpalavras++;
fseek(bancodedados, 0, SEEK_SET);
fprintf(bancodedados,"%d",qtdpalavras);
fseek(bancodedados, 0, SEEK_END);
fprintf(bancodedados, "\n %s",novapalavra);
fclose(bancodedados);
} }
//------------------------------------------------------------------------- int chuteserrados(){ int errou = 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){ errou++; } }
return errou;
}
//-------------------------------------------------------------------------
int main(){
abertura(); escolhepalavrasecreta(); do { desenhaforca(); chuta(); }while (!acertou() && !enforcou()); adicionapalavra();
}