Ir para conteúdo
Fórum Script Brasil
  • 0

dificuldade no exercicio jogo da velha


LEANDRO VEIGA

Pergunta

Escreva um programa completo em C++, do jogo da velha.

 O jogador, usuário do programa, jogará contra o computador.

 Defina com clareza todas as variáveis e estruturas que for utilizar. Comente seu código sempre que necessário.

 O programa deve ser modularizado, ou seja, dividido em funções.

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

void JogadorJoga(char V[][3]){
int linha;
int coluna;
cout<< "Informe de 1 a 3 a linha que deseja jogar";
cin>> linha;
cout<< "Informe de 1 a 3 a coluna que deseja jogar";
cin>> coluna;
V[linha][coluna]= 'x';
}

void VerificaSeGanhou(){

{
int i;
int V[i][0];
for(i=0;i<3;i++) 
if(V[i][0]==V[i][1] && V[i][0]==V[i][2]); 
for(i=0;i<3;i++); 
if(V[0][i]==V[1][i] && V[0][i]==V[2][i]); 
if(V[0][0]==V[1][1] && V[1][1]==V[2][2]); 
if(V[0][2]==V[1][1] && V[1][1]==V[2][2]);

}
}
void ComputadorJoga(char V[][3]){
int linha,coluna;
do{

linha=rand()%3;
coluna=rand()%3;
}while (V[linha][coluna]!=' ');
V[linha][coluna]='o';
}


void InicializarVelha(char V[][3]){
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
V[i][j] = ' ';
}





