Ajude nosso projeto a se manter online.

Par ou Ímpar em C++: Como programar

Neste tutorial, vamos aprender como programar o jogo do Par ou Ímpar, em C++, onde o usuário vai jogar contra o computador.

Par ou Ímpar em C++: Código comentado do Jogo

As variáveis 'jogador' e 'computador' vão armazenar, respectivamente, o número de vitórias suas e da máquina, respectivamente. A função placar() serve somente para exibir o placar, usando essas variáveis.

A função par_impar() serve para perguntar ao jogador se ele quer escolher par (deve digitar 0) ou ímpar (digitar 1), e retorna esse valor.

Na função jogada_humano(), o usuário vai escolher um número para jogar.
Na função jogada_computador(), a sua máquina vai sortear um número de 0 até 11, usando geração de números aleatórios.

Por fim, a função jogada() vai pegar qual opção o jogador escolheu (par ou ímpar), o número que o jogador lançou e o número que a máquina jogou. Ele vai somar esses números escolhidos e testar se é par (resto da soma deve ser 0) ou ímpar (resto da soma deve ser 1).
Ele avisa o resultado que deu, quem ganhou e incrementa a variável 'jogador' ou 'computador' corretamente, para exibição no placar.

Na main(), tem a variável 'continuar', para decidir se o jogo deve rodar novamente ou não.
A variável 'parimpar' recebe a opção do usuário, se quer PAR ou ÍMPAR.

O número que o jogador escolheu fica na variável 'num_jogador' e que a máquina sorteou fica na 'num_comp'.

Agora é só fazer a jogada e exibir o placar.
Para perguntar se o jogador deseja jogar mais uma vez e para garantir que ocorra pelo menos uma jogada, usamos o laço DO WHILE.

Código do jogo Par ou Ímpar em C++


#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

int jogador=0,
    computador=0;

void placar();          // Exibe o placar
int par_impar();        // Jogador diz se quer par ou ímpar
int jogada_humano();    // Humano escolhe numero
int jogada_computador();// Computador escolhe numero
void jogada(int parimpar, int jog, int comp); // Verifica quem ganhou

int main()
{
    int continuar=1,
        parimpar,
        num_jogador,
        num_comp;

    do{
        parimpar = par_impar();
        num_jogador = jogada_humano();
        num_comp = jogada_computador();
        jogada(parimpar, num_jogador, num_comp);

        placar();
        cout<<"\nJogar mais uma vez?"<<endl;
        cout<<"0. Sair"<<endl;
        cout<<"1. Jogar de novo"<<endl;
        cin >> continuar;

    }while(continuar);
    return 0;
}

int par_impar()
{
    int num;

    cout<<"\nPar ou ímpar? Digite:"<<endl;
    cout<<"0 para par"<<endl;
    cout<<"1 para ímpar"<<endl;
    cin >> num;

    return num;
}

int jogada_humano()
{
    int num;
    cout<<"\nDigite um número de 0 até 10:"<<endl;
    cin >> num;
    return num;
}

int jogada_computador()
{
    unsigned seed = time(0);
    srand(seed);

    return rand()%11;
}

void jogada(int parimpar, int jog, int comp)
{
    cout<<"\nJOGADA: "<<endl;
    cout<<"Humano    = "<<jog<<endl;
    cout<<"Máquina   = "<<comp<<endl;
    cout<<"Soma      = "<<(jog+comp)<<endl;
    cout<<"Resultado = ";

    if( (jog+comp)%2 == 0 )
        cout<<"PAR\n";
    else
        cout<<"ÍMPAR\n";

    if( (jog+comp)%2 == parimpar){
        cout<<"\nHumano ganhou!"<<endl;
        jogador++;
    }
    else{
        cout<<"\nMáquina ganhou!"<<endl;
        computador++;
    }

}


void placar()
{
    cout <<"\nPLACAR"<<endl;
    cout <<">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"<<endl;
    cout <<"Jogador: "<<jogador<<"\t Computador: "<<computador<<endl;
    cout <<"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"<<endl;
}

Você conseguiria incrementar e deixar nosso jogo mais robusto? Por exemplo, verificando se o usuário digitou um número de 0 até 10? Checando também se ele digita 0 ou 1, para continuar a jogar. Mais alguma falha ou ponto fraco, que você notou?

Um comentário:

  1. Ola meu nome é alyson eu estou aprendendo legal com o curso, tanto que fiz uma simples modificação no script, fazendo de player x cpu contra player x player.

    #include
    #include
    #include
    using namespace std;

    int jogador=0,
    jogador2=0;

    void placar();
    int par_impar();
    int jogada_humano();
    int jogada_computador();
    void jogada(int parimpar, int jog, int comp);

    int main()
    {
    int continuar=1,
    parimpar,
    num_jogador,
    num_comp;

    do{
    parimpar = par_impar();
    num_jogador = jogada_humano();
    num_comp = jogada_computador();
    jogada(parimpar, num_jogador, num_comp);

    placar();
    cout<<"\nJogar mais uma vez?"<> continuar;

    }while(continuar);
    return 0;
    }

    int par_impar()
    {
    int num;
    cout<<"+=================+"<> num;

    return num;
    }

    int jogada_humano()
    {
    int num;
    cout<<"\nJogador 1 Digite um numero de 0 a 10:"<> num;
    return num;
    }

    int jogada_computador()
    {
    int num;
    cout<<"\nJogador 2 Digite um numero de 0 a 10:"<> num;
    return num;
    }

    void jogada(int parimpar, int jog, int comp)
    {
    cout<<"\nJOGADA: "<<endl;
    cout<<"Jogador 1 = "<<jog<<endl;
    cout<<"Jogador 2 = "<<comp<<endl;
    cout<<"Soma = "<<(jog+comp)<<endl;
    cout<<"Resultado = ";

    if( (jog+comp)%2 == 0 )
    cout<<"PAR\n";
    else
    cout<<"IMPAR\n";

    if( (jog+comp)%2 == parimpar){
    cout<<"\nJogador 1 venceu!"<<endl;
    jogador++;
    }
    else{
    cout<<"\nJogador 2 venceu!"<<endl;
    jogador2++;
    }

    }


    void placar()
    {
    cout <<"\nPLACAR"<<endl;
    cout <<"+===================================+"<<endl;
    cout <<"Jogador 1: "<<jogador<<"\t Jogador 2: "<<jogador2<<endl;
    cout <<"+===================================+"<<endl;
    }

    ResponderExcluir