Ir para conteúdo
Fórum Script Brasil
  • 0

Linguagem C contanto de Forma Errada


pedrolinuxc

Pergunta

INTRODUÇAO AO PROBLEMA
 

Ola pessoal, eu estou iniciando meus estudos de linguagem C e uso linux fedora cinnamon no meu computador.

Estava fazendo uma atividade passada pelo professor que pedia para fazer um jogo de advinhar palavras em c (jogo da Forca). O jogo roda dentro de um ciclo while que determina que o jogo deve rodar ate que o usuario  advinhe a palavra toda ou ate as tentativas acabarem. 

 

O PROBLEMA 

 

O que esta me impedindo de concluir a tarefa é o fato de que por alguma razão, o C simplesmente esta contanto errado o numeros de tentativas do usuario. Ao invés de reduzir as tentantivas em 1,  caso o usuario erre, ele esta reduzindo em  5. não faço a minima ideia do porque

 

CODIGO EM C    ( Compilado no GCC )

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

   char *palavra;   //Guarda a palavra Secreta
   size_t tam;        //Recebe o retorno de strlen, informando a quantidade de caracteres da palavra
   char letra;        //Guarda a letra que o usuario digita para tentar advinhar a palavra
   int i;                  //Laço for
   short int acerto = 0;  // Guarda a quantidade de acertos do usuario
   short int tentativas = 6;  // Guarda a quantidade de erros do usuario

   void limpar(void)
{
    int c = 0;

    while (c = getchar() != '\n' && c != EOF) {

    }
    return;
}

    int main()
{

    printf("Digite a palavra Secreta: ");
    fgets(&palavra,30,stdin);
    tam = strlen(&palavra);

    char revelar [tam];
    char auxpalavra [tam + 1];
    strcpy(auxpalavra,&palavra);
    system ("clear");

     for (i = 0; i < tam - 1; i++) {
        revelar [i] = '-';
     }


     //Loop do Jogo


     while ( acerto != tam - 1 || tentativas != 0 ) {

      printf("\n\n\t\t\t\t\t%s",revelar);
      printf("\nTentativas Restantes: %i\n",tentativas);
      printf("Numeros de Acertos: %i\n",acerto);
      printf("\nDigite uma letra: ");

      scanf("%c",&letra);
      limpar();

      // Verificando se o Usuario Acertou ou Errou


      for (i = 0; i < tam; i++) {

        if (  letra == auxpalavra [i]  ) {

             //Caso o usuario acerte a letra


             revelar [i] = letra;
             acerto ++;


        }

        if (  letra != auxpalavra [i]  )  {

              //Caso o usuario erre a letra


             tentativas --;
        }


       }
           system ("clear");
     }

    return 0;
}

 

 

Se alguém poder me ajudar a entender esse probelam ou corrigir, fico agradecido
 

Editado por pedrolinuxc
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...