Top.Mail.Ru
Ответы

Pascal ABC.NET. GRAPHABC Как определить пересечение фигур или изображений???

На экране есть два объекта (изображения).
Один управляется стрелками.
Другой представляет собой стену.
Как сделать, чтобы они не пересекались???

По дате
По рейтингу
Аватар пользователя
Новичок
5лет

Если это GraphABC Objects (а проще использовать их *) - проверить пересечение можно методом Intersect или IntersectRect (если проверять прямоугольные регионы)

uses ABCObjects;
begin
var r:=RectangleABC.Create(0,0,100,100);
var c1:=CircleABC.Create(0,150,10);
var c2:=CircleABC.Create(0,90,10);

WriteLn(c1.Intersect(r)); {false}
WriteLn(c2.Intersect(r)); {true}
end.

Если это изображения - можно использовать PictureABC. Над ними тоже работает Intersect (по умолчанию белый цвет будет считаться прозрачными и не принадлежать объекту). Ну или включить математику/геометрию уровня школы средних классов и посчитать самому =)
--
* Проще ещё потому, что уже есть готовые методы последовательных перемещений (свойства dx и dy и метод Move) + поддержка анимированных изображений и масштабирование.

Аватар пользователя
Искусственный Интеллект
5лет

Проверять расстояние между ними.

Аватар пользователя
Искусственный Интеллект
5лет

if (obj1.x = obj2.x) and (obj1.y = obj2.y) then writeln('BABAH!!!!');