#include <iostream>
// Función para imprimir el tablero
void imprimirTablero(char tablero[3][3]) {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
std::cout << tablero[i][j] << " ";
}
std::cout << std::endl;
}
}
// Función para verificar si hay un ganador
bool hayGanador(char tablero[3][3]) {
// Verificar filas
for (int i = 0; i < 3; i++) {
if (tablero[i][0] == tablero[i][1] && tablero[i][1] == tablero[i][2] && tablero[i][0] != ' ') {
return true;
}
}
// Verificar columnas
for (int j = 0; j < 3; j++) {
if (tablero[0][j] == tablero[1][j] && tablero[1][j] == tablero[2][j] && tablero[0][j] != ' ') {
return true;
}
}
// Verificar diagonales
if ((tablero[0][0] == tablero[1][1] && tablero[1][1] == tablero[2][2] && tablero[0][0] != ' ') ||
(tablero[0][2] == tablero[1][1] && tablero[1][1] == tablero[2][0] && tablero[0][2] != ' ')) {
return true;
}
return false;
}
int main() {
char tablero[3][3] = { {' ', ' ', ' '}, {' ', ' ', ' '}, {' ', ' ', ' '} };
int fila, columna;
char jugador = 'X';
std::cout << "¡Bienvenido al juego del Gato!" << std::endl;
// Ciclo principal del juego
while (true) {
// Imprimir el tablero
imprimirTablero(tablero);
// Pedir al jugador actual que ingrese su movimiento
std::cout << "Turno del jugador " << jugador << std::endl;
std::cout << "Ingrese la fila (0-2): ";
std::cin >> fila;
std::cout << "Ingrese la columna (0-2): ";
std::cin >> columna;
// Verificar si la casilla está vacía
if (tablero[fila][columna] == ' ') {
// Realizar el movimiento
tablero[fila][columna] = jugador;
// Verificar si hay un ganador
if (hayGanador(tablero)) {
std::cout << "¡El jugador " << jugador << " ha ganado!" << std::endl;
break;
}
// Cambiar al siguiente jugador
jugador = (jugador == 'X') ? 'O' : 'X';
} else {
std::cout << "La casilla seleccionada no está vacía. Por favor, elija otra." << std::endl;
}
}
// Imprimir el tablero final
imprimirTablero(tablero);
return 0;
}