1- O código abaixo exibe o jogo da velha programado em aula, porém faltam dois trechos de código, as funções de imprimeMatriz e de verificaVitoria; Escreva essas funções para que as mesmas funcionem de maneira integrada com o código fornecido.
int main() {
setlocale(LC_ALL,"Portuguese");
string nomel , nome2;
char simboll= 'x', simbol2 = 'о', mat [3][3] = {' ', ' ',' ',' ',' ',' ',' ',' ',' '};
int cont=0, linha, coluna;
cout<<"Informe o nome do primeire jogador: ";
getline(cin, nomel);
cout<<"Informe o nome do segundo jegador: ";
getline(cin, nome2);
cout << nomel << " joga com o " << simboll <<endl<< nome2 << " joga com \circ" << simbol2;
Sleep(1000);
while(cont<9) {
imprimirmatriz( mat);
cout<<"Faca sua jogada, escolha sua linha!";
cin>>linha;
cout<<"Faca sua jogada, escolha sua coluna!";
cin>>coluna;
if(mat[linha][coluna]== ' ' && linha<3 && coluna<3) {// xalida se, 0 lugax escolbidQ esta}disponive
if (cont%2==0){// jodadas pares pador l, jogadas jwpares jogador2;
mat[linha][coluna] = simboll;
} else {
mat[linha][coluna] = simbol2;
}
if(verificaVitoria(mat)) {
if (cont%2==0){
cout<<nomel<<" yocê ganhou!!";
break;
} else {
cout<<nome2<<" yocê ganhou!!";
break;
}
}
cont++;//passa para p'roxima jogada
}else {
cout << "posicap invalida, digite novamente";
}
}//fim while
cout << "fim";
return 0;
}
int main() {
setlocale(LC_ALL,"Portuguese");
string nomel , nome2;
char simboll= 'x', simbol2 = 'о', mat [3][3] = {' ', ' ',' ',' ',' ',' ',' ',' ',' '};
int cont=0, linha, coluna;
cout<<"Informe o nome do primeire jogador: ";
getline(cin, nomel);
cout<<"Informe o nome do segundo jegador: ";
getline(cin, nome2);
cout << nomel << " joga com o " << simboll <<endl<< nome2 << " joga com \circ" << simbol2;
Sleep(1000);
while(cont<9) {
imprimirmatriz( mat);
cout<<"Faca sua jogada, escolha sua linha!";
cin>>linha;
cout<<"Faca sua jogada, escolha sua coluna!";
cin>>coluna;
if(mat[linha][coluna]== ' ' && linha<3 && coluna<3) {// xalida se, 0 lugax escolbidQ esta}disponive
if (cont%2==0){// jodadas pares pador l, jogadas jwpares jogador2;
mat[linha][coluna] = simboll;
} else {
mat[linha][coluna] = simbol2;
}
if(verificaVitoria(mat)) {
if (cont%2==0){
cout<<nomel<<" yocê ganhou!!";
break;
} else {
cout<<nome2<<" yocê ganhou!!";
break;
}
}
cont++;//passa para p'roxima jogada
}else {
cout << "posicap invalida, digite novamente";
}
}//fim while
cout << "fim";
return 0;
}
Passo 1
O enunciado fornece um
main
que gerencia o fluxo do jogo da velha usando uma matriz char mat[3][3]
e pede para completarmos duas funções:imprimirmatriz(char mat[3][3])
— exibir o tabuleiro na tela.verificaVitoria(char mat[3][3])
— testar se alguém venceu (três símbolos iguais em linha, coluna ou diagonal).
Vamos usar laços de repetição para percorrer a matriz, condicionais para montar o desenho do tabuleiro e checar as 8 possíveis linhas de vitória.
Passo 2
Para
– Um loop for em
– Dentro, outro loop for em
– Após cada linha, exceto a última, imprimimos uma linha de traços
No fim damos um
imprimirmatriz
faremos:– Um loop for em
i
de 0 a 2 para as linhas.– Dentro, outro loop for em
j
de 0 a 2 para as colunas, imprimindo mat[i][j]
e, se não for a última coluna, um separador " | "
.– Após cada linha, exceto a última, imprimimos uma linha de traços
"\n—+—+—\n"
.No fim damos um
cout << endl;
.Passo 3
Para
– Cada uma das 3 linhas: se
– Cada uma das 3 colunas: se
– As duas diagonais: se
Se qualquer condição for verdadeira, retornamos
verificaVitoria
testamos:– Cada uma das 3 linhas: se
mat[i][0] != ' '
e mat[i][0] == mat[i][1] == mat[i][2]
.– Cada uma das 3 colunas: se
mat[0][j] != ' '
e mat[0][j] == mat[1][j] == mat[2][j]
.– As duas diagonais: se
mat[0][0] != ' '
e mat[0][0] == mat[1][1] == mat[2][2]
; e se mat[0][2] != ' '
e mat[0][2] == mat[1][1] == mat[2][0]
.Se qualquer condição for verdadeira, retornamos
true
; caso contrário false
.Passo 4
Integrando com o
main
, basta colocar essas funções antes do main
ou em um arquivo de cabeçalho, garantindo que a assinatura seja exatamentevoid imprimirmatriz(char mat[3][3]);
bool verificaVitoria(char mat[3][3]);
Resposta
#include <iostream>
using namespace std;
void imprimirmatriz(char mat[3][3]) {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
cout << mat[i][j];
if (j < 2) cout << " | ";
}
cout << '\n';
if (i < 2) cout << "—+—+—\n";
}
cout << endl;
}
bool verificaVitoria(char mat[3][3]) {
// checa linhas
for (int i = 0; i < 3; i++) {
if (mat[i][0] != ' ' &&
mat[i][0] == mat[i][1] &&
mat[i][1] == mat[i][2]) {
return true;
}
}
// checa colunas
for (int j = 0; j < 3; j++) {
if (mat[0][j] != ' ' &&
mat[0][j] == mat[1][j] &&
mat[1][j] == mat[2][j]) {
return true;
}
}
// checa diagonal principal
if (mat[0][0] != ' ' &&
mat[0][0] == mat[1][1] &&
mat[1][1] == mat[2][2]) {
return true;
}
// checa diagonal secundária
if (mat[0][2] != ' ' &&
mat[0][2] == mat[1][1] &&
mat[1][1] == mat[2][0]) {
return true;
}
return false;
}
Por fim, basta manter seu
main
conforme fornecido para que o jogo funcione corretamente.