Ir ao conteúdo

Posts recomendados

Postado
// Ruliam dos Santos de Oliveira, J1, Jogo de perguntas e respostas


#include <iostream>
#include <string>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <math.h>
#include <windows.h>
// #include <locale.h>  Não funcionou

using namespace std;


int main(){
    char inicio;
    char nome [40];
    int pontos = 0;
    int erros = 0;
    char resp_1 = 'z';
    char resp_2 = 'z';
    char resp_3 = 'z';
    char resp_4 = 'z';
    char resp_5 = 'z';
    // setlocale(LC_ALL,"Portuguese");  Está tudo sem acento, porque o comando não funcionou

    string linha = "*-------------------------------------------------------------------------------*";
    cout << linha <<endl;
    cout << ("|                   Jogo de Perguntas e Respostas de Ruliam                     |\n");
    cout << linha <<endl;

    cout << "\nDigite seu nome" <<endl;
    cin >> nome;
    system("pause");
    system ("cls");

    cout << linha <<endl;
    cout << ("|                                     Questao 1                                 |") <<endl;
    cout << ("|                           Qual e a capital do Parana?                         |") <<endl;
    cout << linha <<endl;
    cout << endl;
    cout << linha <<endl;

    cout << ("| A) Joinville     | B) Curitiba       | C) Foz do Iguacu     | D) Brasilia     |") <<endl;
    cout << linha << endl;
    cout << "Escreva a letra correspondente" <<endl;
    cin >> resp_1;
        if((resp_1=='B')||(resp_1=='b')){
                pontos++;
                system("cls");
                system("color a7");
            cout << "voce acertou, parabens!" <<endl;
                system("pause");
        }
        else{
            erros++;
            system("cls");
            system("color 47");
            cout << "voce errou, estude mais um pouco da proxima vez :)" <<endl;
            system("pause");
        }
    system("cls");
    system("color 07");
    cout << linha <<endl;
    cout <<"|                                     Questao 2                                 |" <<endl;
    cout <<"|                                 Qual e o numero PI?                           |" <<endl;
    cout << linha << endl;
    cout << endl;

    cout << linha << endl;
    cout << "| A) 3,14          | B) 4,11            | C) 2,14            | D) 1,61          |" <<endl;
    cout << linha <<endl;
    cout << "Escreva a letra correspondente" <<endl;
    cin >> resp_2;
            if ((resp_2=='a')||(resp_2=='A')){
                pontos++;
                system("cls");
                system("color a7");
                    cout << "voce acertou, parabens!" <<endl;
                system("pause");
        }
            else{
            erros++;
            system("cls");
            system("color 47");
                cout << "voce errou, estude mais um pouco da proxima vez :)" <<endl;
            system("pause");
        }
    system("cls");
    system("color 07");
    cout<<linha<<endl;
    cout<<"|                                  Questao 3                                    |" <<endl;
    cout<<"|                               O camaleao e um:                                |" <<endl;
    cout<<linha<<endl;
    cout<<endl;

    cout<<linha<<endl;
    cout<<"| A) Anfibio       | B) Oviparo         | C) Mamifero        | D) Reptil        |"<<endl;
    cout<<linha<<endl;
    cout<<"Escreva a letra correspondente"<<endl;
    cin >> resp_3;
        if ((resp_3=='d')||(resp_3=='D')){
            pontos++;
            system("cls");
            system("color a7");
                cout << "voce acertou, parabens!" <<endl;
            system("pause");
        }
        else{
            erros++;
            system("cls");
            system("color 47");
                cout << "voce errou, estude mais um pouco da proxima vez :)" <<endl;
            system("pause");
        }
    system("cls");
    system("color 07");
    cout<<linha<<endl;
    cout<<"|                                   Questao 4                                   |"<<endl;
    cout<<"|                           Quem descobriu o Brasil?                            |"<<endl;
    cout<<linha<<endl;
    cout<<endl;

    cout<<linha<<endl;
    cout<<"| A) Pedro Alvares Cabral    | B) Dom Pedro II      | C) Napoleao Bonaparte     |"<<endl;
    cout<<linha<<endl;
    cout<<"Escreva a letra correspondente"<<endl;
    cin >> resp_4;
        if((resp_4=='a')||(resp_4=='A')){
            pontos++;
            system("cls");
            system("color a7");
                cout << "voce acertou, parabens!" <<endl;
            system("pause");
        }
        else{
            erros++;
            system("cls");
            system("color 47");
                cout << "voce errou, estude mais um pouco da proxima vez :)" <<endl;
            system("pause");
        }
    system("cls");
    system("color 07");
    cout<<linha<<endl;
    cout<<"|                                   Questao 5                                   |"<<endl;
    cout<<"|                    Em que ano comecou a Segunda Guerra Mundial                |"<<endl;
    cout<<linha<<endl;
    cout<<endl;

    cout<<linha<<endl;
    cout<<"| A) 1918           | B) 1945           | C) 1939           | D) 1914           |"<<endl;
    cout<<linha<<endl;
    cout<<"Escreva a letra correspondente"<<endl;
    cin >> resp_5;
        if((resp_5=='c')||(resp_4=='C')){
            pontos++;
            system("cls");
            system("color a7");
                cout << "voce acertou, parabens!" <<endl;
            system("pause");
        }
        else{
            erros++;
            system("cls");
            system("color 47");
                cout << "voce errou, estude mais um pouco da proxima vez :)" <<endl;
            system("pause");
        }
    system("cls");
    system("color 07");
    cout<<"*===========================*"<<endl;
    cout<<"| Muito obrigado por jogar! |"<<endl;
    cout<<"*===========================*"<<endl;

    cout<<"Nome: "<<nome<<endl;
    cout<<"Acertos: "<<pontos<<endl;
    cout<<"Erros: "<<erros<<endl;
    system("pause");
}

