Boa noite!!
Terminei um programa que verifica o status de um jogo da velha, porém, usei muito ifs e elses, poderiam me ajudar a diminuir esses comandos usando mais os laços for e while.
static int verificaStatus(char[][] tabuleiro) {
int status = -1;
int vazio = 0;
int vencedor1 = 1;
int vencedor2 = 2;
int empate = 3;
int andamento = 4;
// Checar tabuleiro vazio
if ( tabuleiro[0][0]==' ' && tabuleiro[1][0]==' ' && tabuleiro[2][0]==' '
&& tabuleiro[0][1]==' ' && tabuleiro[1][1]==' ' && tabuleiro[2][1]==' '
&& tabuleiro[0][1]==' ' && tabuleiro[1][1]==' ' && tabuleiro[2][1]==' '){
status = vazio;
return status;
}
//Checar X verticalmente
if(tabuleiro[0][0] == 'X' && tabuleiro[1][0] == 'X' && tabuleiro [2][0] == 'X'){
status = vencedor1;
return status;
}
else if(tabuleiro[0][1] == 'X' && tabuleiro[1][1] == 'X' && tabuleiro[2][1] == 'X'){
status = vencedor1;
return status;
}
else if(tabuleiro[0][2] == 'X' && tabuleiro[1][2] == 'X' && tabuleiro[2][2] == 'X'){
status = vencedor1;
return status;
}
//Checar X horizontalmente
else if(tabuleiro[0][0] == 'X' && tabuleiro[0][1] == 'X' && tabuleiro[0][2] == 'X'){
status = vencedor1;
return status;
}
else if(tabuleiro[1][0] == 'X' && tabuleiro[1][1] == 'X' && tabuleiro[1][2] == 'X'){
status = vencedor1;
return status;
}
else if(tabuleiro[2][0] == 'X' && tabuleiro[2][1] == 'X' && tabuleiro[2][2] == 'X'){
status = vencedor1;
return status;
}
//Checar X diagonalmente
else if(tabuleiro[0][0] == 'X' && tabuleiro[1][1] == 'X' && tabuleiro[2][2] == 'X'){
status = vencedor1;
return status;
}
else if(tabuleiro[0][2] == 'X' && tabuleiro[1][1] == 'X' && tabuleiro[2][0] == 'X'){
status = vencedor1;
return status;
}
//Checar O verticalmente
if(tabuleiro[0][0] == 'O' && tabuleiro[1][0] == 'O' && tabuleiro [2][0] == 'O'){
status = vencedor2;
return status;
}
else if(tabuleiro[0][1] == 'O' && tabuleiro[1][1] == 'O' && tabuleiro[2][1] == 'O'){
status = vencedor2;
return status;
}
else if(tabuleiro[0][2] == 'O' && tabuleiro[1][2] == 'O' && tabuleiro[2][2] == 'O'){
status = vencedor2;
return status;
}
//Checar O horizontalmente
if(tabuleiro[0][0] == 'O' && tabuleiro[0][1] == 'O' && tabuleiro[0][2] == 'O'){
status = vencedor2;
return status;
}
else if(tabuleiro[1][0] == 'O' && tabuleiro[1][1] == 'O' && tabuleiro[1][2] == 'O'){
status = vencedor2;
return status;
}
else if(tabuleiro[2][0] == 'O' && tabuleiro[2][1] == 'O' && tabuleiro[2][2] == 'O'){
status = vencedor2; // Status está recebendo o valor do vencedor 2 que é a peça O.
return status;
}
//Checar O diagonalmente
if(tabuleiro[0][0] == 'O' && tabuleiro[1][1] == 'O' && tabuleiro[2][2] == 'O'){
status = vencedor2; // Status está recebendo o valor do vencedor 2 que é a peça O.
return status;
}
else if(tabuleiro[0][2] == 'O' && tabuleiro[1][1] == 'O' && tabuleiro[2][0] == 'O'){
status = vencedor2; // Status está recebendo o valor do vencedor 2 que é a peça O.
return status;
}
//verificar se tem empate
if(tabuleiro[0][0]!=' ' && tabuleiro[1][0]!=' ' && tabuleiro[2][0]!=' '
&& tabuleiro[0][1]!=' ' && tabuleiro[1][1]!=' ' && tabuleiro[2][1]!=' '
&& tabuleiro[0][1]!=' ' && tabuleiro[1][1]!=' ' && tabuleiro[2][1]!=' '){
status = empate; // Status está recebendo o valor de empate.
return status;
}
{
status = andamento; // Nenhuma das opções anteriores retorne status em andamento.
return status;
}
}