|
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 |