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
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);
Pergunta
pedrolinuxc
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 pedrolinuxcLink para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
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.