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

•  TDictionary Custom Sort  535

•  Fast Watermark Sources  899

•  3D Designer  1 827

•  Sik Screen Capture  1 474

•  Patch Maker  1 482

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

•  ListBox Drag & Drop  1 174

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

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

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

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

•  Canvas Drawing  968

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

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

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

•  Paint on Shape  493

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

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

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

•  Пазл Numbrix  617

 

 

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

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

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

 

Delphi Sources

Delphi Sources

 




 

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

 

. : Matchstick Puzzle : .

 

Delphi - Matchstick Puzzle - создание пазла про сожженные спички

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

Инструкции к головоломке

Сетка содержит спички разной длины, которые могут быть полностью несгоревшими или полностью сожженными. Спички горят с головы (закругленный конец) до хвоста, не пропуская сегменты. Числа по краям сетки указывает количество сгоревших сегментов в соответствующей строке или столбце. Необходимо заштриховать сгоревшие сегменты так, чтобы сопоставились исходные числа.

Рисование спичек

Я решил нарисовать совпадения на холсте элемента управления TImage. Оказалось, что это было нечто большее, чем я думал изначально. Метод Ellipse рисует совпадающую головку с большой осью на несколько пикселей шире, чем второстепенная ось. Конечно, ориентация большой оси зависит от ориентации спички. Затем нам нужно провести две параллельные линии для части спичечной палочки между спичечной головкой и краем ячейки. Внутренние сегменты рисуются как параллельные линии по всей ширине или высоте каждой ячейки. Последний сегмент имеет укороченные линии краев и еще одну закрывающую линию через конец. Все линии нарисованы с использованием методов холста Moveto и Lineto. Я использую метод Floodfill, чтобы раскрасить сегменты как сгоревшие или несгоревшие, поэтому было важно, чтобы границы ячеек оставались видимыми, чтобы отмечать концы сегментов. Это также означало стирание небольшого кусочка спичечной головки там, где она встречается с палкой, чтобы Floodfill мог заполнить обе части. Если бы я начинал сначала, я бы попытался сначала нарисовать спички целиком, а затем нарисовать линии сетки поверх них, чтобы разграничить сегменты.

Обработка пользовательских кликов

Действия, предпринимаемые, когда пользователь щелкает ячейку, зависят от того, записан ли сегмент. Если не сгорел, я использую Floodfill, чтобы «сжечь» все сегменты обратно до спичечной головки (Headseg = True), используя оттенок коричневого. Если Burned, я "снимаю прожиг" все сегменты между текущей ячейкой и LastSeg совпадения, используя белый цвет кисти. Выход из события TImage OnMouseUp дает нам координаты мыши X и Y в пикселях относительно левого верхнего угла сетки. Разделение значений X и Y на вычисленную переменную Cellsize изначально дает координаты столбца и строки для индексации в массив MatchSegs. Это дает нам статус сожженной ячейки. Оттуда фактическое увеличение / уменьшение столбца или строки зависит от направления совпадения и от того, сжигается ли совпадение или нет. На то, чтобы все это заработало, потребовалось несколько часов.

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

 

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


 

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


TPuzzle (пятнашки)

 

© 2004-2022 "DS"

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