示例#1
0
        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);
                    }
                }
            }
        }
示例#2
0
        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;
        }
示例#3
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;
        }
示例#6
0
        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;
        }
示例#7
0
 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);
 }