Страница: 1 | 2 | 
		
		 
			   
			 
			 
			 
			 
			
 
  
		
     
  
    
Вопрос: --> Вопрос по поводу движения объектов <--
     
    
Добавлено: 03.06.08 18:52
     
      
  
				
			  
					 
			
				 
    
		
       
    
Автор вопроса:  
     Jason`
 Jason`
      
       
  
Люди помогите, пожалуйста.
 
    
Проблема такова:
У меня есть два объекта (Shapes), они беспорядочно летают по полю. Это идёт бесконечный цикл (Do..Loop). Как сделать, чтобы когда они сталкиваются любой из своих сторон друг с другом, то цикл завершался бы (Exit Do)??
-----------------------
это что-то вроде игры, где есть лунка и шарик. Лунка рандомно появляется то там то здесь. И вот нужно, чтобы когда я при помощи стрелочек загоняю шарик в лунку (сталкиваются), тогда и завершалась программа. Всё сделал, а вот с этим СТОЛКНОВЕНИЕМ никак не получается =((
Подсобите, плиз ! 
				
		
		
					 
			
				 
  
		
     
  
    
Ответы
     
    
Всего ответов: 17
     
      
  
		
	  
			 
	
		 
    
       
    
Номер ответа: 1 
      
Автор ответа: Smith
 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`
 Jason`









Вопросов: 2
Ответов: 9
      
 Профиль |  | #2
       
Добавлено:  03.06.08 19:25
       
    
       
  
2 Smith:
 
    
Спасибо, друг! Работат)
-------------------
тогда понаглею  и ещё вопрос: как реализивать таймер? Чтобы при окончании цикла выводил затраченное время от запуска программы до окончания в секундах?
 и ещё вопрос: как реализивать таймер? Чтобы при окончании цикла выводил затраченное время от запуска программы до окончания в секундах?
		
	  
			 
	
		 
    
       
    
Номер ответа: 3 
      
Автор ответа: Smith
 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
 Smith




ICQ: adamis@list.ru 
Вопросов: 153
Ответов: 3632
      
 Профиль |  | #4
       
Добавлено:  03.06.08 19:34
       
    
       
  
Кстати, в примере с координатами есть серьезный недостаток, знаешь какой?
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 5 
      
Автор ответа: Jason`
 Jason`









Вопросов: 2
Ответов: 9
      
 Профиль |  | #5
       
Добавлено:  03.06.08 19:35
       
    
       
  
при новом старте проги шарики остаются на том же месте и прога тут же заканчивается))
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 6 
      
Автор ответа: Smith
 Smith




ICQ: adamis@list.ru 
Вопросов: 153
Ответов: 3632
      
 Профиль |  | #6
       
Добавлено:  03.06.08 19:39
       
    
       
  
Нет, это чисто технический нюанс, а там другая логическая задачка.
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 7 
      
Автор ответа: Jason`
 Jason`









Вопросов: 2
Ответов: 9
      
 Профиль |  | #7
       
Добавлено:  03.06.08 19:41
       
    
       
  
тогда не знаю)
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 8 
      
Автор ответа: Jason`
 Jason`









Вопросов: 2
Ответов: 9
      
 Профиль |  | #8
       
Добавлено:  03.06.08 19:44
       
    
       
  
кстати, на StartTime ругается
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 9 
      
Автор ответа: Jason`
 Jason`









Вопросов: 2
Ответов: 9
      
 Профиль |  | #9
       
Добавлено:  03.06.08 19:52
       
    
       
  
Нет. Уже не ругается. Но время постоянно показывает "0 сек."
 
    
-------------------
так что за недостаток?
		
	  
			 
	
		 
    
       
    
Номер ответа: 10 
      
Автор ответа: Smith
 Smith




ICQ: adamis@list.ru 
Вопросов: 153
Ответов: 3632
      
 Профиль |  | #10
       
Добавлено:  03.06.08 19:52
       
    
       
  
Пример НЕ реагирует, если шарик частично наложен на лузу слева и/или сверху, и реагирует правильно, если есть частичное наложение справа и/или снизу.
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 11 
      
Автор ответа: Smith
 Smith




ICQ: adamis@list.ru 
Вопросов: 153
Ответов: 3632
      
 Профиль |  | #11
       
Добавлено:  03.06.08 19:54
       
    
       
  
Попробуй так Dim StartTime As Single
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 12 
      
Автор ответа: Smith
 Smith




ICQ: adamis@list.ru 
Вопросов: 153
Ответов: 3632
      
 Профиль |  | #12
       
Добавлено:  03.06.08 19:56
       
    
       
  
StartTime = Timer
 
    
до цикла, а не в теле
		
	  
			 
	
		 
    
       
    
Номер ответа: 13 
      
Автор ответа: Jason`
 Jason`









Вопросов: 2
Ответов: 9
      
 Профиль |  | #13
       
Добавлено:  03.06.08 19:59
       
    
       
  
ага, таймер заработал.
 
    
насчёт того недостатка, так я бы и не заметил)
		
	  
			 
	
		 
    
       
    
Номер ответа: 14 
      
Автор ответа: Smith
 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`
 Jason`









Вопросов: 2
Ответов: 9
      
 Профиль |  | #15
       
Добавлено:  03.06.08 20:21
       
    
       
  
Ещё раз спасибо  
    