int main(){
srand(time(NULL));
char Velha[3][3];
void InicializarVelha(char V[][3]);
void ComputadorJoga(char V[][3]);
void JogadorJoga(char V[][3]);
void VerificaSeGanhou(char V[][3]);

while (jogadas<9){




}
return 0;

 

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Olá @LEANDRO VEIGA Para te orientar um pouco sobre como resolver esse exercício resolvi postar um código de um joguinho da velha entre dois jogadores feito em C++

A ideia, ao fazer isso, é para te orientar, principalmente, na forma de criar as funções para esse seu exercício. Claro q não vou postar o exercício resolvido de um jogo entre o usuário e o computador, mas tenho certeza q se você entender como estou definindo as funções no código abaixo e fazendo uso das mesmas dentro do loop principal do jogo, onde você vai ter que intercalar entre a jogada do usuário e a jogada do computador até q um vença ou dê empate

Não vejo esse código abaixo como te dar um exercício resolvido, tanto porque isso vai contra a ideia aqui do fórum q tem como foco o aprendizado

Você pode fazer como está pensando em fazer, usando uma variável para controlar a quantidade de jogadas e, se for igual a 9, seria empate, mas perceba q você também pode fazer uso de uma função que verifica se o tabuleiro está cheio ou não (é apenas uma ideia)

Segue o código e procura entender tudo q é feito no mesmo, isso porque você vai precisar comentar cada parte do código e aí, para fazer isso, vai ter que entender o que está sendo feito:

#include <iostream>
#include <string>
#include <vector>
#include <clocale>
#include <cstdlib>
using namespace std;

char matriz[3][3];

void mostrar_tabuleiro();
void zerar_tabuleiro();
bool tabuleiro_completo();
bool sequencia_encontrada();
void iniciar_jogo();
int efetuar_jogada(char simbolo);

void iniciar_jogo()
{
    string nome;
    string vencedor;
    vector<string> jogadores;
    vector<char> simbolos;
    char simbolo;

    system("cls");

    cout << "=======================" << endl;
    cout << "==|  JOGO DA VELHA  |==" << endl;
    cout << "=======================\n" << endl;

    cout << "INFORME O NOME DO JOGADOR 1: ";
    getline(cin, nome);
    jogadores.insert(jogadores.end(), nome);
    simbolos.insert(simbolos.end(), 'X');

    cout << "INFORME O NOME DO JOGADOR 2: ";
    getline(cin, nome);
    jogadores.insert(jogadores.end(), nome);
    simbolos.insert(simbolos.end(), 'O');

    bool finalizado = false;

    int index_jogador_atual = 0;

    vencedor = " ";

    zerar_tabuleiro();

    while (!finalizado) {

        system("cls");

        mostrar_tabuleiro();

        cout << "\nÉ a vez do jogador " << jogadores.at(index_jogador_atual) << endl;

        simbolo = simbolos.at(index_jogador_atual);

        efetuar_jogada(simbolo);

        if (sequencia_encontrada()) {
            vencedor = jogadores.at(index_jogador_atual);
            finalizado = true;
        }
        else if (tabuleiro_completo())
            finalizado = true;

        index_jogador_atual = (index_jogador_atual + 1) % jogadores.size();
    }

    system("cls");
    mostrar_tabuleiro();

    if (vencedor == " ")
        cout << "\n   O Jogo terminou empatado!\n" << endl;
    else
        cout << "\n   O jogador " << vencedor << " ganhou!\n" << endl;

    cout << endl;

    jogadores.clear();

    simbolos.clear();
}

int main() {

    string opcao;

    setlocale(LC_ALL, "Portuguese");

    system("title Jogo da Velha");

    do {
        iniciar_jogo();

        cout << "Deseja jogar novamente? [s/n]: ";
        getline(cin, opcao);

    } while (!opcao.compare("s"));

    cout << "\n\nFim de Jogo!\n" << endl;

    return 0;
}

void zerar_tabuleiro() {
    for (int i = 0; i < 3; i++)
        for (int j = 0; j < 3; j++)
            matriz[i][j] = ' ';
}

void mostrar_tabuleiro()
{
    char buffer[150];

    cout << "\n\n";
    for (int i = 0; i < 3; i++) {

        cout << "\t   " << matriz[i][0] << " | " << matriz[i][1] << " | " << matriz[i][2] << endl;
        if (i < 2)
            cout << "\t  ---|---|---" << endl;
    }
    cout << "\n\n";
}

bool tabuleiro_completo()
{
    for (int i = 0; i < 3; i++)
        for (int j = 0; j < 3; j++)
            if (matriz[i][j] == ' ')
                return false;
    return true;
}

bool sequencia_encontrada()
{
    // linhas
    for (int i = 0; i < 3; i++) {
        if (matriz[i][0] ==  matriz[i][1] && matriz[i][1] == matriz[i][2] && matriz[i][0] != ' ') {
            cout << "Linha" << endl;
            return true;
        }
    }
    // colunas
    for (int i = 0; i < 3; i++) {
        if (matriz[0][i] ==  matriz[1][i] && matriz[1][i] == matriz[2][i] && matriz[0][i] != ' ')
            return true;
    }
    // diagonais
    if (matriz[0][0] ==  matriz[1][1] && matriz[1][1] == matriz[2][2] && matriz[0][0] != ' ')
        return true;
    if (matriz[0][2] ==  matriz[1][1] && matriz[1][1] == matriz[2][0] && matriz[0][2] != ' ')
        return true;

    return false;
}


int efetuar_jogada(char simbolo)
{
    int jogada = 0;
    int i, j;

    do
    {
        cout << endl;

        cout << "LINHA: ";
        cin >> i;
        cin.get();

        cout << "COLUNA: ";
        cin >> j;
        cin.get();

        if ((i < 1 || i > 3) || (j < 1 || j > 3)) {
            cout << "\nERRO: Jogada inválida!" << endl;
            jogada = 0;
            continue;
        }
        else
            jogada = 1;

        if (matriz[i - 1][j - 1] != ' ') {
            cout << "\nERRO: Essa jogada já foi realizada!" << endl;
            jogada = 0;
            continue;
        }
        else
            jogada = 1;

    } while (!jogada);

    return matriz[i - 1][j - 1] = simbolo;
}

Creio q agora, se entender o que está sendo feito nesse jogo, não terá maiores dificuldades para resolver o exercício

Como a ideia aqui é aprender, fique a vontade para perguntar o que quiser, ok? 

OBS: Fiz uma atualização no código melhorando o nome das funções

 

Editado por Visitante
Ajuste no código
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...