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