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

•  TDictionary Custom Sort  526

•  Fast Watermark Sources  889

•  3D Designer  1 820

•  Sik Screen Capture  1 465

•  Patch Maker  1 476

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

•  ListBox Drag & Drop  1 172

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

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

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

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

•  Canvas Drawing  968

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

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

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

•  Paint on Shape  493

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

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

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

•  Пазл Numbrix  616

 

 

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

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

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

 

Delphi Sources

Delphi Sources

 




 

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

 

. : Tangram (пазл) : .

 

Delphi - Китайская головоломка, состоящая из 7 частей, вырезанных из квадрата - 5 треугольников, квадрат и параллелограмм

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

Функция PieceInSolution вызывается, когда пользователь щелкает мышью, чтобы разместить кусок фигуры в секции рисунка на экране. Чтобы положить фигуру, она должна полностью находиться в контуре фигуры и не перекрывать ранее размещенную часть. Легко, правда? А вот и нет! Функция PointInPoly, помогает определить, где лежат вершины, но это только часть истории. У фигуры может быть одна или две вершины, соприкасающиеся с краями другой части без нарушения, но это не дает информации о том, находится ли область части снаружи или внутри другой части. В конце концов я решил, что если у кусков две или более стороны, они должны перекрываться. Это ограничивает части выпуклыми многоугольниками, то есть без углублений.

Проблема поиска оптимального решения была решена простым подсчетом того, сколько частей было успешно размещено. Когда размещенный счетчик совпадает с количеством кусочков решения, мы должны закончить.

Интересным оказался и опыт, полученный при программировании переворота фигур. Переворачивание относительно горизонтальной или вертикальной оси (через центр детали) может быть выполнено перемещением точки так, чтобы она была центрирована на этой оси, изменением знака точки и переводом обратно в исходное положение оси. То есть, чтобы переместить точку (Px, Py) вокруг оси Y для части с центром в (Cx, Cy), переместите точку в (Px, Py-Cy), измените ее знак координаты Y на (Px, Cy-Py) и переместите его обратно в (Px, Cy-Py + Cy) или (Px, 2Cy-Py). Метод TPiece, Flip, делает это для всех точек детали и, кажется, работает нормально. Обратите внимание, что параллелограмм - единственная стандартная деталь, которую можно перевернуть.

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

 

 

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


 

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


Пазл Cubissimo

Пазл Cow

Cavalry (пазл)

Пазл 2048

 

Пазл 2048 v2

Fox Duck Corn (пазл)

Пазл Gunport Domino

Пазл - Уголь в алмазы

 

Пазл Token Flip

 

© 2004-2022 "DS"

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