public bool Resolver(int [,] tablero) { Ubicacion ubi = NextEmpty(tablero); if (ubi.GetX() == -1 && ubi.GetY() == -1) //resuelto { return(true); } int parX = ubi.GetX(); int parY = ubi.GetY(); for (int i = 1; i <= N; i++) { if (VerificarFilasYColumnas(tablero, i, parX, parY) && VerificarFigura(tablero, i, parX, parY) && VerificarOperacion(tablero, i, parX, parY)) { Tablero[parX, parY] = i; ModificarFigura(parX, parY, i, 1); //Console.WriteLine("-------------------------------------------------------------------------"); //Print(tablero); if (Resolver(tablero)) { return(true); } //Console.WriteLine("**************************************************************************"); int actual = tablero[parX, parY]; tablero[parX, parY] = 0; ModificarFigura(parX, parY, actual, 2); //Print(tablero); //Console.WriteLine("**************************************************************************"); } } return(false); }
public bool VerificarFigura(int [,] tablero, int num, int coordenadaX, int coordenadaY) { Figura fig = BuscarFigura(coordenadaX, coordenadaY); Ubicacion[] listaPosiciones = fig.GetLista(); //busca posiciones de una figura en el tablero for (int i = 0; i < listaPosiciones.Length; i++) { Ubicacion ubi = listaPosiciones[i]; int x = ubi.GetX(); int y = ubi.GetY(); int numTablero = tablero[x, y]; //busca numero en el tablero en una posicion if (num == numTablero) //verifica si no se repiten numeros en la figura { return(false); } } return(true); }
public void ImprimirFiguras() { int cont = 0; while (ListaFiguras[cont] != null) { Figura f = ListaFiguras[cont]; string tipoFigura = f.GetTipo(); Ubicacion[] ubicaciones = f.GetLista(); Console.WriteLine("Figura:" + tipoFigura); int cont2 = 0; while (cont2 < ubicaciones.Length) { Ubicacion ubi = ubicaciones[cont2]; string str1 = ubi.GetX().ToString(); string str2 = ubi.GetY().ToString(); Console.WriteLine("Ubicaciones: " + "[" + str1 + "," + str2 + "]"); cont2++; } cont++; } }