Esempio n. 1
0
        /*
         * Алгоритм хода фигуры.
         * Принимаем шашку, которой необходимо сходить, и координаты клетки хода.
         * row < 8 и column < 8 (размеры поля)
         * Наше поле знает, как обновлять View при изменении модели поля(Active View)
         */

        public void Move(Checker checker, int row, int column)
        {
            if (checker == null)
            {
                return;
            }
            if (checker.Color == CurrentStepColor)
            {
                var result = SelectedChecker.TryToMove(row, column);

                if (result == MovesType.Attack)
                {
                    if (!checker.CanEat().res)
                    {
                        CurrentStepColor = checker.Color == CheckerColor.White ? CheckerColor.Black : CheckerColor.White;
                    }
                    else
                    {
                        CurrentStepColor = checker.Color;
                    }
                }
                else if (result == MovesType.Default)
                {
                    CurrentStepColor = checker.Color == CheckerColor.White ? CheckerColor.Black : CheckerColor.White;
                }
                if (result != MovesType.None)
                {
                    SelectedChecker = Board.Tiles[row, column].Checker;
                    FieldUpdated?.Invoke();
                }
            }
        }
        public void Save()
        {
            try
            {
                if (String.IsNullOrEmpty(Name))
                {
                    throw new Exception("Name is empty.");
                }

                if (existing != null)
                {
                    rule = existing.Original;

                    if (AppState.Instance.FindExisting(rule.ID, Name) != null)
                    {
                        throw new Exception("Name already exists.");
                    }

                    rule.Name = Name;
                    AppState.Instance.UpdateRule(rule);
                }
                else
                {
                    if (AppState.Instance.FindExisting(Name) != null)
                    {
                        throw new Exception("Name already exists.");
                    }
                    else if (SelectedChecker == null)
                    {
                        throw new Exception("No Checker selected.");
                    }
                    else if (SelectedChecker.HasExtensions && string.IsNullOrEmpty(SelectedExt))
                    {
                        throw new Exception("No Extension selected.");
                    }
                    else if (SelectedChecker.HasPath && !RegistryUtil.IsValid(Path))
                    {
                        throw new Exception("Path is invalid.");
                    }

                    rule      = SelectedChecker.GetValues(Path, SelectedExt);
                    rule.Name = Name;

                    AppState.Instance.AddNewRule(rule);
                }

                Result = WindowResult.Saved;
                window.Close();
            }
            catch (Exception e)
            {
                MessageBoxFactory.ShowError(e);
            }
        }
Esempio n. 3
0
        /// <summary>
        /// Prüft welche Checker ausgewählt ist
        /// </summary>
        public void Checker()
        {
            if (SelectedChecker is PalindromeChecker)
            {
                bool   test   = SelectedChecker.Validate(Text);
                Result result = new Result()
                {
                    Text = Text, TestTime = DateTime.Now, TestResult = PalindromeResult(test)
                };
                ResultList.Add(result);
            }
            else if (SelectedChecker is OddEvenChecker)
            {
                //Prüft ob text nur Zahlen sind
                Regex reg = new Regex("^[0-9]+$");
                if (reg.IsMatch(text.TrimStart()))
                {
                    ErrorMessage = "";
                    if (text.Length <= 9)
                    {
                        ErrorMessage = "";
                        bool   test   = SelectedChecker.Validate(Text);
                        Result result = new Result()
                        {
                            Text = Text, TestTime = DateTime.Now, TestResult = OddEvenResult(test)
                        };
                        ResultList.Add(result);
                    }
                    else
                    {
                        ErrorMessage = "Max = 999.999.999";
                    }
                }
                else
                {
                    ErrorMessage = "Ungültige Angabe nur Zahlen erlaubt";
                }
            }

            else if (SelectedChecker is PrimzahlChecker)
            {
                //Prüft ob text nur Zahlen sind
                Regex reg = new Regex("^[0-9]+$");
                if (reg.IsMatch(text.TrimStart()))
                {
                    ErrorMessage = "";
                    if (text.Length <= 390)
                    {
                        bool   test   = SelectedChecker.Validate(Text);
                        Result result = new Result()
                        {
                            Text = Text, TestTime = DateTime.Now, TestResult = PrimzahlResult(test)
                        };
                        ResultList.Add(result);
                    }
                    else
                    {
                        ErrorMessage = "Max. 1E+308";
                    }
                }
                else
                {
                    ErrorMessage = "Ungültige Angabe nur Zahlen erlaubt";
                }
            }
        }