Jump to content
Marcosdev

(Duvidas) Jogo da Forca em C++

Recommended Posts

Estou começando na programação e tenho algumas dúvidas sobre esse código do jogo da forca:

 

#include <iostream>
#include <stdlib.h>

using namespace std;

 

int main() {
    char entrada[21]; //Palavra secreta
    char letra[1]; //Letra que a pessoa digitou
    char letras[30]; //Letras
    char secreta[21]; //A letra certa e sua posição
    int tam; //O tamanho da palavra vai ser igual a ENTRADA
    int i; //(indice) Necessario pq vai usar array
    int chances; // Quando acabar elas acaba o jogo
    int acertos; // O numero de acertos equivale ao TAM
    bool verificacao; // Verifica se a pessoa digitou uma letra certa ou errada
    string dica;

    chances=6;
    tam=0;
    i=0;
    verificacao=false;
    acertos=0;


    cout << "O que seu adversario vai adivinhar? " << "\n";
    cin >> entrada;
//comando limpar tela
    system("cls");


    cout << "Dica: ";
    cout << dica;
    cin >> dica;

// O indice vai percorrer ENTRADA até o /0 (enter) pra verificar se tá certo e a posição
//Char de arrays devem sempre terminar em /0
    while(entrada != '\0') {
        i++; // O i vai percorrer a "entrada" de um por um,e que ainda não é o /0
        tam++; // Cada palavra certa vai adicionar +1 em TAM, desde que i não seja o enter
    }

//Vou preencher a "entrada" com asteristicos e cada palavra certa vai ser -1 asteristico
    for(i=0 ; i<21 ; i++) {
         //Enquanto i for menor que 21, i de secreta vai aparecer com *
    }

//Enquanto o jogador tiver chances e acertos diferente de tam, irá aparecer as chances e palavras acertadas na tela
inicio:
    while((chances > 0)&&(acertos < tam)){
        cout << "Chances Restantes: " << chances << "\n";
        cout << "Palavra Secreta: ";
        for(i=0 ; i<tam ; i++) {
            cout << secreta;
        }
//O jogador vai digitar
        cout << "\n\n" << "Digite uma letra: ";
        cin >> letra[0]; //Armazenar na posição 0

        // Se já tiver usado a letra, goto volta pro o inico
        for(i=0 ; i<tam ; i++){
            if(letras == letra[0]) {
                system("cls");
                cout << "\nLetra ja usada! \n";
                goto inicio;
            } else {
                letras=letra[0];
            }
        }

        for(i=0 ; i<tam ; i++) {
            if(entrada==letra[0]) {
                verificacao=true;
                // A letra dá posição vai ser copiada para secreta se for certa
                secreta=entrada;
                acertos++; // incrementa o total de acertos
            }
        }
//Se acerto for igual a falso "not acerto = !acerto" diminui o numero de chances
        if(!verificacao) {
            chances--;
        }
        verificacao=false;
        system("cls");

        if(verificacao=false) {
            system("cls");
            cout << letra[0];
        }
    }
    
    if(acertos==tam) {
        cout << "O jogador ganhou! ";
    } else {
        cout << "O jogador perdeu! ";
    }

    system("pause");
    return 0;
}

Share this post


Link to post
Share on other sites

1. Por que é necessário criar dois vetores para a palavra que vai ser adivinhada (entrada, secreta )?

2. Tentei remover for(i=0 ; i<21 ; i++), e tentei criar só um "for" assim:

 for(i=0 ; i<tam ; i++) {
        secreta='*'
        cout << secreta;  }

mas dessa forma quando acerta uma letra ele não troca o asterisco pela letra que acertou, por que?

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 Sharank
      Strcat Function In C++
       
      I'm new to C and C++ programming, can anyone give me a hint on what I'm doing wrong here. I'm trying to write to concat function that takes to pointers to chars and concatenates the second to the first. The code does do that, but the problem is that it adds a bunch of junk at the end.
       
      For instance, when passing the arguments - "green" and "blue", the output will be "greenblue" plus a bunch of random characters. I also wrote the strlen function that strcat uses, which I will provide below it for reference. I'm using the online compiler at InterviewBit The exact instructions and specification is this:
       
      int main(int argc, char** argv)
      {
      const int MAX = 100;
       
      char s1[MAX];
      char s2[MAX];
       
      cout << "Enter your first string up to 99 characters. ";
      cin.getline(s1, sizeof(s1));
      int size_s1 = strlen(s1);
      cout << "Length of first string is " << size_s1 << "\n";
       
      cout << "Enter your second string up to 99 characters. ";
      cin.getline(s2, sizeof(s2));
      int size_s2 = strlen(s2);
      cout << "Length of second string is " << size_s2 << "\n";
      cout << " Now the first string will be concatenated with the second
      string ";
      char* a = strcat(s1,s2);
       
      for(int i = 0; i<MAX; i++)
      cout <<a;
       
      // system("pause");
      return 0;
      }
       
      //strcat function to contatenate two strings
      char* strcat(char *__s1, const char *__s2)
      {
      int indexOfs1 = strlen(__s1);
      int s2L = strlen(__s2);
      cout <<s2L << "\n";
      int indexOfs2 = 0;
      do{
      __s1[indexOfs1] = __s2[indexOfs2];
      indexOfs1++;
      indexOfs2++;
      }while(indexOfs2 < s2L);
       
       
      return __s1;
      }
       
      //Returns length of char array
      size_t strlen(const char *__s)
      {
      int count = 0;
      int i;
      for (i = 0; __s != '\0'; i++)
      count++;
      return (count) / sizeof(__s[0]);
       
      }
    • By theuz bergles
      QUERO CRIAR UM GAME, MAS NÃO TENHO CONHECIMENTO PARA TAL.
       
      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 roberson abalaid
      #include <stdio.h>
      #include <stdlib.h>
      int arr[3][5];
      int main(){
          
          printf("Favor inserir os dados...\n");
          
          for(int i = 0; i < 3; i++){
              for(int j = 0; j < 5; j++){
                  scanf("%d", &arr[j]);
              }
          }
          
            printf("os valores inseridos foram...\n");
          
          for(int i = 0; i < 3; i++){
              for(int j = 0; j < 5; j++){
                  printf("  %d  ", arr[j]);
              }
              printf("\n");
          }
          return 0;
      }
    • By guialacerda
      Olá pessoal, alguém sabe um editor que eu possa fazer alterações em um tema no formato Plone? No wordpress eu instalo o xampp e eu consigo fazer as alterações e visualizar no meu computador, já no Plone eu não entendo quase nada.
    • 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.
×

Important Information

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