LEANDRO VEIGA Postado Julho 13, 2018 Denunciar Share Postado Julho 13, 2018 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; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Visitante Postado Outubro 16, 2018 Denunciar Share Postado Outubro 16, 2018 (editado) 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 Outubro 17, 2018 por Visitante Ajuste no código Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
LEANDRO VEIGA
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.
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
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.