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