Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.10.2008, 15:28   #1
Манжосов Денис :)
Участник клуба
 
Регистрация: 29.01.2008
Сообщений: 1,039
По умолчанию Проверка

Код:
private
 procedure Proverka;
 Array1: array of TPoint;
 i, n: integer;
....
procedure TForm1.Proverka;
begin
 for i:=0 to High(Array1) do
  begin
   if ...
  end;
end;
Там где if у меня проблема. Есть изображение Image1. И надо проверить если Image1 в какой либо точке пересекается с XY массива Array1. Как сделать эту проверку?
Манжосов Денис :) вне форума Ответить с цитированием
Старый 17.10.2008, 15:37   #2
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Точка из массива попадает на Image1, если
(a[i].x>=Image1.Left)and(a[i].x<=Image1.Left+Image1.Width)
and(a[i].y>=Image1.Top)and(a[i].y<=Image1.Top+Image1.Height))
puporev вне форума Ответить с цитированием
Старый 17.10.2008, 15:42   #3
Манжосов Денис :)
Участник клуба
 
Регистрация: 29.01.2008
Сообщений: 1,039
По умолчанию

Блин, блин, блин, точно, мы же как раз сейчас в школе неравенства проходим, я мог бы и вспомнить это, спасибо puporev большое!!!!
Манжосов Денис :) вне форума Ответить с цитированием
Старый 17.10.2008, 16:21   #4
Манжосов Денис :)
Участник клуба
 
Регистрация: 29.01.2008
Сообщений: 1,039
По умолчанию

Код:
procedure TGameForm.TimerUpDownTimer(Sender: TObject);
begin
 Proverka; 
end;

procedure TGameForm.Proverka();
var
 n1: integer;
begin
   for n1:=0 to High(g1Array)-1 do
     if (g1Array[n1].Y>=im_Player.Top) and (g1Array[n1].Y<=im_Player.Top + im_Player.Height) then
      begin
        im_Player.Top:=im_Player.Top;
        exit;
      end;
   im_Player.Top:=im_Player.Top+2;
end;
Код почему-то не работает, если знает кто в чём проблема - скажите пожалуйста.
Манжосов Денис :) вне форума Ответить с цитированием
Старый 17.10.2008, 16:27   #5
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
if (g1Array[n1].Y>=im_Player.Top) and (g1Array[n1].Y<=im_Player.Top + im_Player.Height) then
А почему проверка только по вертикали? Или так задумано?
Еще вот здесь
Цитата:
end;
im_Player.Top:=im_Player.Top+2;
нужно
end
else im_Player.Top:=im_Player.Top+2;

Последний раз редактировалось puporev; 17.10.2008 в 16:31.
puporev вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка ввода Panda Помощь студентам 2 08.07.2008 19:23
Проверка окон HunterMan Win Api 1 25.06.2008 23:56
Проверка орфографии Serg113 Microsoft Office Word 1 09.05.2008 22:29
Проверка переменных *_ViruS_* Общие вопросы C/C++ 3 21.09.2007 21:33
Проверка на сжатие vitalik007 Общие вопросы Delphi 3 20.08.2007 10:53