Exemplo n.º 1
0
        // сделать ход, если этот приводит к решению, то вернуть 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);
            }
        }
Exemplo n.º 2
0
        Random rnd;          // генератор случайных чисел

        // конструктор класса
        public TRun(int N, Canvas g)
        {
            Hanoi = new THanoi(N, g); // создать класс для игры
            Hanoi.Draw();             // нарисовать начальную ситуацию

            Prev = new THanois();     // создать массив для пре

            rnd = new Random();       // инициализировать генератор слуайных чисел
        }