и еще одна мелочь. если твой курсор перемещается с шагом, меньше размеров спрайта, или нужно проверить простейшее столкновение произвольно шатающихся по экрану спрайтов по их размеру (одинаковому у обоих), то можно использовать примерно такие функции:
// находится ли точка внутри прямоугольника?
// функция возвращает истину, если точка (pX, pY)
// в пределах прямоугольника (rX, rY, sW, sH), где
// (rX, rY) - левый верхний угол прямоугольника,
// (sW, sH) - его ширина и высота (размеры спрайта)
function PtInRect(pX, pY, rX, rY: Integer): boolean;
begin
if (pX >= rX)and(pY >= rY)and(pX < rX + sW)and(pY < rY + sH) then
PtInRect := true
else
PtInRect := false;
end;
// пересекаются ли прямоугольники?
// размеры обоих прямоугольников равны размерам спрайта (sW, sH)
// на входе - координаты левых верхних углов наших прямоугольников
function RCollision(rX1, rY1, rX2, rY2: Integer): boolean;
begin
RCollision := PtInRect(rX1, rY1, rX2, rY2)
or PtInRect(rX1 + sW, rY1, rX2, rY2)
or PtInRect(rX1 + sW, rY1 + sH, rX2, rY2)
or PtInRect(rX1, rY1 + sH, rX2, rY2);
end;