Olá, comecei a programar recentemente, e estou com uma duvida, eu estou criando um joguinho de teste, que toda vez que a pessoas acerta a resposta ocorre uma ação (com if e else), sempre uso os códigos dentro do if e else, ent gostaria de saber que não tem um método, tipo criar um comando que chamem esses comandos, porém só com uma linha, sem precisar sempre escrever o mesmo código dentro deles, e acabar ocupando mais espaço no código do que deveria.
Como já disse antes, comecei a programar recentemente ( 2 dias), e estou aceitando outras dicas no código tb, agradecido desde já.

  • Curtir 1
Postado

Sim. Você pode agrupar linhas de código e dar um nome, se chama função ou método. E essas funções podem ter argumentos.

 

Você tem um livro? Recomendo muito ter um livro.

 

Em C++ pode ir um pouco além e usar uma classe. Uma classe pode ter usas funções, esses blocos de código, e suas variáveis. E é uma cosia importante.

 

No seu caso imagine uma classe Pergunta: uma pergunta tem um texto, alternativas e uma resposta. Então você pode automatizar esse 🚝 de milhões de maneiras.

 

Digitei um exemplo em cima de seu programa pra você ter um exemplo de alguns comandos

 

Rode em seu computador e procure entender as diferenças.

#include <iomanip>
#include <iostream>
using namespace std;

class Pergunta
{
private:
    char resposta;
public:
    string  alt1;
    string  alt2;
    string  alt3;
    string  alt4;
    string  texto;

public:
    Pergunta(
        string questao,
        char r,
        string a1, string a2,
        string a3, string a4
    ) : texto(questao), resposta(r), alt1(a1),
        alt2(a2), alt3(a3), alt4(a4) {};

    int mostra()
    {   // mostra a pergunta, le a opcao e retorna 1
        // se o cara acertou
        char resp_1;
        cout << endl << texto << endl;
        cout << endl << 
            "| A) " << setw(16) << alt1 << endl <<
            "| B) " << setw(16) << alt2 << endl <<
            "| C) " << setw(16) << alt3 << endl <<
            "| D) " << setw(16) << alt4 << endl <<
            endl;
        cout << "Escreva a letra correspondente: ";
        cin >> resp_1;
        // se a letra veio minuscula muda para maiuscula
        // as letras vem em ordem: a..z e A..Z
        if ((resp_1 >= 'a') && (resp_1 <= 'd'))
            resp_1 = (resp_1 - 'a') + 'A';
        // convertida para maisucula, compara com a resposta
        if (resp_1 == resposta)
        {
            cout << "voce acertou, parabens!" << endl;
            return 1;
        };
        cout << "voce errou, estude mais um pouco da proxima vez :)" << endl;
        return 0;
    };  // mostra()
};  // classe Pergunta

