Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 01.08.2010, 00:32
19950525 19950525 вне форума
Прохожий
 
Регистрация: 01.08.2010
Сообщения: 2
Репутация: 10
Печаль Столкновения

Не подскажете как мне зделать столкновения?Вот то што я хочю примерно если не ошибаюсь...
if image3.top=image4.top then image4.visible:=false;
if image3.left=image4.left-10 then image4.visible:=false;
Просто когда я ввожу = (Точное определение) он не работает..а если так например:
if image3.top>image4.top then image4.visible:=false;
if image3.left>image4.left-10 then image4.visible:=false;
но так же не получится точное столкновения ..што тогда я должен делать?Или есть ли другие способы?
Ответить с цитированием
  #2  
Старый 01.08.2010, 03:36
Asinkrit Asinkrit вне форума
Местный
 
Регистрация: 29.10.2009
Сообщения: 446
Репутация: 271
По умолчанию

Держи, функция для определения коллизии двум картинок (TImage).
Код:
function IsCrossImages(const aImage1, aImage2:TImage):boolean;
begin
  with aImage1 do
    Result:=((aImage2.Left >= Left) and (aImage2.Top >= Top) and
             (aImage2.Left <= Left+Width) and (aImage2.Top <= Top+Height))
            or ((aImage2.Left+aImage2.Width >= Left) and (aImage2.Top+aImage2.Height >= Top) and
                (aImage2.Left+aImage2.Width <= Left+Width) and (aImage2.Top+aImage2.Height <= Top+Height))
            or ((aImage2.Left >= Left) and (aImage2.Top+aImage2.Height >= Top) and
                (aImage2.Left <= Left+Width) and (aImage2.Top+aImage2.Height <= Top+Height))
            or ((aImage2.Left+aImage2.Width >= Left) and (aImage2.Top >= Top) and
                (aImage2.Left+aImage2.Width <= Left+Width) and (aImage2.Top <= Top+Height));
end;
Пример использования (в твоем случае):
Код:
   Image4.Visible:=IsCrossImages(Image3,Image4);

Последний раз редактировалось Asinkrit, 01.08.2010 в 12:35.
Ответить с цитированием
  #3  
Старый 01.08.2010, 09:33
19950525 19950525 вне форума
Прохожий
 
Регистрация: 01.08.2010
Сообщения: 2
Репутация: 10
По умолчанию

Спс за ответ.Но как понять ето при моём случай?iscrossimagesету функцию я написал.А потом што мне переписать второй код?Я и так зделал но второй код даёт ошибку...(
Ответить с цитированием
  #4  
Старый 01.08.2010, 12:36
Asinkrit Asinkrit вне форума
Местный
 
Регистрация: 29.10.2009
Сообщения: 446
Репутация: 271
По умолчанию

Сорри, неправильно написал, исправил, "второй код" теперь работает правильно, юзай..
Код:
  Image4.Visible:=IsCrossImages(Image3,Image4);
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 19:12.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter