Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 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
Ещё раз спасибо :)

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам