Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Gabriela Alves de Sousa

Jogo da Velha C++

Recommended Posts

Boa tarde pessoal, estou fazendo um Jogo da Velha em C++, o código já está todo pronto e o jogo rodando, porém quando eu digito o ultimo comando o O ou o X não aparece no tabuleiro, já diz direto o ganhador. Se puderem me dizer o erro ficarei muito grata. 

 

O código está assim: 

 

#include <iostream>
#include <stdlib.h>
using namespace std;

//Variáveis
string Titulo = "<<<< JOGO DA VELHA >>>>\n\n";
int Continuar;
const int Tam=11, pos = 3;//
char Mapa[Tam][Tam];
char tabuleiro [pos][pos];
char vazio=' ';
char cerquilha='#';
char jogador1='O', jogador2='X';
bool gameOver;
int jogadorAtual=1;
int Jogada;
bool jogadaValida;
int ganhou=false;
int NumeroDeJogadas=0;
char A, B, C, D, E, F, G,H;

void menu()
{
    //Desenhando o título
    cout<<Titulo;
    //Especificação dos jogadores
    cout<<"Jogador 1: O\t";
    cout<<"Jogador 2: X\n\n";
    //Confirmação de continuação
    cout<<"Digite 1 para continuar ou 0 para sair...";
    cin>>Continuar;

}

void inicializar()
{
    //Tabuleiro
    for (int i=0;i<Tam;i++)
    {
        for(int j=0;j<Tam;j++)
        {
            tabuleiro[j]=vazio;
        }
    }


    //Mapa
    for (int i=0;i<Tam;i++)
    {
        for(int j=0;j<Tam;j++)
        {
            //Espaços
            Mapa[j]=vazio;

            //cerquilha

            if((i==3)||(i==7)||(j==3)||(j==7))
                Mapa[j] = cerquilha;
        }
    }
}

void desenharJogo()
{

    system("cls");

    //Desenhar título
    cout<<Titulo;

    //Desenhar tabuleiro
    for(int i=0;i<Tam;i++)
    {
        for(int j=0;j<Tam;j++)
        {
            cout<<Mapa[j]<<" ";
        }
        cout<<endl;
    }

    //Pedir comando
    cout<<"\nJogador da Rodada: ";
    if(jogadorAtual == 1)
        cout<<"O"<<endl;
    else
        cout<<"X"<<endl;

    cout<<"Jogada: ";
    cin>>Jogada;

    while(Jogada/10<0 || Jogada/10>=4 || Jogada%10<0 || Jogada%10>=4 || tabuleiro[(Jogada/10)-1][(Jogada%10)-1]!=vazio)
    {
        cout<<"Jogada invalida. Tente novamente: ";
        cin>>Jogada;
    }
    jogadaValida=true;
    //NumeroDeJogadas++;
}

void comando()
{
    //Preenchimento do tabuleiro
    cout<<"\nJogador da Rodada: ";
    if(jogadorAtual == 1)
        tabuleiro[Jogada/10-1][Jogada%10-1]='O';
    else
        tabuleiro[Jogada/10-1][Jogada%10-1]='X';


    //Preenchimento do Mapa
    for(int i=0; i<pos; i++)
    {
        for(int j=0; j<pos; j++)
        {
            Mapa[1+4*i][1+4*j]=tabuleiro[j];
        }
    }

    jogadorAtual = jogadorAtual*(-1);
}

void ganhador()
{
    A=((tabuleiro[0][0]==tabuleiro[0][1])&&(tabuleiro[0][1]==tabuleiro[0][2])&&(tabuleiro[0][0]!=vazio));
    B=((tabuleiro[1][0]==tabuleiro[1][1])&&(tabuleiro[1][1]==tabuleiro[1][2])&&(tabuleiro[1][0]!=vazio));
    C=((tabuleiro[2][0]==tabuleiro[2][1])&&(tabuleiro[2][1]==tabuleiro[2][2])&&(tabuleiro[2][0]!=vazio));
    D=((tabuleiro[0][0]==tabuleiro[1][0])&&(tabuleiro[1][0]==tabuleiro[2][0])&&(tabuleiro[0][0]!=vazio));
    E=((tabuleiro[0][1]==tabuleiro[1][1])&&(tabuleiro[1][1]==tabuleiro[2][1])&&(tabuleiro[0][1]!=vazio));
    F=((tabuleiro[0][2]==tabuleiro[1][2])&&(tabuleiro[1][2]==tabuleiro[2][2])&&(tabuleiro[0][2]!=vazio));
    G=((tabuleiro[0][0]==tabuleiro[1][1])&&(tabuleiro[1][1]==tabuleiro[2][2])&&(tabuleiro[0][0]!=vazio));
    H=((tabuleiro[0][2]==tabuleiro[1][1])&&(tabuleiro[1][1]==tabuleiro[2][0])&&(tabuleiro[0][2]!=vazio));

    //verificando o ganhador na horizontal
    if (A)
    {
        gameOver=true;
    }
    else if (B)
    {
        gameOver=true;
    }
    else if (C)
    {
        gameOver=true;
    }

    //verificando ganhador na vertical
    if(D)
    {
        gameOver = true;
    }
    else if(E)
    {
        gameOver = true;
    }
    else if(F)
    {
        gameOver = true;
    }

    //verificando ganhador na diagonal
    if(G)
    {
        gameOver=true;
    }
    else if(H)
    {
        gameOver = true;
    }

    //verificando se deu velha
    if (NumeroDeJogadas==9 && !(A)&&!(B)&&!(C)&&!(D)&&!(E)&&!(F)&&!(G)&&!(H))
    {
            gameOver = true;
            cout<<"Deu Velha \n";

    }
    if(NumeroDeJogadas%2!=0)
        {
           cout<<"Jogador 1 venceu";
        }
        else
        {
            cout<<"Jogador 2 venceu";
        }

}

void jogo()
{
    inicializar();
    NumeroDeJogadas=0;
    while(!(gameOver))
    {
        desenharJogo();
        comando();
        NumeroDeJogadas++;
        ganhador ();
    }

}

int main ()
{
    system("color e2");
    menu();//Função para desenhar o menu

    if(Continuar==0)
        return 0;


    jogo();
    char novo;
    while (novo!='n')
    {
        cout<<"\nDigite 's' para jogar novamente e 'n' para finalizar o jogo ";
        cin>>novo;
        if(novo=='s')
           {
               jogo();
           }
    }
}

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Passe por aqui primeiro. Aumentará suas chances de obter resposta.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×