Ejemplo n.º 1
0
        public void DatenAnzeigen()
        {
            foreach (Control ctrl in Controls)
            {
                if (!(ctrl is _ucSudokuFeldGross))
                {
                    continue;
                }

                _ucSudokuFeldGross feldGross = (_ucSudokuFeldGross)ctrl;


                for (int i = 0; i < 81; i++)
                {
                    if (feldGross.Tag.ToString() == i.ToString())
                    {
                        feldGross.Text = _daten.Substring(i, 1);

                        if (_daten.Substring(i, 1) == "x")
                        {
                            feldGross.FarbenSetzen    = true;
                            feldGross.FreieEingabe    = true;
                            feldGross.Text            = string.Empty;
                            feldGross.Loesung         = _loesung.Substring(i, 1);
                            feldGross.GueltigeEingabe = Enums.Farbzuweisung.Leer;
                        }
                        else
                        {
                            feldGross.FreieEingabe = false;
                        }
                    }
                }
            }
        }
Ejemplo n.º 2
0
        public void PruefenObSudokuFertig()
        {
            bool freiesFeld = false;

            foreach (Control ctrl in Controls)
            {
                if (!(ctrl is _ucSudokuFeldGross))
                {
                    continue;
                }

                _ucSudokuFeldGross feldGross = (_ucSudokuFeldGross)ctrl;

                if (feldGross.Text == string.Empty)
                {
                    freiesFeld = true;
                }
            }
            if (!freiesFeld)
            {
                if (!AufFehlerPruefen())
                {
                    _hauptmenue.MeldungZeigen("Super!", "Du hast das Sudoku gelöst", false);
                }
                if (AufFehlerPruefen())
                {
                    _hauptmenue.MeldungZeigen("bäääh!", "Mega bitter -.-", false);
                }
            }
        }
Ejemplo n.º 3
0
        public void PruefenObSudokuFertig()
        {
            bool freiesFeld = false;

            foreach (Control ctrl in Controls)
            {
                if (!(ctrl is _ucSudokuFeldGross))
                {
                    continue;
                }

                _ucSudokuFeldGross feldGross = (_ucSudokuFeldGross)ctrl;

                if (feldGross.Text == string.Empty)
                {
                    freiesFeld = true;
                }
            }
            if (!freiesFeld)
            {
                if (!AufFehlerPruefen())
                {
                    _hauptmenue.MeldungZeigen("Super!", "Du hast das Sudoku gelöst", false);
                }
                if (AufFehlerPruefen())
                {
                    _hauptmenue.MeldungZeigen("Autsch!", "Leider sind noch nicht alle Zahlen richtig.", false);
                }
            }
        }
Ejemplo n.º 4
0
        private void _cmdTipp_Click(object sender, EventArgs e)
        {
            List <int> freieFelder = new List <int>();

            foreach (Control ctrl in Controls)
            {
                if (!(ctrl is _ucSudokuFeldGross))
                {
                    continue;
                }
                _ucSudokuFeldGross feldGross = (_ucSudokuFeldGross)ctrl;

                if (feldGross.FreieEingabe && feldGross.Text == string.Empty)
                {
                    freieFelder.Add(int.Parse(feldGross.Tag.ToString()));
                }
            }
            if (freieFelder.Count == 0)
            {
                return;
            }

            Random rnd  = new Random();
            int    zahl = rnd.Next(0, freieFelder.Count);

            foreach (Control ctrl in Controls)
            {
                if (!(ctrl is _ucSudokuFeldGross))
                {
                    continue;
                }

                _ucSudokuFeldGross feldGross = (_ucSudokuFeldGross)ctrl;

                if (feldGross.Tag.ToString() == freieFelder[zahl].ToString())
                {
                    feldGross.Text            = _loesung.Substring(int.Parse(feldGross.Tag.ToString()), 1);
                    feldGross.GueltigeEingabe = Enums.Farbzuweisung.Gueltig;
                    PruefenObSudokuFertig();
                }
            }
        }
Ejemplo n.º 5
0
        private bool AufFehlerPruefen()
        {
            List <int> liste = new List <int>();

            foreach (Control ctrl in Controls)
            {
                if (!(ctrl is _ucSudokuFeldGross))
                {
                    continue;
                }

                _ucSudokuFeldGross feldGross = (_ucSudokuFeldGross)ctrl;

                if (feldGross.AufFehlerPruefen == Enums.Farbzuweisung.Ungueltig)
                {
                    liste.Add(int.Parse(feldGross.Tag.ToString()));
                }
            }

            return(liste.Count > 0 ? true : false);
        }
