Jump to content
Fórum Script Brasil
  • 0

Linguagem C contanto de Forma Errada


pedrolinuxc

Question

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
 

Edited by pedrolinuxc
Link to comment
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.1k
    • Total Posts
      651.8k
×
×
  • Create New...