void ActualizaPosibles() { for (int cuad = 0; cuad < Sudoku.Tamaño; ++cuad) { _cuadrantes[cuad].QuitaTodosPosibles(); } if (!mostrarPosibles) { return; } for (int f = 0; f < Sudoku.Tamaño; ++f) { for (int c = 0; c < Sudoku.Tamaño; ++c) { int cuad, pos; Sudoku.FilaColumnaACuadrantePosicion(f, c, out cuad, out pos); foreach (var num in _s.PosiblesEnCelda(f, c)) { _cuadrantes[cuad].PonerPosibleEnPos(pos, num); } } } }
private void BorrarNumero() //para los numeros que ya hay puestos y no se pueden deshacer porque no están en memoria { Sudoku.FilaColumnaACuadrantePosicion(_filaActual, _columnaActual, out int cuadrante, out int posicion); int numero = _cuadrantes[cuadrante].GetNumero(posicion); memoria.GuardarMovimiento(numero, _filaActual, _columnaActual); _s[_filaActual, _columnaActual] = 0; }
private void GuardarMovimiento() { int cuadrante, posición; Sudoku.FilaColumnaACuadrantePosicion(_filaActual, _columnaActual, out cuadrante, out posición); int numero = _cuadrantes[cuadrante].GetNumero(posición); memoria.GuardarMovimiento(numero, _filaActual, _columnaActual); }
void CuandoCeldaCambiada(int fila, int columna, int nuevoNúmero) { Sudoku.FilaColumnaACuadrantePosicion(fila, columna, out int cuad, out int pos); //añade el número if (nuevoNúmero > 0) { _cuadrantes[cuad].PonerNúmeroEnPos(pos, nuevoNúmero); } else { _cuadrantes[cuad].QuitarNúmeroEnPos(pos); } //Actualiza posibles ActualizaPosibles(); }
void PonSelecciónEn(int fil, int col) { if (_filaActual >= 0 && _columnaActual >= 0) { Sudoku.FilaColumnaACuadrantePosicion(_filaActual, _columnaActual, out int cuad, out int pos); _cuadrantes[cuad].DeseleccionaCelda(pos); } Sudoku.FilaColumnaACuadrantePosicion(fil, col, out int cuad2, out int pos2); _cuadrantes[cuad2].SeleccionaCelda(pos2); _filaActual = fil; _columnaActual = col; numbersPopup.IsOpen = false; }
void PonSelecciónEn(int fil, int col) { if (_filaActual >= 0 && _columnaActual >= 0) { int cuad, pos; Sudoku.FilaColumnaACuadrantePosicion(_filaActual, _columnaActual, out cuad, out pos); _cuadrantes[cuad].DeseleccionaCelda(pos); } int cuad2, pos2; Sudoku.FilaColumnaACuadrantePosicion(fil, col, out cuad2, out pos2); _cuadrantes[cuad2].SeleccionaCelda(pos2); _filaActual = fil; _columnaActual = col; }
void SolicitudCambioNúmeroPosActual(int numero) { Sudoku.FilaColumnaACuadrantePosicion(_filaActual, _columnaActual, out int cuadrante, out int posicion); _cuadrantes[cuadrante].PonerNúmeroEnPos(posicion, numero); //SolicitudCambioNúmero(_filaActual, _columnaActual, numero); }