Enviado em 14/06/2015 - 14:09h
Gente, preciso de ajuda!
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#define NUMPL 100
#define MAXTAMPL 16
int Aleatorio(){ // Retorna um número aleatório entre 1 e 100;
srand(time(NULL));
return rand()%NUMPL;
}
void linha_forca(int x, char y[15]){ //imprime as letras acertadas da palavra sorteada
printf("***** ");
for (int j=0;j<=x-1;j++){
printf("%c ", y[j]);
}
printf("\n");
printf("***** ");
for(int i=0;i<= x-1;i++){
printf("-- ");
}
printf("\n");
printf("\n");
printf("\n");
}
void des_forca(int x, int y, char z[15]){ //desenha a forca e as letras acertadas.
switch (x){
case 0:
printf("\n");
printf(" *********** \n");
printf(" *********** \n");
printf(" ** ** \n");
printf(" ** \n");
printf(" ** \n");
printf(" ** \n");
printf(" ** \n");
printf(" ** \n");
printf(" ** \n");
printf(" ** \n");
printf(" *** \n");
linha_forca(y,z);
break;
case 1:
printf("\n");
printf(" *********** \n");
printf(" *********** \n");
printf(" ** ** \n");
printf(" ** ( ) \n");
printf(" ** \n");
printf(" ** \n");
printf(" ** \n");
printf(" ** \n");
printf(" ** \n");
printf(" ** \n");
printf(" *** \n");
linha_forca(y,z);
break;
case 2:
printf("\n");
printf(" *********** \n");
printf(" *********** \n");
printf(" ** ** \n");
printf(" ** ( ) \n");
printf(" ** | \n");
printf(" ** | \n");
printf(" ** | \n");
printf(" ** \n");
printf(" ** \n");
printf(" ** \n");
printf(" *** \n");
linha_forca(y,z);
break;
case 3:
printf("\n");
printf(" *********** \n");
printf(" *********** \n");
printf(" ** ** \n");
printf(" ** ( ) \n");
printf(" ** /| \n");
printf(" ** / | \n");
printf(" ** | \n");
printf(" ** \n");
printf(" ** \n");
printf(" ** \n");
printf(" *** \n");
linha_forca(y,z);
break;
case 4:
printf("\n");
printf(" *********** \n");
printf(" *********** \n");
printf(" ** ** \n");
printf(" ** ( ) \n");
printf(" ** /|\\ \n");
printf(" ** / | \\ \n");
printf(" ** | \n");
printf(" ** \n");
printf(" ** \n");
printf(" ** \n");
printf(" *** \n");
linha_forca(y,z);
break;
case 5:
printf("\n");
printf(" *********** \n");
printf(" *********** \n");
printf(" ** ** \n");
printf(" ** ( ) \n");
printf(" ** /|\\ \n");
printf(" ** / | \\ \n");
printf(" ** | \n");
printf(" ** / \n");
printf(" ** _/ \n");
printf(" ** \n");
printf(" *** \n");
linha_forca(y,z);
break;
case 6:
printf("\n");
printf(" *********** \n");
printf(" *********** \n");
printf(" ** ** \n");
printf(" ** ( ) \n");
printf(" ** /|\\ \n");
printf(" ** / | \\ VOCE PERDEU! \n");
printf(" ** | \n");
printf(" ** / \\ \n");
printf(" ** _/ \\_ \n");
printf(" ** \n");
printf(" *** \n");
linha_forca(y,z);
break;
}
}
main()
{
char palavra[NUMPL][MAXTAMPL]; // matriz que irá armazenar as palavras do arquivo([NUMPAL) e as letras de cada palavra([MAXTAMPL])
char vetpl[16];
int IndicePalavrasLidas = 0; //indicar a linha da matriz
FILE *pl;
pl = fopen ("palavras.txt", "r"); // abrir aquivo onde esta o banco de palavras
if (pl == NULL){
printf("O arquivo nao pode ser aberto.\n \f"); //teste para saber se ocorreu algum erro ao abrir o arquivo
getchar();
exit(0);
}
while(fgets(vetpl, 15, pl)){
sscanf(vetpl,"%s",palavra[IndicePalavrasLidas]);
IndicePalavrasLidas++;
}
fclose(pl);
int c = Aleatorio();
int tentativas = 6;
int num_erros = 0;
char letra;
char ShowWord[15];
bool acertou = 0;
int cont = 0;
int teste = 0;
int num_letr = strlen (palavra[Aleatorio()]); // retorna um inteiro com a quantidade de caracteres da palavra sorteada.
for (int i=0;i<=num_letr;i++){ // atribui espaço as letras da forca, limpando assim a memória.
ShowWord[i] =' ';
}
while((num_erros<6) or (acertou == 0)){
system("CLS"); // limpa tela
printf("Erros: %d Cont: %d teste: %d \n ", num_erros,cont,teste);
printf("%s \n",palavra[c]);
des_forca(num_erros,num_letr,ShowWord); //desenha forca
printf("Digite uma letra: ");
scanf("%c",&letra);
teste = 0; // variável auxiliar para saber se o usuário errou
for(int i = 0; i <=num_letr-1;i++){ // verificará a letra digitada
if(letra == palavra[c][i]){ // Teste para saber se a palavra digitada é correspondente com a da forca
ShowWord[i] = letra;
cont = cont+1; // número de acertos
teste = 1; // se o usuário tiver acertado a letra, teste passará a ter o valor 1.
}
}
if (teste == 0){ //Se teste permanecer 0, significa que o usuario errou, já que a condição if(letra == palavra[c][i]) deu falsa
num_erros = (num_erros + 1);
}
if (cont==num_letr){ //se o contador for igual ao numero de letras da palavra sorteada o usuário ganhou
acertou = 1;
break;
}
}
if (acertou==1){ //se o contador for igual ao numero de letras da palavra sorteada o usuário ganhou
system("CLS");
printf("\n\n Parabens!!! Voce Acertou!!!");
}
printf("\n \n");
system("PAUSE");
}