RectsOverlap (rect1 X,rect1 Y,rect1 Width,rect1 Height,rect2 X,rect2 Y,rect2 Width,rect2 Height)

Параметры

rect1 X = координата x первого прямоугольника
rect1 Y = координата y первого прямоугольника
rect1 Width = ширина первого прямоугольника
rect1 Height = высота первого прямоугольника
rect2 X = координата x второго прямоугольника
rect2 Y = координата y второго прямоугольника
rect2 Width = ширина второго прямоугольника
rect2 Height = высота второго прямоугольника

Описание

Эта команда возьмет две прямоугольных области на экране и проверит, накладываются ли они. Вы должны указать размеры и расположение обеих проверяемых областей.

Я все еще пробую найти хорошее логическое применение для этой команды с другими командами проверки столкновений, доступными для Вас, такими как ImagesOverlap, ImagesCollide, ImageRectOverlap, и ImageRectCollide. Я предполагаю, что это - самый быстрый метод проверки столкновения из всех доступных и полезен тем, кто желают написать собственные подпрограммы проверки столкновения.

В отличие от других команд столкновения, здесь нет никаких изображений, между которыми проверяются столкновение - здесь есть просто одна прямоугольноя область, накладывающаяся на другую. Вы можете, вероятно, использовать эту команду вместо команды ImageRectOverlap, поскольку они в действительности делают одно и тоже (и я думаю, эта работает быстрее).

Эту команду можно использовать, чтобы проверить позицию указателя относительно определенной области экрана (или "горячей точки"), когда пиксельная точность проверки не важна.

Пример

; Пример RectsOverlap
; Flashing graphics warning! Gets hypnotic ...

; Установим графический режим
Graphics 640,480,16

; Двойная буферизация и генератор случайных чисел
SetBuffer BackBuffer()
SeedRnd MilliSecs()

; повторяем до нажатия ESC
While Not KeyHit(1)

; первый случайный прямоугольник
rect1X=Rnd(50,610)
rect1Y=Rnd(50,430)
rect1W=20
rect1H=20

; и второй
rect2X=Rnd(50,610)
rect2Y=Rnd(50,430)
rect2W=20
rect2H=20
; Очищаем экран
Cls
; Рисуем прямоугольники случайным цветом
Color Rnd(255),Rnd(255),Rnd(255)
Rect rect1X,rect1Y,rect1W,rect1H,0
Color Rnd(255),Rnd(255),Rnd(255)
Rect rect2X,rect2Y,rect2W,rect2H,0

; Перекрываются? Если да, выводим сообщение и выходим из цикла!
If RectsOverlap (rect1X,rect1Y,rect1W,rect1H,rect2X,rect2Y,rect2W,rect2H) Then
Text 0,0, "Наши квадраты столкнулись ! Нажмите кнопку мыши..."
; Вывод текста ПЕРЕД Flip!
Flip
Exit ; выход из цикла
End If
; буфер-на экран, ждем 1/10 секунды и повторяем
Flip
Delay 100
Wend
; Ждем нажатия кнопки мыши
WaitMouse()
; End our graphics mode
EndGraphics

Главная страница

Нажмите сюда, чтобы увидеть последнюю версию этой страницы в Интернете