Jump to content
  • 0
Thost

Jogo da Forca criação

Question

Boa noite aos colegas programadores de plantão:

 

O professor desafiou a sala a fazer um jogo da forca e durante alguns dias programando cheguei a este formato abaixo, que ainda falta alguns detalhes a serem tratados como quando errar uma letra seja descontado da nVida que são 7 no total, ou quando acertar a palavra que o jogo mostre que foi acertado do tipo: Parabéns a palavra secreta era: --- uva! e pergunte se jogador deseja sair ou jogar novamente, caso seja jogar novamente que o jogo recomece. Não precisa ter o boneco ,apenas as palavras e caso esteja errado tire uma chance.

Outro erro que até o momento não consegui decifrar foi que após digitar dica, jogo começa e exibe as informações de vida,tamanho da palavra e dica, porém ao informar letra certa ou errada a dica não é mais exibida. Se alguém souber e puder ajudar serei grato!!

 

Linguagem C:


 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void MenuInfo (int tamanhoPalavra,char InfoDica[100],int nChances)
{
    printf("\n=======================================================================================================\n\n");
    printf("\t\tVAMOS COMECAR!!\n");
    printf("A palavra Secreta tem %d letras\n",tamanhoPalavra);
    printf("\n\nDica da Palavra Secreta: %s\n",InfoDica,strupr(InfoDica));//comando strupr transforma letras digitas em maiusculas, ao exibir dica
    printf("Numero de tentativas %d\n",nChances);
}
int main()
{
    int nVida=7,cont,tamPalavra; //variaveis inteiras que contam vida,tracos
    char palavra[15],dica[100],letra='0';//variaveis onde são guardados a palvra secreta dica e qntidade de letras para preencher as linhas
    printf("========================================== JOGO DA FORCA ================================================\n\n");
    printf("\n@ Digite a Palavra Secreta.\n");//informação ao usuário
    printf("@ A palavra deve conter, no maximo 15 caracteres.\n");
    printf("@ Somente serao aceitos caracteres minusculos\n\n");
    scanf("\n%s",&palavra);//variavel que recebe a palavra digitada pelo jogador
    fflush(stdin);//limpeza de memoria
    printf("\n\nDigite a Dica: ");
    fgets(dica,100,stdin);//ler dica com espacos
    fflush(stdin);//limpeza de memoria
    system("cls");//comando para limpar a tela
    tamPalavra=strlen(palavra); //quantidade caracteres que tem a palavra digitada atribuido ao tamPalavra
    MenuInfo (tamPalavra,dica,nVida);//menu void para retornar tamanho da palvra, dicas,numero de vidas
    char linha[tamPalavra+1];//variavel linha do tipo char para receber o numero de linhas com + 1
    for(cont=0; cont<tamPalavra; cont++)//laco de repetição para executar enqnto tracos menor que tamanho da palavra.
    {
        linha[cont]= '_';
        fflush(stdin);//limpeza de memoria
    }
    linha[tamPalavra+1] = '\0';//linha recebe tamanho da palavra e preenche com tracinhos até encontrar o \0 que marca o fim.
    printf("%s\n",linha);
    while (nVida!=0)//repete enqnto as chances forem diferentes de 0
    {
        int existe=0;// variavel que no laco for valida se letra existe na palavra
        printf("\nDigite uma letra: ");//informação ao usuario para informar a letra da palavra secreta
        fflush(stdin);//limpeza de memoria
        scanf("%s",&letra);//leitura da letra informada
        //system("cls");
        for(cont=0; cont<tamPalavra; cont++)//laco de repetição para executar enqnto tracos menor que tamanho da palavra.
        {
            if (palavra[cont]==letra)
            {
                linha[cont]=letra;//atribuição da qntidade de letras a linha//se letras (3) linha(3)
                existe=1;
            }
        }
        MenuInfo (tamPalavra,dica,nVida);//menu void para retornar tamanho da palvra, dicas,numero de vida
        printf("%s",linha);//tracos
        if (existe == 0 && letra != palavra)
        {
            nVida--;
        }
    }
}

 

Share this post


Link to post
Share on other sites

2 answers to this question

Recommended Posts

  • 0

Primeira coisa: não se usa fflush na entrada padrão.
 

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

#define TAMPALAVRA 15
#define TAMDICA 100

void MenuInfo (const int tamanhoPalavra, char * InfoDica, int nChances)
{
    printf("\n=======================================================================================================\n\n");
    printf("A palavra Secreta tem %d letras\n",tamanhoPalavra);
    printf("\n\nDica da Palavra Secreta: %s\n",InfoDica);
    printf("Numero de tentativas %d\n",nChances);
}


void mascararPalavra (char * palavra, const int tamanhoRealPalavra) {
    for(int i = 0; i<tamanhoRealPalavra; i++) {
        palavra[i] = '_';
    }
}