int main()
{
    Pergunta Q1("Qual a capital do Parana?", 'B',
        "Joinville", "Curitiba", "Foz do Iguacu", "Brasilia");
    Pergunta Q2("Qual o numero PI?", 'A',
        "3,14", "4,11", "2,14", "1,61");
    int pontos = 0;
    pontos = pontos + Q1.mostra() + Q2.mostra();
    cout << endl << "voce terminou com " << pontos << " ponto (s)!" << endl;
    return 0;
};

Aí no main() você vê que um jeito de entrar com a questão pode ser direto na hora de criar. Assim não precisa repetir aquele código de alinhar as opções por exemplo. E se mudar ali muda para todas as questões, que eu acho que é o que você queria saber como.

 

A função mostra() retorna 1 ou 0 então já pode ir somando em pontos

 

Não é um exemplo sério. Apenas para você ver alguns mecanismos

 

Veja o que sai na tela


Qual a capital do Parana?

| A)        Joinville
| B)         Curitiba
| C)    Foz do Iguacu
| D)         Brasilia

Escreva a letra correspondente: a
voce errou, estude mais um pouco da proxima vez :)

Qual o numero PI?

| A)             3,14
| B)             4,11
| C)             2,14
| D)             1,61

Escreva a letra correspondente: B
voce errou, estude mais um pouco da proxima vez :)

voce terminou com 0 ponto (s)!

 

 

 

 

  • Obrigado 1
Postado

@arfneto Opa, não tenho um livro não, mas vou procurar por um, obrigado pela dica. Eu li o código que você me mandou algumas vezes, pesquisei o que não sabia e creio que entendi ele, amanhã tentarei reescrever ele com base no que vi no seu, muito obrigado pela ajuda.

  • Curtir 1
Postado
14 minutos atrás, Ruliam Oliveira disse:

@arfneto Opa, não tenho um livro não, mas vou procurar por um, obrigado pela dica. Eu li o código que você me mandou algumas vezes, pesquisei o que não sabia e creio que entendi ele, amanhã tentarei reescrever ele com base no que vi no seu, muito obrigado pela ajuda.

:)

você já está em um forum. Rodou o programa em sua máquina? Tem algo específico que não entendeu naquilo? Esse é um forum frequentado por iniciantes então sua eventual dúvida pode ajudar outros, aqui mesmo

 

  • Amei 1
Postado
5 horas atrás, arfneto disse:

if ((resp_1 >= 'a') && (resp_1 <= 'd')) resp_1 = (resp_1 - 'a') + 'A';

Rodei o arquivo sim, e consegui entender, e o que não entendi pesquisei. A unica coisa que me mati um pouco foi nessa parte do ">='a' e <='d'". E "- 'a') + 'A';"

Postado
7 minutos atrás, Ruliam Oliveira disse:

Rodei o arquivo sim, e consegui entender, e o que não entendi pesquisei. A unica coisa que me mati um pouco foi nessa parte do ">='a' e <='d'". E "- 'a') + 'A';

 

Eu deixei um comentário lá mas era meio resumido :(  Entenda que o que faltava fazer ali era converter a resposta para maiúscula ou minúscula antes de comparar com a que estava na questão. Tem um milhão de maneiras de fazer isso, já que o programa é nosso. Podia cadastrar mais de uma resposta, chamar uma função, testar as letras uma a uma, sei lá.

 

No entanto as letras tem um valor, um código. E estão lá uma depois da outra: ('A'+ 1) é 'B', ('A' + 4) é 'D' e assim por diante para as 26 letras. Então se uma letra var é minúscula e eu sei que 'a' é a primeira, então (var - 'a') é a posição dela, sequencial no alfabeto, 'a' vale zero, 'z' vale 26. 

 

E assim se eu pegar a posição dela e somar com 'A' eu vou ter a maiúscula correspondente.

 

Você podia ter usado cout e mostrado o valor lá das parcelas e acho que ia entender.

 

É só uma maneira de converter a letra --- somente se for a,b,c ou d --- para a maiúscula antes de comparar com a resposta

image.png.b89a8cdfa382837e6e4b883498a90a6e.png

 

porque as respostas foram colocadas em maiúscula.

 

Na verdade o certo é colocar as respostas na classe e não ficar convertendo toda hora. Esse programa era só pra você ver umas construções comuns nessa linguagem.

 

  • Amei 1

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...