I am new to the company and inherited this code which implements the traditional cat game, over a 3x3 matrix.
Now they ask me to transform it to an NxN game, and they told me that I had to refactor it to make it simpler.
What is code refactoring?
This is the code:
#include <stdio.h>
int main(){
char matriz[3][ 3], opc;
int i, j;
for(i=0; i<3; i++){
for(j=0; j<3; j++){
matriz[i][j]=' ';
printf(" %c", matriz[i][j]);
}
printf("\n");
}
int fila, col, ganador=0, turno=1;
//para jugador 1
do{
if(turno%2==1){
do{
scanf("%d", &fila);
scanf("%d", &col);
//ciclo para cuando el usuario ingrese coordenadas invalidas
if(matriz[fila][col] == 'x' || matriz[fila][col] == 'o' || fila > 2 || col > 2){
}
}while(matriz[fila][col] == 'x' || matriz[fila][col] == 'o' || fila > 2 || col > 2);
matriz[fila][col]='x';
for(i=0; i<3; i++){
for(j=0; j<3; j++){
printf(" %c", matriz[i][j]);
}
printf("\n");
}
turno++;
//para jugador dos
} else if(turno%2==0){
do{
scanf("%d", &fila);
scanf("%d", &col);
//ciclo para cuando el usuario ingrese coordenadas invalidas
if(matriz[fila][col] == 'x' || matriz[fila][col] == 'o' || fila > 2 || col > 2){
}
} while(matriz[fila][col] == 'x' || matriz[fila][col] == 'o' || fila > 2 || col > 2);
matriz[fila][col]='o';
for(i=0; i<3; i++){
for(j=0; j<3; j++){
printf(" %c", matriz[i][j]);
}
printf("\n");
}
turno++;
}
if(matriz[0][0] == 'x' && matriz[0][0] == matriz[0][1] && matriz[0][0] == matriz[0][2]
|| matriz[1][0] == 'x' && matriz[1][0] == matriz[1][1] && matriz[1][0] == matriz[1][2]
|| matriz[2][0] == 'x' && matriz[2][0] == matriz[2][1] && matriz[2][0] == matriz[2][2]
|| matriz[0][0] == 'x' && matriz[0][0] == matriz[1][0] && matriz[0][0] == matriz[2][0]
|| matriz[0][1] == 'x' && matriz[0][1] == matriz[1][1] && matriz[0][1] == matriz[2][1]
|| matriz[0][2] == 'x' && matriz[0][2] == matriz[1][2] && matriz[0][2] == matriz[2][2]
|| matriz[0][0] == 'x' && matriz[0][0] == matriz[1][1] && matriz[0][0] == matriz[2][2]
|| matriz[0][2] == 'x' && matriz[0][2] == matriz[1][1] && matriz[0][2] == matriz[2][0]){
ganador=1;
printf("1\n");
}
if(matriz[0][0] == 'o' && matriz[0][0] == matriz[0][1] && matriz[0][0] == matriz[0][2]
|| matriz[1][0] == 'o' && matriz[1][0] == matriz[1][1] && matriz[1][0] == matriz[1][2]
|| matriz[2][0] == 'o' && matriz[2][0] == matriz[2][1] && matriz[2][0] == matriz[2][2]
|| matriz[0][0] == 'o' && matriz[0][0] == matriz[1][0] && matriz[0][0] == matriz[2][0]
|| matriz[0][1] == 'o' && matriz[0][1] == matriz[1][1] && matriz[0][1] == matriz[2][1]
|| matriz[0][2] == 'o' && matriz[0][2] == matriz[1][2] && matriz[0][2] == matriz[2][2]
|| matriz[0][0] == 'o' && matriz[0][0] == matriz[1][1] && matriz[0][0] == matriz[2][2]
|| matriz[0][2] == 'o' && matriz[0][2] == matriz[1][1] && matriz[0][2] == matriz[2][0]){
ganador=1;
printf(" 2\n");
}
} while(ganador != 1);
return 0;
}