int verificarAcertos(char letra, char * mascaraPalavra, char * palavra, const int tamanhoRealPalavra) {
    int contagemAcertos = 0;
    for(int i = 0; i < tamanhoRealPalavra; i++) {
        if (tolower(palavra[i]) == tolower(letra)) {
            mascaraPalavra[i] = tolower(letra);
            contagemAcertos++;
        }
    }
    
    return contagemAcertos;
}

int acertouPalavra(char * mascaraPalavra, const int tamanhoRealPalavra) {
    int i;
    for(i=0; i<tamanhoRealPalavra && mascaraPalavra[i] != '_'; i++);
    return (i >= tamanhoRealPalavra);
}

int main()
{
    int nVida = 7;
    int cont;
    
    char palavra[TAMPALAVRA], dica[TAMDICA];
    char letra;
    
    printf("========================================== JOGO DA FORCA ================================================\n\n");
    printf("\n@ Digite a Palavra Secreta.\n");
    printf("@ A palavra deve conter, no maximo 15 caracteres.\n");
    printf("@ Somente serao aceitos caracteres minusculos\n\n");
    fgets(palavra, TAMPALAVRA, stdin);
    (*strchr(palavra, '\n')) = '\0';
    
    printf("\n\nDigite a Dica: ");
    fgets(dica, TAMDICA, stdin);
    
    
    const int tamanhoRealPalavra = strlen(palavra);
    char mascaraPalavra[tamanhoRealPalavra];
    int acertos;
    
    mascararPalavra(mascaraPalavra, tamanhoRealPalavra);
    
    while(nVida && !acertouPalavra(mascaraPalavra, tamanhoRealPalavra)) {
        MenuInfo(tamanhoRealPalavra, dica, nVida);
        for(int i=0; i < tamanhoRealPalavra; i++) {
            printf("%c%c", mascaraPalavra[i], (i < tamanhoRealPalavra - 1)? ' ' :'\n');
        }
        printf("Informe uma letra: ");
        scanf("%c%*c", &letra);
        acertos = verificarAcertos(letra, mascaraPalavra, palavra, tamanhoRealPalavra);
        if(acertos == 0) {
            printf("Não existe essa letra.\n");
            nVida--;
        }
    }
    
    if (!nVida) {
        puts("você perdeu");
    } else {
        printf("%s\n", palavra);
    }
    return 0;
}

 

  • +1 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Bruno de Souza23
      Bom dia pessoal. Estou com um probleminha. Preciso desenvolver um jogo Simples para a empresa onde eu trabalho. O problema é que eu não sou bom nesse tipo de desenvolvimento e eu preciso fazer esse jogo para que eu possa entrar no setor em que eu realmente estudei. Preciso de uma ajuda para fazer esse desenvolvimento. Alguém poderia me dar essa dica ou uma ideia? Não sei por onde começar.
    • By theuz bergles
      Olá! A minha ideia é criar um jogo de terror, que tenha realmente uma pegada de medo no psicológico do jogador. Mas como eu disse no título, não possuo conhecimento para tal criação e estou buscando profissionais (podem ser amadores também) que queiram trabalhar nisso comigo. A seguir, estará a apresentação da minha ideia inicial: 
       
       
      •O jogo seria em uma igreja abandonada, onde seriam feitas perguntas, uma de cada vez, em alguma parte (porta, janela, parede, chão, teto...) de um cômodo aleatório do ambiente escolhido. Obs: Perguntas  Sempre vai ter um ponto de interrogação (“?”) ao final de cada pergunta feita pelo demônio. Obs: Respostas  no cômodo estaria escrito “A RESPOSTA É...” e as respostas estariam apresentadas em alternativas: “A), B), C) e D)” e a resposta certa deverá ser falada em voz alta, através do microfone ligado ao seu computador: “A RESPOSTA É A ALTERNATIVA D)”, por exemplo. Obs: As perguntas e respostas sempre vão seguir os padrões grifados com as aspas (“ ”). •Para que tenhamos mais interatividade, o jogador terá que dizer em voz alta, através do microfone conectado ao seu computador, as perguntas escritas pelo demônio, pois assim, o jogo irá entender que você visualizou a pergunta feita, irá processar e, em seguida, escrever a resposta da forma citada acima. E com a resposta (uma das alternativas apresentadas), você também terá que dizer em voz alta através do microfone conectado ao seu computador. •Lembrando que, como o personagem principal tem conhecimento em Latim, as perguntas podem aparecer no respectivo idioma. Porém, se isso acontecer, o demônio irá traduzir a pergunta para o seu idioma, falando em voz alta. (E isso está incluído como fenômeno paranormal) •O jogo terá um sistema de sanidade mental, que funcionaria como uma espécie de vida para o personagem, iniciando com 100%, e diminuindo ao longo do tempo. Caso você presencie alguma atividade paranormal, fique na escuridão por algum tempo, tenha alguma manifestação do tabuleiro Ouija ou responda alguma pergunta de forma incorreta, a perda de sanidade será maior, e se chegar a 0%, o demônio matará o personagem instatâneamente. •Quanto menos sanidade, mais fenômenos irão acontecer e, consequentemente, mais rápido chegará a 0. Para retardar essa ocorrência, estaremos implementando pílulas, que funcionarão como remédios para aumentar parte da sanidade, e diminuir, temporariamente, a perda precoce da mesma. Ainda assim, mesmo com esse retardo, teremos crucifixo e água benta, que vão ajudar no mantimento temporário da sanidade atual, mesmo que ocorram fenômenos naturais. Depois de algum tempo, o crucifixo quebrará e se tornará inútil, e a água benta terá efeito imediato, porém durará apenas algum tempo. •No início da Gameplay, o personagem começará com uma vela acesa (uma das velas que foram usadas no uso do tabuleiro Ouija) e terá que tomar cuidado para a vela não apagar, seja por causa da tempestade fora da Igreja, seja por causa dos fenômenos paranormais. •Caso a vela seja apagada, por quaisquer dos motivos acima, não se preocupe! Nós fornecemos um isqueiro e uma lanterna, que estão pela Igreja. Mas tome cuidado! Como o isqueiro funciona com gás e a cada uso parte do gás é consumido, o isqueiro tem a quantidade de usos limitado. E a lanterna, como funciona a pilhas, caso acabe as que já estão nela, você pode encontrar outras pelo caminho. Se não conseguir encontrar, bom, você já sabe o que lhe aguarda... •As luzes dos cômodos podem ser acesas, ou apagadas caso o demônio intervenha ou caso a tempestade rompa os cabos de energia. (Caso as luzes sejam religadas sozinhas ou caso você as consiga ligar, logo depois que elas foram desligadas, com certeza foi o demônio. Ou seja, pode ser considerado um fenômeno paranormal.) •Caso as perguntas sejam respondidas da maneira correta, mais um efeito será adicionado na trilha sonora, deixando-a mais apavorante e, consequentemente, deixando o jogador com mais medo. •Um sistema de “Conquistas” será adicionado, para que o jogador sempre jogue buscando obter todas elas. •Se o jogador responder até 3 perguntas de forma incorreta, ele perderá uma quantidade aleatória de sanidade a cada resposta errada, podendo chegar a 0 instantâneamente, até a terceira resposta dada, e, consequentemente, morrendo por este motivo. •Caso o jogador consiga se manter vivo até o final (se ele não morrer imediatamente no primeiro, segundo ou terceiro erro) ou responda de forma correta todas as perguntas feitas, o exorcismo no demônio é feito e ele consegue salvar seu amigo. •Em algumas perguntas específicas, você pode interagir com o tabuleiro Ouija para obter a resposta. Obs: Mas lembre-se que você perderá sanidade ao fazer isso. •Ao ver as perguntas e respostas escritas, sua sanidade também cairá, já que, se não é você quem está escrevendo-as, quem será? (considerado fenômeno sobrenatural.) •Não necessariamente, se você ouvir algum ruído do ambiente, significa que seja algum fenômeno. Pode ser consequência da tempestade no ambiente externo. (Portas fechando, janelas batendo, sino tocando, trovões.) Obs: Gritos, soluços, risadas, choros, batidas na porta, portas trancadas (não tem como uma igreja abandonada ter portas trancadas) são considerados fenômenos.
    • By FelipeCostaFT
      Estou iniciando uma startup para ajudar os devs a entrarem no mercado de trabalho mais preparados
      e, por isso, com maior chance de arrumar um bom emprego.

      Mas gostaria de saber como está sendo a realidade de vocês nesse momento de encarar o mercado.
      Alguém já está nessa fase ou até dentro do mercado poderia me ajudar? Esse forms dura 1 minuto pra
      responder e vai nos auxiliar a descobrir como ajudá-los a chegar lá mais rápido.
       
      link do forms
    • By MikeDaUmbrella
      Olá, boa noite.
      Alguém aqui pode me ajudar em fazer uma function ou um codigo simples para gerar e checar senhas usando o bcrypt.
      Agradeço.
      Um código para GERAR onde o resultado sai para uma varável (assim posso fazer para salvar no banco de dados)
      Um código para pegar via POST a senha e checar se é igual a senha salva do bcrypt.
    • By Ane_
      Olá gente.
       
      Não consigo abrir o arquivo de desenvolvimento de um aplicativo,
      que foi feito pela themeforest(o template).
      Será que ele não é compatível com as IDE's que eu tô tentando abrir, já tentei no:
       
      Notepad++ Visual Studio (Com o ionic instalado) Android Studio  
      Esse é um dos erros que aparecem:
       
      "the archive not is displayed in the editor because it is either binary or uses unsupported text encoding"
       
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.