Correction error game

0

With this game that when the error in the beginning of the game he says that a letter was wrong, but if you hit a letter and then make a mistake, it does not count. Help me.

Error: When I start the game, it asks for a word to be entered. If you miss the letters of that word when the game starts it counts, but if I hit a letter and make a mistake again, the game stops counting the remaining errors.

#include<stdio.h> 
#include<string.h> 
#include<conio.h> 
#include<stdlib.h> 

int main() { 

char palavra[25],letra[25],lacuna[25]; 
int vida=6,x=0,i,total=0,cont=0; 


printf("                    ******************************");
printf("\n                            JOGO DA FORCA \n");
printf("                    ******************************\n");

printf("\n                             BOM JOGO\n\n");

printf("\nDIGITE A PALAVRA E TECLE ENTER PARA CONTINUAR");
printf("\n\nPALAVRA: ");

gets(palavra); 
fflush(stdin);

system("cls");

for(i=0;i<strlen(palavra);i++) 
{ 
lacuna[i]='X'; 
total++;
cont++;
} 

while(vida>0) 
{ 

printf("\nA PALAVRA COMTEM %i LETRAS\n",total);
printf("\nLETRAS RESTANTES: %i\n",cont);


printf("\n%s\n",lacuna); 
printf("\nENTRE COM UMA LETRA: "); 
gets(letra); 
system("cls");

for(i=0;i<strlen(palavra);i++) 
{ 

if(letra[0]==palavra[i]) 
{ 
lacuna[i]=palavra[i]; 
x++; 
cont--;

} 
} 

if(cont==0){
printf("PARABENS! VOCE VENCEU!");   
printf("\nACERTOU A PALAVRA %s", palavra);
}

if(x==0) 
{ 
vida--; 
printf("\nVOCE PERDEU UMA VIDA!\nVOCE TEM %d VIDA(S) RESTANTES\n\n",vida); 

} 

}

printf("\n\nVC FOI ENFORCADO, Fim de jogo!\n\n\nPALAVRA SECRETA: 
%s",palavra);

printf("\n\n***********************\n\n");
printf("* JOGO DA FORCA *\n\n");
printf(" ___ \n");
printf(" | | \n");
printf(" | O  \n");
printf(" |/|\ \n");
printf(" | |  \n");
printf(" |/ \  \n");
printf(" |______ \n");
printf("\n**********************\n");

getchar(); 
getchar(); 
return 0; 
}
    
asked by anonymous 11.06.2017 / 17:31

2 answers

1

What is happening is that you asked to show life only when x is 0, and the problem is that when you hit the answer, x goes to 1 and never goes back to 0.

To solve, just get x back to 0 at the end of the while again.

    if(x==0) 
    { 
        vida--; 
        printf("\nVOCE PERDEU UMA VIDA!\nVOCE TEM %d VIDA(S) RESTANTES\n\n",vida); 
    } 
    x = 0;
} //Chaves do final do while
    
12.06.2017 / 01:12
-4
#include<stdio.h> 
#include<string.h> 
#include<conio.h> 
#include<stdlib.h> 
#define _CRT_SECURE_NO_WARNINGS
int main() {

    char palavra[25], letra[25], lacuna[25];
    int vida = 6, x = 0, i, total = 0, cont = 0;


    printf("                    ******************************");
    printf("\n                            JOGO DA FORCA \n");
    printf("                    ******************************\n");

    printf("\n                             BOM JOGO\n\n");

    printf("\nDIGITE A PALAVRA E TECLE ENTER PARA CONTINUAR");
    printf("\n\nPALAVRA: ");

    gets(palavra);
    fflush(stdin);

    system("cls");

    for (i = 0; i<strlen(palavra); i++)
    {
        lacuna[i] = 'X';
        total++;
        cont = strlen(palavra);

    }

    while (vida>0)
    {

        printf("\nA PALAVRA COMTEM %i LETRAS\n", total);
        printf("\nLETRAS RESTANTES: %i\n", cont);
        printf("\Vidas Disponiveis: %i\n", vida);

        printf("\n%s\n", lacuna);
        printf("\nENTRE COM UMA LETRA: ");
        gets(letra);
        system("cls");

        for (i = 0; i<strlen(palavra); i++)
        {

            if (letra[0] == palavra[i])
            {
                lacuna[i] = palavra[i];
                x++;
                cont--;
            }

        }

        if (cont == 0){
            printf("PARABENS! VOCE VENCEU!");
            printf("\nACERTOU A PALAVRA %s", palavra);
            main();
            vida = 6;
        }

        if (x == 0)
        {
            vida--;
            printf("\nVOCE PERDEU UMA VIDA!\nVOCE TEM %d VIDA(S) RESTANTES\n\n", vida);

        }

    }

    printf("\n\nVC FOI ENFORCADO, Fim de jogo!\n\n\nPALAVRA SECRETA:%s", palavra);

    printf("\n\n***********************\n\n");
    printf("* JOGO DA FORCA *\n\n");
    printf(" ___ \n");
    printf(" | | \n");
    printf(" | O  \n");
    printf(" |/|\ \n");
    printf(" | |  \n");
    printf(" |/ \  \n");
    printf(" |______ \n");
    printf("\n**********************\n");

    getchar();
    getchar();
    return 0;
}
    
11.06.2017 / 21:31