ImagesOverlap (image1,x1,y1,image2,x2,y2)

Параметры

image1 = первое проверяемое изображение
x1 = координата x первого изображения
y1 = координата y первого изображения
image2 = второе проверяемое изображение
x2 = координата x второго изображения
y2 = координата y второго изображения

Описание

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

Как с любой системой проверки на пересечение в Blitz-е, Вы должны будете указать имена переменных двух изображений, и их координаты X и Y в момент проверки столкновения.

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

Пример

; Пример ImagesOverlap

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

; Создадим два рисунка - один с кругом, другой с квадратом
gfxBox=CreateImage(50,50)
gfxCircle=CreateImage(50,50)

; Рисуем квадрат в первом рисунке
; Для этого выберем буфер этого рисунка
SetBuffer ImageBuffer(gfxBox)
; Цвет - синий
Color 0,0,255
;Рисуем квадрат (оставляем пустой пространство шириной 10 пикселов вокруг квадрата)
Rect 10,10,30,30,1

; Будем рисовать круг во втором рисунке
SetBuffer ImageBuffer(gfxCircle)
Color 255,0,0
; Тоже оставим пустое пространство вокруг круга
Oval 10,10,30,30,1

; Не забудем переключиться на BackBuffer!
SetBuffer BackBuffer()

; Координаты рисунка с квадратом случайные
boxX=Rnd(50,610)
boxY=Rnd(50,430)

; Повторяем цикл до столкновения
Repeat
; Прицепим рисунок с кругом к указателю мыши
circleX=MouseX()
circleY=MouseY()
; Стандартные команда двойной буферизации: сначала очищаем экран
Cls
; Рисуем наши рисунки в их текущих координатах
DrawImage gfxBox,boxX,boxY
DrawImage gfxCircle,circleX,circleY
; изображение - на экран
Flip
; Проверяем столкновение наших рисунков
Until ImagesOverlap (gfxBox,boxX,boxY,gfxCircle,circleX,circleY)

; Если столкнулись, выводим сообщение!
Text 0,0, "WE'VE HAD A COLLISION! PRESS A MOUSE BUTTON"
; Чтобы увидеть сообщение ..
Flip
; Ждем нажатия кнопки мыши
WaitMouse()
; Конец программы
EndGraphics

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

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