public static void Main()
char[,] tablero = new char[3,3];
SeleccionarCasilla(ref tablero);
static void CrearTablero(char[,] tablero)
for(int i = 0; i < 3; i++)
for(int j = 0; j < 3; j++)
static void SeleccionarCasilla(ref char[,] tablero)
const string PEDIR_FILA = "Elige la fila: ";
const string PEDIR_COLUMNA = "Elige la columna: ";
int f = LeerDatos(PEDIR_FILA);
int c = LeerDatos(PEDIR_COLUMNA);
if (ComprobarPosicionOcupada(tablero, f, c)) {
Console.WriteLine("La posición elegida está ocupada, debe elegir otra!");
static bool ComprobarSiGano(char[,] tablero)
for(int i = 0; i < 3; i++)
if ((tablero[i,0] == tablero[i,1]) && (tablero[i,0] == tablero[i,2]) && (tablero[i,0] != ' '))
for(int i = 0; i < 3; i++)
if ((tablero[0,i] == tablero[1,i]) && (tablero[0,i] == tablero[2,i]) && (tablero[0,i] != ' '))
if ((tablero[0, 0] == tablero[1, 1]) && (tablero[0, 0] == tablero[2, 2]) && (tablero[0, 0] != ' '))
if ((tablero[0, 2] == tablero[1, 1]) && (tablero[0, 2] == tablero[2, 0]) && (tablero[0, 2] != ' '))
static bool ComprobarPosicionOcupada(char[,] tablero, int fila, int columna)
return (tablero[fila, columna] != ' ') ? true : false;
static int LeerDatos(string texto)
string tmp = Console.ReadLine();
if(!int.TryParse(tmp, out salida))
Console.WriteLine("\nLos datos insertados no son válidos.");
else if (salida > 0 && salida <=3)
Console.WriteLine(salida);
Console.WriteLine("\nEl valor insertado está fuera de rango");