Exemple #1
0
        /// <summary>
        /// Metoda řešící sudoku pomocí backtrackingu nevyplněných polí.
        /// </summary>
        public bool BruteForceSolving()
        {
            GridButton NotSolvedButton = FindEmptyCell();

            if (NotSolvedButton == null)
            {
                return(true);
            }
            if (NotSolvedButton != null)
            {
                Sudoku.WhereIWantToFillInNumber = NotSolvedButton;
            }
            for (int Number = 1; Number < 10; Number++)
            {
                if (Sudoku.CanBeFilledIn(Number, NotSolvedButton, ListOfGridButtonsSolver))
                {
                    NotSolvedButton.Text = Number.ToString();

                    if (BruteForceSolving())
                    {
                        return(true);
                    }
                }
                Sudoku.WhereIWantToFillInNumber = NotSolvedButton;
            }
            NotSolvedButton.Text = " ";


            return(false);
        }
Exemple #2
0
        /// <summary>
        /// Zobrazí novou nabídku pro doplnění čísel po kliknutí na prázdné pole. Pokud má uživatel zaškrtnuto políčko DoNotHighlightDumbNumbersCheckBox, metoda vyřadí čísla, která zjevně nemá podbarvovat.
        /// </summary>
        /// <param name="ButtonName">Tlačítko, na které bylo kliknuto.</param>
        public void ShowNumberMenu(GridButton ButtonName)
        {
            MainMenu.AlreadyLoaded = false;
            foreach (Button button in Sudoku.ListOfNumbers)
            {
                MainMenu.Sudoku.Controls.Remove(button);
            }
            Sudoku.ListOfNumbers.Clear();
            //Graphics g = CreateGraphics();
            // SolidBrush ppap = new SolidBrush(Color.White);
            //g.FillRectangle(ppap, new Rectangle(400, 140, 160, 160));
            for (int i = 1; i < 10; i++)
            {
                if (ButtonName.ForeColor == Color.MidnightBlue)
                {
                    int Row;
                    if (i < 4)
                    {
                        Row = 1;
                    }
                    else if (i > 3 && i < 7)
                    {
                        Row = 2;
                    }
                    else
                    {
                        Row = 3;
                    }

                    int Column;
                    if (36 % i == 0 && i != 4 && i != 1 && i != 2)
                    {
                        Column = 3;
                    }
                    else if (40 % i == 0 && i != 4 && i != 1)
                    {
                        Column = 2;
                    }
                    else
                    {
                        Column = 1;
                    }

                    if (Sudoku.DoHighlightGoodNumbersCheckBox.Checked == true && Sudoku.CanBeFilledIn(i, ButtonName, ListOfGridButtons))
                    {
                        Sudoku.CreateNewButton(i.ToString(), 360 + Column * 50, 100 + Row * 50, Color.LightGreen);
                    }
                    else
                    {
                        Sudoku.CreateNewButton(i.ToString(), 360 + Column * 50, 100 + Row * 50, Color.LightSlateGray);
                    }

                    Sudoku.CreateNewButton("Vymaž", 420, 300, Color.LightSlateGray);
                    Sudoku.CreateNewButton("Napověz", 420, 350, Color.LimeGreen);
                }
            }

            foreach (Button button in Sudoku.ListOfNumbers)
            {
                MainMenu.Sudoku.Controls.Add(button);
            }

            //ppap.Dispose();
            //g.Dispose();
        }