Страница: 1 |
Страница: 1 |
Вопрос: Столкновение объектов
Добавлено: 18.05.05 19:56
Автор вопроса: smeladon
Как можно задать событие столкновения объектов?
То есть, как программ узнает, что 2 объекта ( картинки ) соприкоснулись краями. При этом картинки движутся.
Ответы
Всего ответов: 4
Номер ответа: 1
Автор ответа:
Mihalыch
ICQ: 373-509-101
Вопросов: 56
Ответов: 330
Профиль | | #1
Добавлено: 18.05.05 21:00
Можно так
Option Explicit
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Declare Function GetWindowRect Lib "user32.dll" (ByVal hwnd As Long, ByRef lpRect As RECT) As Long
Private Declare Function IntersectRect Lib "user32.dll" (ByRef lpDestRect As RECT, ByRef lpSrc1Rect As RECT, ByRef lpSrc2Rect As RECT) As Long
Private Sub Command1_Click()
 im rect_1 As RECT
 im rect_2 As RECT
 im iRect As RECT
GetWindowRect Picture1.hwnd, rect_1
GetWindowRect Picture2.hwnd, rect_2
IntersectRect iRect, rect_1, rect_2
If iRect.Bottom <> 0 And iRect.Left <> 0 _
And iRect.Right <> 0 And iRect.Top <> 0 Then
MsgBox "Сталкиваются"
Else
MsgBox "Не сталкиваются"
End If
End Sub
Номер ответа: 2
Автор ответа:
Alexey Spirin
ICQ: 135554022
Вопросов: 0
Ответов: 8
Web-сайт:
Профиль | | #2
Добавлено: 18.05.05 22:00
Если картинки движутся, то что-то их движет
Соответственно, есть какой-либо массив/коллекция типов, в которых описаны эти самые картинки.
Считать, на мой взгляд, нужно именно через него.
Апи, конечно, хорошо, но в данном случае лучше считать по координатам.
Номер ответа: 3
Автор ответа:
Genetik
ICQ: 3212009
Вопросов: 5
Ответов: 33
Профиль | | #3
Добавлено: 25.05.05 00:39
Alexey Spirin прав. Вот к примеру:
Х1 = Image1.Left
X2 = Image2.Left
X3 = Image1.Width
X = X1+X3
if X2=X then
MsgBox("Мля, они столкнулись"
End If
Так будет с точностью до Твипа или пикселя.
Номер ответа: 4
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #4
Добавлено: 25.05.05 01:27
Кажись кто то тут без меня гоночки пишет?
ЭЭэээ! хватит! я сам потратил бесцельно кучу времени на толкание пикчербоксов и сильно жалею об этом. Навернок когда перейду на директикс, буду жалеть опять задавайте координаты объектов как rect а выводите через апи! так быстрее и безглючнее!