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

•  TDictionary Custom Sort  523

•  Fast Watermark Sources  884

•  3D Designer  1 816

•  Sik Screen Capture  1 462

•  Patch Maker  1 470

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

•  ListBox Drag & Drop  1 168

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

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

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

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

•  Canvas Drawing  967

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

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

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

•  Paint on Shape  492

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

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

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

•  Пазл Numbrix  613

 

 

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

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

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

 

Delphi Sources

Delphi Sources

 




 

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

 

. : Hexagon Boards : .

 

Delphi - Рисование шестиугольных узоров для использования в качестве досок для игр или головоломок

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

Это доска в форме шестиугольника, состоящая из 19 плиток шестиугольной формы, пронумерованных от 1 до 19. Цель состоит в том, чтобы расположить их в «волшебном» шестиугольнике, в котором значения в каждом горизонтальном и диагональном ряду (всего 15) в сумме равны 38.

Особенности программы

Масштабирование отдельных шестиугольных плиток с заданным размером и ориентацией. Процедура MakeHexagon создает тип TPolygon как массив из 6 точек, представляющих углы шестиугольника с заданной центральной точкой, радиусом и углом одной вершины от горизонтали. Остальные 5 углов увеличены на 60 градусов по сравнению с предыдущим углом.

Рисование плиток в соответствующих позициях. Для доски с длинным горизонтальным рядом количество рядов такое же, как и количество плиток в самом длинном ряду. Мы будем шагать по одной длине радиуса за раз, и для каждого шага позиции вверх и вниз на радиус, уменьшенный на величину перекрытия со следующей строкой [sin (30 градусов) = 0,866].

Для рисования версии доски, повернутой на 30 градусов (чтобы самая длинная диагональ стала самой длинной колонкой), необходимо повернуть каждую отдельную шестиугольную плитку вперед (или назад) на 30 градусов и поменять местами роли X, Y в алгоритме рисования из предыдущего, поэтому что длинный вертикальный столбец рисуется слева и справа, причем отдельные плитки в каждом столбце смещены по вертикали на один радиус плитки, а горизонтальное смещение составляет 0,866 радиуса.

Диаграмма «подсказки головоломки» отображает значения решения для одного из решений в 6 внешних углах доски. Локации были найдены во время создания доски путем временного присвоения последовательных букв по мере создания плиток. Буквы в 6 углах были затем заменены значениями решения по мере отображения платы, а другие буквы были заменены пробелами.

При добавлении чисел или других текстовых символов в плитки размер шрифта можно настроить в соответствии с размером плитки, задав свойство Canvas.Font.Height TImage. Я установил для него значение - Radius в этой программе, сделав высоту символа 1/2 диаметра плитки. Символы можно центрировать, вычитая половину неиспользованной высоты (и ширины) из координат центра плитки. Методы Canvas.TextWidth и Canvas, TextHeight могут возвращать данные значения.

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

 

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

 

© 2004-2022 "DS"

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