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

•  3D Designer  433

•  Sik Screen Capture  309

•  Patch Maker  269

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

•  ListBox Drag & Drop  247

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

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

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

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

•  Canvas Drawing  265

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

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

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

•  Paint on Shape  109

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

•  Головоломка Paletto  142

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

•  Пазл Numbrix  102

•  Заборы и коммивояжеры  183

•  Игра HIP  123

 

 

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

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

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

 

Delphi Sources

Delphi Sources

 




 

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

 

. : Генератор лабиринта : .

 

Delphi - Можно создавать, решать и сохранять лабиринты разных размеров и форм

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

В программе есть настройки для управления размерами «комнат» и количеством комнат по горизонтали и вертикали. Кнопка «Создать» создает случайный путь от S (начало) до E (конец) вместе с рядом тупиковых ложных путей. Кнопка «Дизайн» позволяет определять границы комнат; заблокированные области лабиринта и сохраненные лабиринты могут быть объединены вместе. Дополнительные параметры позволяют настроить цвета и ширину пути. Сгенерированные лабиринты могут быть решены прямо на экране или распечатаны с отображением пути решения (или без него).

Особенности исходного кода

Класс TMaze в отдельном модуле U_TMaze содержит логику для большинства операций лабиринта. Процедура MakeImage генерирует случайный путь через лабиринт от начальной до конечной точки, следя за тем, чтобы он не дублировался сам по себе. Затем вызывается MakeFalsePaths для открытия дополнительных стен путем создания путей, начинающихся под прямым углом к ??пути решения. Опять же, каждый путь должен оставаться независимым от других путей, то есть никогда не сносить последнюю стену, соединяющую два пути. При желании MakeOpenRooms можно вызвать для удаления хотя бы одной стены из оставшихся закрытых комнат, чтобы немного затруднить поиск решения. События мыши TMaze (Mmousedown, Mmousemove и Mmouseup) позволяют пользователю щелкать и / или перетаскивать путь решения. Удивительно, но их было труднее всего отлаживать. Сложность состоит в том, чтобы размер окна программы и окна кода не перекрывался. Это позволяет пошагово выполнять код и наблюдать за результатами на экране без вмешательства отладчика.

Режим «Дизайн» позволяет пользователю создавать лабиринты любого размера и формы. При нажатии на комнаты в режиме дизайна происходит переключение между обычными и «пограничными» комнатами. Щелчок правой кнопкой мыши вызывает всплывающее меню, которое предоставляет другие параметры управления. Вы также можете щелкнуть левой кнопкой мыши, удерживая нажатой клавишу «Shift», чтобы инвертировать прямоугольный диапазон комнат из предыдущего, по которому щелкнули мышью, в текущий.

Объекты TFileStream используются для сохранения и перезагрузки сгенерированных лабиринтов. Во время перезагрузки лабиринты могут быть объединены в текущий лабиринт. Доступен для загрузки набор "буквенных" лабиринтов, из которых можно составить лабиринты из слов или имен. Дети их любят.

Maze также служит примером использования класса Printer и процедур TCanvas Copyrect и Strecthdraw для реализации предварительного просмотра и операций печати. Можно установить поля и добавить текст верхнего и нижнего колонтитула в распечатанные лабиринты. Лабиринты можно масштабировать так, чтобы они помещались на одной странице или на нескольких страницах.

Просмотры: 146
Дата: 12.07.2021, Автор: Gary Darby
Написать сообщение:
 

 

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


 

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


Календарь генератор

Генератор текстур

Генератор сигнала

TextureGen (генератор текстур)

 

Генератор лабиринтов

PassGen генератор паролей

Генератор импульсов

Генератор кроссвордов

 

 

© 2004-2021 "DS"

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