// сделать ход, если этот приводит к решению, то вернуть true public bool Run(bool Optimize, bool Target) { TRuns Runs = Hanoi.GetMove(); // вернуть допустимые ходы // если задан режим отбора целевых ходов if (Target) { Select(Runs); // выбрать целевые ходы } // если задан режим оптимизации ходов if (Optimize) { THanoi Test; // создаем класс для пробного состояния for (int i = 0; i < Runs.Count; i++) { Test = Hanoi.Copy(); // создать копию Test.Move((Runs[i])[0], (Runs[i])[1]); // делаем пробный ход // если получаемое состояние не было ранее if (!IsPrev(Test)) { Hanoi = Test.Copy(); // сохраняем тестовое состояние Hanoi.Draw(); // рисуем новые состояние Prev.Add(Hanoi.Copy()); // сохраняем получаемое состояние // проверяем нет ли выигрыша if (Hanoi.IsWin()) { return(true); } else { return(false); } } } } // если не было хода, то делаем случайный ход int k = rnd.Next(Runs.Count); // выбираем случайный ход Hanoi.Move((Runs[k])[0], (Runs[k])[1]); // сделать ход Hanoi.Draw(); // рисуем новую ситуацию // проверить нет ли выигрыша if (Hanoi.IsWin()) { return(true); } else { return(false); } }
Random rnd; // генератор случайных чисел // конструктор класса public TRun(int N, Canvas g) { Hanoi = new THanoi(N, g); // создать класс для игры Hanoi.Draw(); // нарисовать начальную ситуацию Prev = new THanois(); // создать массив для пре rnd = new Random(); // инициализировать генератор слуайных чисел }