#include <stdio.h>
#include <string.h>
#include <locale.h>
#include <iostream>
using namespace std;
char chutes[26];
int chutesDados = 0;
char palavrasecreta[20];
void abertura();
void chuta();
int jachutou(char letra);
void desenhaforca();
int enforcou();
int acertou();
void escolhePalavra();
void adicionaPalavra();
int main() {
setlocale(LC_ALL, "Portuguese");
sprintf(palavrasecreta, "MELANCIA");
abertura();
do {
desenhaforca();
chuta();
} while (!acertou() && !enforcou());
return 0;
}
void abertura() {
printf("*****************************\n");
printf("* Jogo de 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 desenhaforca() {
printf("Você já deu %d chutes\n", chutesDados);
for(int i = 0; i < strlen(palavrasecreta); i++) {
if(jachutou(palavrasecreta[i])) {
printf("%c ", palavrasecreta[i]);
} else {
printf("_ ");
}
}
printf("\n");
}
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 acertou(){
for(int j = 0; j < strlen(palavrasecreta); j++){
if(jachutou(palavrasecreta[j])){
return 0;
}
}
return 1;
}
void escolhePalavra(){
FILE *f;
int randomico, qtdDePalvras;
srand(time(0));
f = fopen("palavras.txt", "r");
fscanf(f, "%d", &qtdDePalvras);
randomico = rand() % qtdDePalvras;
for(int i = 0; i <= randomico; i++){
fscanf(f, "%s", palavrasecreta);
}
fclose(f);
}
void adicionaPalavra(){
char confirmacao;
string novaPalvra;
FILE *f;
int qtd;
f = fopen("palavras.txt", "r+");
if(f == 0){
cout << "DESCULPE, BANCO DE DADOS NÃO DISPONÍVEL";
exit(1);
}else{
cout << "Você deseja adicionar alguma palavra ao banco de dados?(S/N) ";
cin >> confirmacao;
if(confirmacao == "S"){
cout << "Qual a nova palvra? \n";
cin >> novaPalvra;
fscanf(f, "%d", &qtd);
qtd++;
fseek(f, 0, SEEK_SET);
fprintf(f, "%d", qtd);
fseek(f, 0, SEEK_END);
fprintf(f, "\n%s", novaPalvra);
fclose(f);
}
}
}