Ejemplo n.º 6
0
        public _ucSudokuErstellen()
        {
            InitializeComponent();
            foreach (Control ctrlPanel in Controls)
            {
                if (!(ctrlPanel is Panel))
                {
                    continue;
                }

                foreach (Control ctrl in ctrlPanel.Controls)
                {
                    if (!(ctrl is _ucSudokuFeldGross))
                    {
                        continue;
                    }

                    _ucSudokuFeldGross feldGross = (_ucSudokuFeldGross)ctrl;
                    feldGross.Controls["_txtZahl"].TextChanged += new EventHandler(_ucSudokuErstellen_TextChanged);
                    feldGross.Hauptmenue    = _hauptmenue;
                    feldGross.ZahlenAuswahl = _zahlenAuswahl;
                }
            }
        }
Ejemplo n.º 7
0
        public void SudokuAutomatischGenerieren(int schwierigkeitsgrad)
        {
            AutomatischGenerieren = true;

            FelderLeeren();

            Random rnd = new Random();

            do
            {
                _uc00.Text = rnd.Next(1, 9).ToString();
                _uc20.Text = rnd.Next(1, 9).ToString();
                _uc40.Text = rnd.Next(1, 9).ToString();
                _uc60.Text = rnd.Next(1, 9).ToString();
                _uc80.Text = rnd.Next(1, 9).ToString();

                _uc23.Text = rnd.Next(1, 9).ToString();

                _uc53.Text = rnd.Next(1, 9).ToString();

                _uc71.Text = rnd.Next(1, 9).ToString();

                ArrayFuellen();
            } while (!IstGueltigesFeld());


            for (int i = 0; i < 9; i++)
            {
                for (int j = 0; j < 9; j++)
                {
                    if (_datenTesten[i, j] == 0)
                    {
                        _datenTesten[i, j] = -1;
                    }
                }
            }

            Backtracking backtracking = new Backtracking();

            backtracking._datenTesten = _datenTesten;
            backtracking.LoeseFeld();
            LoesungLaden();
            DatenInOberflaecheSchreiben();

            //Zufällige Felder entfernen
            for (int i = 0; i < schwierigkeitsgrad; i++)
            {
                int x = rnd.Next(0, 8);
                int y = rnd.Next(0, 8);


                foreach (Control ctrl in Controls)
                {
                    if (ctrl.Tag == null)
                    {
                        continue;
                    }


                    int yCtrl = int.Parse(ctrl.Name.Substring(3, 1));
                    int xCtrl = int.Parse(ctrl.Name.Substring(4, 1));

                    if (y == yCtrl && x == xCtrl && ctrl.Text == string.Empty)
                    {
                        i = i - 1;
                        continue;
                    }

                    if (y == yCtrl && x == xCtrl)
                    {
                        ctrl.Text = "";
                    }
                }
            }

            foreach (Control ctrl in Controls)
            {
                if (ctrl.Tag == null)
                {
                    continue;
                }
                if (ctrl.Text != string.Empty)
                {
                    ((_ucSudokuFeldGross)ctrl).FreieEingabe    = false;
                    ((_ucSudokuFeldGross)ctrl).FarbenSetzen    = false;
                    ((_ucSudokuFeldGross)ctrl).GueltigeEingabe = Enums.Farbzuweisung.Leer;
                }
                else
                {
                    ((_ucSudokuFeldGross)ctrl).FreieEingabe    = true;
                    ((_ucSudokuFeldGross)ctrl).FarbenSetzen    = true;
                    ((_ucSudokuFeldGross)ctrl).GueltigeEingabe = Enums.Farbzuweisung.Leer;
                }
            }


            foreach (Control ctrl in Controls)
            {
                if (!(ctrl is _ucSudokuFeldGross))
                {
                    continue;
                }

                _ucSudokuFeldGross feldGross = (_ucSudokuFeldGross)ctrl;


                for (int i = 0; i < 81; i++)
                {
                    if (feldGross.Tag.ToString() == i.ToString())
                    {
                        feldGross.Loesung = _loesung.Substring(i, 1);
                    }
                }
            }


            AutomatischGenerieren = false;
        }