/* * Алгоритм хода фигуры. * Принимаем шашку, которой необходимо сходить, и координаты клетки хода. * 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); } }
/// <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"; } } }