Sem o header o codigo roda, com o header aparece a seguinte mensagem:
10 1 C:\Users\thiag\Documents\Dev C\Jogo da Forca.cpp [Error] expected initializer before 'char' C:\Users\thiag\Documents\Dev C\Jogo da Forca.cpp In function 'void escolhepalavra()': 57 19 C:\Users\thiag\Documents\Dev C\Jogo da Forca.cpp [Error] 'palavrasecreta' was not declared in this scope C:\Users\thiag\Documents\Dev C\Jogo da Forca.cpp In function 'void desenhaforca()': 65 28 C:\Users\thiag\Documents\Dev C\Jogo da Forca.cpp [Error] 'palavrasecreta' was not declared in this scope C:\Users\thiag\Documents\Dev C\Jogo da Forca.cpp In function 'int enforcou()': 84 29 C:\Users\thiag\Documents\Dev C\Jogo da Forca.cpp [Error] 'palavrasecreta' was not declared in this scope C:\Users\thiag\Documents\Dev C\Jogo da Forca.cpp In function 'int ganhou()': 100 28 C:\Users\thiag\Documents\Dev C\Jogo da Forca.cpp [Error] 'palavrasecreta' was not declared in this scope
Codigo:
#include <stdio.h>
#include <string.h>
#include <time.h>
#include <stdlib.h>
#include "forca.h"
char palavrasecreta[20];
char chutes[26];
int chutesdados = 0;
void abertura(){
printf("\n/****************/\n");
printf("/ Jogo de Forca */\n");
printf("/****************/\n\n");
}
void chuta(){
char chute;
printf("\nQual letra? ");
scanf(" %c", &chute);
chutes[chutesdados] = chute;
}
int jachutou(char letra){
int achou = 0;
for(int j = 0; j < chutesdados; j++){
if(chutes[j] == letra) {
achou = 1;
break;
}
}
return achou;
}
void escolhepalavra(){
FILE* f;
f = fopen("palavras.txt", "r");
if(f == 0){
printf("O Banco de dados nao esta disponivel\n\n");
exit(1);
}
int qtdepalavras;
fscanf(f, "%d", &qtdepalavras);
srand(time(0));
int randomico = rand() % qtdepalavras;
for(int i = 0; i <= randomico; i++){
fscanf(f, "%s", palavrasecreta);
}
fclose(f);
}
void desenhaforca(){
for(int i = 0; i < strlen(palavrasecreta); i++) {
int achou = jachutou(palavrasecreta[i]);
if(achou) {
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 ganhou(){
for(int i = 0; i < strlen(palavrasecreta); i++){
if(!jachutou(palavrasecreta[i])){
return 0;
}
}
return 1;
}
int main() {
int acertou = 0;
abertura();
escolhepalavra();
do {
desenhaforca();
chuta();
chutesdados++;
} while (!ganhou() && !enforcou());
}
O forca.h está assim:
void abertura();
void chuta();
void escolhepalavra();
void desenhaforca();
int jachutou(char letra);
int enforcou();
int ganhou();
void escolhepalavra()