No tiene una interfaz gráfica, el tablero vacío son 0 y cuando juega el jugador 1 y 2 son 1 y 2 respectivamente.
Hasta ahora llegué a programar todo excepto cuando hay un cuatro en línea en diagonal, algo que todavía no llegué a hacer, pero me encontré con otro problema que la verdad pedí ayuda y nadie supo brindarmela.
MI PROBLEMA ES EL SIGUIENTE:
Cuando alguien desea introducir una "ficha" en la columna 6, 9, o 10,
POR PRIMERA VEZ automáticamente se "saltea" el turno, es decir, no toma el valor de esa ficha, y le corresponde jugar al siguiente jugador.
Esto solo me ocurre la primera vez en las columnas 6, 9 y 10 la verdad me cuesta entender por que, en fin, adjunto el código y agradecería mucho al que encontrará este error
ACLARO: La lógica no es la mejor ni la más eficaz.
MUCHAS GRACIAS A LOS QUE TOMAN SU TIEMPO PARA DARME UNA MANO
Código
#include <iostream> using namespace std; const int numeroDeFilas=10; const int numeroDeColumnas=10; const int empate=(numeroDeFilas*numeroDeColumnas); bool ganador=false; void inicializarCuadro(int cuadro[][numeroDeColumnas]) { int i,j; for (i=0; i<numeroDeFilas; i++) { for (j=0; j<numeroDeColumnas; j++) { cuadro[i][j]=0; } } } void imprimirCuadro(int cuadro[][numeroDeColumnas]) { int i,j; for (i=0; i<numeroDeFilas; i++) { for (j=0; j<numeroDeColumnas; j++) { cout << cuadro[i][j]; } cout << endl; } } void turnoUno(int cuadro[][numeroDeColumnas]) // Turno del Jugador 1 { bool movimientoValido=false; int c,i; while (!movimientoValido) { cout << "Juega el Jugador 1" << endl; cout << "Ingrese el numero de columna, de 1 a 10" << endl; cin >> c; c--; while (c<0 || c>9) { cout << "Movimiento Invalido, reingrese la jugada" << endl; imprimirCuadro(cuadro); cout << "Juega el Jugador 1" << endl; cout << "Ingrese el numero de columna, de 1 a 10" << endl; cin >> c; c--; } for (i=numeroDeFilas;i>-1;i--) { if (cuadro[i][c]==0 && !movimientoValido) { cuadro[i][c]=1; movimientoValido=true; } } if (cuadro[numeroDeFilas][c]!=0 && !movimientoValido) { imprimirCuadro(cuadro); cout << "La Columna está llena, reingrese la jugada" << endl; } } } void turnoDos(int cuadro[][numeroDeColumnas]) //Turno del Jugador 2 { bool movimientoValido=false; int c,i; while (!movimientoValido) { cout << "Juega el Jugador 2" << endl; cout << "Ingrese el numero de columna, de 1 a 10" << endl; cin >> c; c--; while (c<0 || c>9) { cout << "Movimiento Invalido, reingrese la jugada" << endl; imprimirCuadro(cuadro); cout << "Juega el Jugador 2" << endl; cout << "Ingrese el numero de columna, de 1 a 10" << endl; cin >> c; c--; } for (i=numeroDeFilas;i>-1;i--) { if (cuadro[i][c]==0 && !movimientoValido) { cuadro[i][c]=2; movimientoValido=true; } } if (cuadro[numeroDeFilas][c]!=0 && !movimientoValido) { imprimirCuadro(cuadro); cout << "La Columna está llena, reingrese la jugada" << endl; } } } void vertical(int cuadro[][numeroDeColumnas]) { bool encontradoUno, encontradoDos=false; int i,j; int totalUno =0; int totalDos=0; for (j=0;j<numeroDeColumnas;j++) { totalUno=0; totalDos=0; for (i=0;i<numeroDeFilas;i++) { if (cuadro[i][j] == 1 && encontradoUno) //Si el Jugador1 Hace 4 en linea Vertical { totalUno++; } else { encontradoUno=false; totalUno=0; } if (cuadro[i][j] == 1 && !encontradoUno) { totalUno++; encontradoUno=true; } if (totalUno == 4) { cout << "El jugador 1 gana!" << endl; ganador=true; } if (cuadro[i][j] == 2 && encontradoDos) //Si el Jugador 2 Hace 4 en linea Vertical { totalDos++; } else { totalDos=0; encontradoDos=false; } if (cuadro[i][j] == 2 && !encontradoDos) { totalDos++; encontradoDos=true; } if (totalDos == 4) { cout << "El jugador 2 gana!" << endl; ganador=true; } } } } void horizontal(int cuadro[][numeroDeColumnas]) { bool encontradoUno, encontradoDos=false; int i,j; int totalUno =0; int totalDos=0; for (i=0;i<numeroDeFilas;i++) { totalUno=0; totalDos=0; for (j=0;j<numeroDeColumnas;j++) { if (cuadro[i][j] == 1 && encontradoUno) //Si el Jugador1 Hace 4 en linea Horizontal { totalUno++; } else { encontradoUno=false; totalUno=0; } if (cuadro[i][j] == 1 && !encontradoUno) { totalUno++; encontradoUno=true; } if (totalUno == 4) { cout << "El jugador 1 gana!" << endl; ganador=true; } if (cuadro[i][j] == 2 && encontradoDos) //Si el Jugador 2 Hace 4 en linea horizontal { totalDos++; } else { totalDos=0; encontradoDos=false; } if (cuadro[i][j] == 2 && !encontradoDos) { totalDos++; encontradoDos=true; } if (totalDos == 4) { cout << "El jugador 2 gana!" << endl; ganador=true; } } } } void jugar(int cuadro[][numeroDeColumnas]) { int fichas=0; while (fichas!=empate && !ganador) { if (fichas%2==0) { turnoUno(cuadro); vertical(cuadro); horizontal(cuadro); fichas++; imprimirCuadro(cuadro); } else { turnoDos(cuadro); vertical(cuadro); horizontal(cuadro); fichas++; imprimirCuadro(cuadro); } } if (fichas == empate) //Caso de Empate { cout << "EMPATE! El juego ha terminado" << endl; } } int main() //Programa Principal { int cuadro[numeroDeFilas][numeroDeColumnas]; cout << "Cuatro en Linea" << endl; inicializarCuadro(cuadro); imprimirCuadro(cuadro); jugar(cuadro); return 0; }