![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Всем привет.
Разбил изображение на 9 частей, сделал перетаскивание, как можно сделать так, что бы изображение разбивалось в сетке StringGrid (DrawGrid) и там не происходило перехлёста изображений (наложения друг на друга) при перетаскивании или в StringGrid (DrawGrid) принцип игры "пятнашки" только возможен? То что имеется на данный момент http://zalil.ru/31941006 Заранее благодарен за помощь. ![]() |
|
#2
|
||||
|
||||
|
Запрети передвижку по диагонали и постоянно проверяй на соприкосновение, если коснулись - всё, в эту сторону стоп движение.
|
|
#3
|
|||
|
|||
|
Цитата:
И как проверять на соприкосновение? ![]() |
|
#4
|
||||
|
||||
|
Какую игру вы делаете, думаю тут все на много проще можно поступить, и ни каких коллизий обрабатывать не придется ...
|
|
#5
|
|||
|
|||
|
Цитата:
Как то нужно сделать так, что бы при перетаскивании если одно изображение задевает другое, то оно не ложилось на него, а к нему как бы присоединялось как деталь в мозаике ![]() |
|
#6
|
||||
|
||||
|
В принципе, запрещать по диагонали не обязательно. Картинки являются прямоугольниками, в массиве типа array[8] of TRect храним координаты картинок. При передвижении картинки обновляем её координаты в массиве. По циклу проходимся по всем координатам и проверяем на столкновение - IntersectRect.
И для такой игры использование VCL - издевательство, пиши на API. Дополнительно можно проверить, сколько осталось до соприкосновения и, если, к примеру, меньше пяти пиксел - "слепить" их. Последний раз редактировалось angvelem, 26.10.2011 в 23:12. |
|
#7
|
|||
|
|||
|
Цитата:
Пример бы... ![]() |
|
#8
|
|||
|
|||
|
Цитата:
![]() |
|
#9
|
||||
|
||||
|
DectRect - куда скидывается результат сравнения остальных TRect-ов. Если результат не важен игнорируем его, важно что вернёт функция, при соприкосновении вернёт не нулевое значение - иными словами True.
Код:
if not IntersectRect(DestRect, PrevRect, SecRect) then |
|
#10
|
||||
|
||||
|
Цитата:
|
|
#11
|
|||
|
|||
|
Цитата:
![]() Цитата:
|
|
#12
|
||||
|
||||
|
1. Игнорировать - стоим.
2. Игнорировать - стоим. 3. Никаких определённых моментов, обработка должна идти в таймере. Всё будет очень "гладко". |
|
#13
|
|||
|
|||
|
Цитата:
![]() |
|
#14
|
||||
|
||||
|
А какая разница?
Код:
if not IntersectRect(DestRect, Imag1.BoundsRect, Image2.BoundsRect) then |
|
#15
|
|||
|
|||
|
Спасибо angvelem'у и Pilot_Red'у за отзывчивость.
Завтра попробую сделать) |