Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  164

•  TDictionary Custom Sort  3 338

•  Fast Watermark Sources  3 093

•  3D Designer  4 849

•  Sik Screen Capture  3 345

•  Patch Maker  3 554

•  Айболит (remote control)  3 660

•  ListBox Drag & Drop  3 015

•  Доска для игры Реверси  81 708

•  Графические эффекты  3 946

•  Рисование по маске  3 249

•  Перетаскивание изображений  2 630

•  Canvas Drawing  2 753

•  Рисование Луны  2 582

•  Поворот изображения  2 190

•  Рисование стержней  2 168

•  Paint on Shape  1 568

•  Генератор кроссвордов  2 236

•  Головоломка Paletto  1 767

•  Теорема Монжа об окружностях  2 231

 

 

Архив исходников

   
  Базы данных
  Графика & Мультимедиа
  Сети & Интернет
  Система
  Разное
   

Ссылки и Баннеры ...

 

Delphi Sources

Delphi Sources

 




 

ИСХОДНИК ПРОГРАММЫ

 

. : Пасьянс Колья : .

 

Delphi - Цель игры состоит в том, чтобы удалить колышки, перепрыгивая их другим колышком

Исходник программы, показывающей пример создания пасьянса, в котором нужно удалить колышки, перепрыгивая их другим колышком в любом из 4 направлений, пока один колышек не останется в центральном отверстии.

Для решения данной головоломки используется поиск в глубину.

Данная версия выполняет поиск от 250 000 проверяемых позиций в секунду (на моем ноутбуке с частотой 266 МГц) до 750 000 позиций в секунду на новом Celeron с частотой 800 МГц. Самый долгий поиск решения требует около 13 000 000 проверок позиций.

Заметки для программиста

Объект TBoard содержит квадратный массив B позиций на доске поля типа TOccupied со значениями Empty, Occupied или NotAvailable. Потенциальное перемещение считается допустимым, если 1) проверяемый слот занят 2) соседнее отверстие в проверяемом направлении занято и 3) следующая позиция в том же направлении пуста. Из-за этого двойная строка неиспользуемых (NotAvailable) записей массива определяется по всей доске (так что плата определяется как 11 X 11 с только средними 7 позициями в каждом из когда-либо использовавшихся направлений. Когда мы находим колышек, мы всегда можем проверить две позиции слева, справа, сверху и снизу, беспокоясь об исключении «индекс вне допустимого диапазона».

Moves - основная функция, выполняющая поиск. Она рекурсивно вызывает себя после каждого хода, чтобы найти следующий возможный ход. TBoard также содержит Path, который содержит ходы, которые привели нас к текущей позиции на доске. Когда допустимый ход найден, мы добавляем его в Path, корректируем массив колышков, чтобы отразить ход, уменьшаем счетчик колышков и вызываем Moves для проверки следующей позиции. При входе в Moves мы проверяем наличие единственного колышка в центре доски и возвращаем true, если он найден. Если мы проверим все позиции, не найдя допустимого хода, мы вернем false. Если мы возвращаемся после вызова Moves с ложным результатом, мы отменяем только что сделанное перемещение привязки и продолжаем поиск.

Запись перемещения TMove - это динамически размещаемая запись с переменными Frompoint и ToPoint. TMove изначально был объектом, однако ходы могут создаваться и удаляться миллионы раз за один прогон - замена формы объекта записью сокращает время выполнения примерно на 20%.

Просмотры: 721
Дата: 07.07.2021, Автор: Gary Darby
Скачивания: 9
Написать сообщение:

 

Скачать (32 Кб)     Регистрация >>


 

Похожие исходники


Пасьянс Четыре линии

 

© 2004-2024 "DS"

Соглашение пользователя / Реклама / Карта сайта             Created by BrokenByte Software