Страница: 1 | 2 |
Вопрос: --> Вопрос по поводу движения объектов <--
Добавлено: 03.06.08 18:52
Автор вопроса: Jason`
Люди помогите, пожалуйста.
Проблема такова:
У меня есть два объекта (Shapes), они беспорядочно летают по полю. Это идёт бесконечный цикл (Do..Loop). Как сделать, чтобы когда они сталкиваются любой из своих сторон друг с другом, то цикл завершался бы (Exit Do)??
-----------------------
это что-то вроде игры, где есть лунка и шарик. Лунка рандомно появляется то там то здесь. И вот нужно, чтобы когда я при помощи стрелочек загоняю шарик в лунку (сталкиваются), тогда и завершалась программа. Всё сделал, а вот с этим СТОЛКНОВЕНИЕМ никак не получается =((
Подсобите, плиз !
Ответы
Всего ответов: 17
Номер ответа: 1
Автор ответа:
Smith
ICQ: adamis@list.ru
Вопросов: 153
Ответов: 3632
Профиль | | #1
Добавлено: 03.06.08 19:07
Отслеживай координаты объектов.
If Шарик.Left => Лунка.Left And _
Шарик.Top => Лунка.Top And _
Шарик.Left < Лунка.Left + Лунка.Width And _
Шарик.Top < Лунка.Top + Лунка.Height Then Попадание
Номер ответа: 2
Автор ответа:
Jason`
Вопросов: 2
Ответов: 9
Профиль | | #2
Добавлено: 03.06.08 19:25
2 Smith:
Спасибо, друг! Работат)
-------------------
тогда понаглею и ещё вопрос: как реализивать таймер? Чтобы при окончании цикла выводил затраченное время от запуска программы до окончания в секундах?
Номер ответа: 3
Автор ответа:
Smith
ICQ: adamis@list.ru
Вопросов: 153
Ответов: 3632
Профиль | | #3
Добавлено: 03.06.08 19:30
Пустяки
Dim StartTime As Integer
StartTime = Timer
-------------------------
Основной код
-------------------------
MsgBox CInt(Timer - StartTime) & " сек."
Номер ответа: 4
Автор ответа:
Smith
ICQ: adamis@list.ru
Вопросов: 153
Ответов: 3632
Профиль | | #4
Добавлено: 03.06.08 19:34
Кстати, в примере с координатами есть серьезный недостаток, знаешь какой?
Номер ответа: 5
Автор ответа:
Jason`
Вопросов: 2
Ответов: 9
Профиль | | #5
Добавлено: 03.06.08 19:35
при новом старте проги шарики остаются на том же месте и прога тут же заканчивается))
Номер ответа: 6
Автор ответа:
Smith
ICQ: adamis@list.ru
Вопросов: 153
Ответов: 3632
Профиль | | #6
Добавлено: 03.06.08 19:39
Нет, это чисто технический нюанс, а там другая логическая задачка.
Номер ответа: 7
Автор ответа:
Jason`
Вопросов: 2
Ответов: 9
Профиль | | #7
Добавлено: 03.06.08 19:41
тогда не знаю)
Номер ответа: 8
Автор ответа:
Jason`
Вопросов: 2
Ответов: 9
Профиль | | #8
Добавлено: 03.06.08 19:44
кстати, на StartTime ругается
Номер ответа: 9
Автор ответа:
Jason`
Вопросов: 2
Ответов: 9
Профиль | | #9
Добавлено: 03.06.08 19:52
Нет. Уже не ругается. Но время постоянно показывает "0 сек."
-------------------
так что за недостаток?
Номер ответа: 10
Автор ответа:
Smith
ICQ: adamis@list.ru
Вопросов: 153
Ответов: 3632
Профиль | | #10
Добавлено: 03.06.08 19:52
Пример НЕ реагирует, если шарик частично наложен на лузу слева и/или сверху, и реагирует правильно, если есть частичное наложение справа и/или снизу.
Номер ответа: 11
Автор ответа:
Smith
ICQ: adamis@list.ru
Вопросов: 153
Ответов: 3632
Профиль | | #11
Добавлено: 03.06.08 19:54
Попробуй так Dim StartTime As Single
Номер ответа: 12
Автор ответа:
Smith
ICQ: adamis@list.ru
Вопросов: 153
Ответов: 3632
Профиль | | #12
Добавлено: 03.06.08 19:56
StartTime = Timer
до цикла, а не в теле
Номер ответа: 13
Автор ответа:
Jason`
Вопросов: 2
Ответов: 9
Профиль | | #13
Добавлено: 03.06.08 19:59
ага, таймер заработал.
насчёт того недостатка, так я бы и не заметил)
Номер ответа: 14
Автор ответа:
Smith
ICQ: adamis@list.ru
Вопросов: 153
Ответов: 3632
Профиль | | #14
Добавлено: 03.06.08 20:13
Я свою последнюю игру 10 лет назад написал
Dim StartTime As Single
StartTime = Timer
Do
'тело цикла
'управление шариком и т.д.
Loop While Шарик.Left => и т.д. Короче масса условий выхода из цикла.
MsgBox "Время раунда" & Str$(CInt(Timer - StartTime)) & " сек."
Номер ответа: 15
Автор ответа:
Jason`
Вопросов: 2
Ответов: 9
Профиль | | #15
Добавлено: 03.06.08 20:21
Ещё раз спасибо