#include <iostream>
using namespace std;
const int SIZE = 3; // Tamaño de la matriz
char board[SIZE][SIZE]; // Tablero del juego
// Función para inicializar el tablero
void inicializarTablero() {
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < SIZE; j++) {
board[i][j] = ' '; // Espacios vacíos
}
}
}
// Función para mostrar el tablero
void mostrarTablero() {
cout << " 0 1 2\n"; // Encabezado de columnas
for (int i = 0; i < SIZE; i++) {
cout << i << " "; // Encabezado de filas
for (int j = 0; j < SIZE; j++) {
cout << board[i][j];
if (j < SIZE - 1) cout << "|"; // Separador de columnas
}
cout << endl;
if (i < SIZE - 1) {
cout << " -----\n"; // Separador de filas
}
}
}
// Función para verificar si hay un ganador
bool verificarGanador(char jugador) {
// Verificar filas y columnas
for (int i = 0; i < SIZE; i++) {
if ((board[i][0] == jugador && board[i][1] == jugador && board[i][2] == jugador) ||
(board[0][i] == jugador && board[1][i] == jugador && board[2][i] == jugador)) {
return true;
}
}
// Verificar diagonales
if ((board[0][0] == jugador && board[1][1] == jugador && board[2][2] == jugador) ||
(board[0][2] == jugador && board[1][1] == jugador && board[2][0] == jugador)) {
return true;
}
return false;
}
// Función principal
int main() {
inicializarTablero();
char jugador = 'X'; // Jugador inicial
int fila, columna;
int movimientos = 0;
while (true) {
mostrarTablero();
cout << "Turno del jugador " << jugador << ". Ingrese fila y columna (0-2): ";
cin >> fila >> columna;
// Validar entrada
if (fila < 0 || fila >= SIZE || columna < 0 || columna >= SIZE || board[fila][columna] != ' ') {
cout << "Movimiento inválido. Intente de nuevo." << endl;
continue;
}
// Realizar el movimiento
board[fila][columna] = jugador;
movimientos++;
// Verificar si hay un ganador
if (verificarGanador(jugador)) {
mostrarTablero();
cout << "¡El jugador " << jugador << " ha ganado!" << endl;
break;
}
// Verificar si hay un empate
if (movimientos == SIZE * SIZE) {
mostrarTablero();
cout << "¡Es un empate!" << endl;
break;
}
// Cambiar de jugador
jugador = (jugador == 'X') ? 'O' : 'X';
}
return 0;
}