Ir ao conteúdo

Posts recomendados

Postado

Olá a todos do fórum estou com um problema nessa questão aqui "Escreva um programa que funciona como o jogo da forca. O usuário tenta acertar uma palavra
(contida numa variável) usando 5 tentativas. A palavra é mostrada ao usuário com as letras marcadas com o símbolo '*'. O usuário deve digitar uma letra (sem acentos, til, trema) e caso a
letra esteja correta, o símbolo '*' é substituído pela letra. Se o usuário não montar a palavra até a quinta tentativa, o jogo acaba em derrota." eu fiz código a seguir 

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

main(){
char palavra [21];
char lacuna [21]="-";
char letra [21];
char erros [21];
char tam;
int vidas = 5; int retorna; int pontos = 0;
int cont; int cont2 = 0;

printf("Digite uma palavra para o joguinho: ");
gets(palavra);
system("cls");

    for(cont =0; cont<strlen(palavra); cont++){
        lacuna[cont]= '-';
        tam = strlen(palavra);
    }
    while (vidas > 0){
        retorna = 0;
        printf("/n%s/n", lacuna);
        printf("Digite uma letra: \n");
        gets(letra);
        printf("Letra digitada %s\n", erros);
            for(cont = 0; cont<strlen(palavra); cont++){
            if( letra[0] == palavra[cont]){
        lacuna[cont] = palavra[cont];
        retorna++;
        pontos++;
        }
        if(retorna == 0){
            vidas--;
        }
        if(vidas == 0){
            printf("voce perdeu a palavra era %s", palavra);
            break;
        }
        else{
            printf("voce errou uma letra restam %d vidas", vidas);
            erros[cont2] = letra[0];
            cont++;
        }
        if(pontos == tam){
            printf("voce acertou a palavra, muito bem!!!!!!!");
            }
            else{
            printf("/nVoce acertou uma letra, continue assim!!!!");
            }
        }
    }
    return 0;
}

Ele compila certinho porém quando eu digito uma letra ele buga todo e até agora não estou conseguindo achar o porque disso está acontecendo.

Postado

Corrigi algumas coisas no seu código. Não está 100%, mas é uma base para você continuar:

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

main(){
char palavra [21];
char lacuna [21]="--------------------";
char letra;
char erros [21];
char tam;
int vidas = 5; int retorna; int pontos = 0;
int cont; int cont2 = 0;

printf("Digite uma palavra para o joguinho: ");
scanf("%s", palavra);
system("cls");
getchar();

    tam = strlen(palavra);
    while (vidas > 0){
        retorna = 0;
        printf("\n%s\n", lacuna);
        printf("Digite uma letra: \n");
        letra = getchar();
        getchar();
        erros[cont2]=letra;
        erros[cont2+1]='\0';
        printf("Letra digitada %s\n", erros);
        cont2++;
        for(cont = 0; cont<tam; cont++) 
        {
            if( letra == palavra[cont]){
                lacuna[cont] = palavra[cont];
                retorna++;
                pontos++;
                }
        }
        if(pontos == tam){
            printf("\nVoce acertou a palavra, muito bem!!!!!!!");
            break;
        }
         if(vidas == 0){
            printf("voce perdeu a palavra era %s", palavra);
            break;
        }
        if(retorna == 0){
             printf("\nvoce errou uma letra restam %d vidas", vidas);
            vidas--;
           
        } else{
           printf("\nVoce acertou uma letra, continue assim!!!!");
        }
        
        
        
    }
    return 0;
}

Falta algumas coisas, como impedir que o usuário digite a mesma letra mais de uma vez e deixar as lacunas com o mesmo tamanho  da palavra. Seria bom também você sortear a palavra de um conjunto, para que quem estiver jogando não saiba a palavra.

Postado
4 horas atrás, Flávio Pedroza disse:

Corrigi algumas coisas no seu código. Não está 100%, mas é uma base para você continuar:


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

main(){
char palavra [21];
char lacuna [21]="--------------------";
char letra;
char erros [21];
char tam;
int vidas = 5; int retorna; int pontos = 0;
int cont; int cont2 = 0;

printf("Digite uma palavra para o joguinho: ");
scanf("%s", palavra);
system("cls");
getchar();

    tam = strlen(palavra);
    while (vidas > 0){
        retorna = 0;
        printf("\n%s\n", lacuna);
        printf("Digite uma letra: \n");
        letra = getchar();
        getchar();
        erros[cont2]=letra;
        erros[cont2+1]='\0';
        printf("Letra digitada %s\n", erros);
        cont2++;
        for(cont = 0; cont<tam; cont++) 
        {
            if( letra == palavra[cont]){
                lacuna[cont] = palavra[cont];
                retorna++;
                pontos++;
                }
        }
        if(pontos == tam){
            printf("\nVoce acertou a palavra, muito bem!!!!!!!");
            break;
        }
         if(vidas == 0){
            printf("voce perdeu a palavra era %s", palavra);
            break;
        }
        if(retorna == 0){
             printf("\nvoce errou uma letra restam %d vidas", vidas);
            vidas--;
           
        } else{
           printf("\nVoce acertou uma letra, continue assim!!!!");
        }
        
        
        
    }
    return 0;
}

Falta algumas coisas, como impedir que o usuário digite a mesma letra mais de uma vez e deixar as lacunas com o mesmo tamanho  da palavra. Seria bom também você sortear a palavra de um conjunto, para que quem estiver jogando não saiba a palavra.

Já consegui obrigado

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...