본문 바로가기
이미지맥스 그리고 루아(lua)/[응용] 내장함수 활용

[이미지맥스] 지정영역을 랜덤하게 클릭하는 함수 clickArea()

by 위치결정 2021. 5. 3.
반응형

이미지맥스는 루아용 스크립트 내부함수를 내장하고있습니다. 내장함수는 공식카페(cafe.naver.com/imagemax/302) 에서 확인할수 있습니다.

 

내장 함수를 활용하여 다양한 동작을 꾸밀수 있습니다만, 사소하지만 보다 편리하게 쓸수 있는 방법을 또 생각해봤습니다.

저의 경우 비주얼스튜디오코드(VSC)를 이용해서 코드를 작성하는데, 이미지맥스의 내장함수들은 제가 작성중인 코드 워크스페이스에 정의된 함수블럭이 없다보니 인수를 뭘 넣어야 하는지 헬프창이 뜨지 않아 항상 내장함수를 찾아봐야 한다는 단점 아닌 단점이 발생하는 것입니다! 물론 자주 쓰는 함수들은 이미 외워버렸지만요.

더더욱이 아주 많이 쓰는 마우스클릭이나 이미지검색같은 함수들을 매번 인수를 다 넣자니 약간 귀차니즘이 발동하는것입니다.

그래서 함수들을 조합해서 좀더 편하게 제어해보고 싶어졌습니다.

 

3. 지정영역 랜덤 클릭 함수 clickArea()

세번째로 다뤄볼 함수는 다시 마우스제어함수 Mouse()를 활용하여 원하는 영역의 좌상단좌표와 우하단좌표를 지정하면 클릭할 중앙좌표와 랜덤값을 계산하여 선택한 영역을 랜덤클릭하는 함수로 활용하는것입니다.

-- 특정 영역 클릭 함수
function clickArea(_sx, _sy, _ex, _ey)
    local ix = ((_ex - _sx) / 2) + _sx
    local iy = ((_ey - _sy) / 2) + _sy

    local rx = ix - _sx
    local ry = iy - _sy
    local rx = math.random(-rx, rx)
    local ry = math.random(-ry, ry)

    local ix = ix + rx
    local iy = iy + ry

    Mouse(LBUTTON, CLICK, ix, iy)
    print('clickArea() : '..ix, iy)
end

-- 인수 : 설정영역의 좌상단좌표(_sx, _sy) / 우하단좌표(_ex, _ey)

클릭을 하기위해 지정할 영역의 좌상단좌표(sx, sy)와 우하단좌표(ex, ey)을 인수로 함수를 실행하면 지정한 영역의 중앙좌표(ix, iy)를 계산하고, clickResult() 함수와 같은 방법으로 랜덤영역(rx, ry)를 계산하여 지정한 영역을 클릭을 합니다.

 

-- 예시) 이미지를 찾으면 (X:100, Y:100 - X:200, Y:200) 지점중 한 부분을 랜덤으로 클릭
if isImage('find_image') then
    clickArea(100, 100, 200, 200)
end

-- 내부함수 Mouse() 함수를 사용시 예문
local sx, sy, ex, ey = 100, 100, 200, 200
if ImageSearch('find_image') == 1 then
    local ix = ((ex - sx) / 2) + sx
    local iy = ((ey - sy) / 2) + sy
    local rx = ix - sx
    local ry = iy - sy
    Mouse(LBUTTON, CLICK, ix, iy, 0, 0, rx, ry)
end

이미지 검색 함수 ImageSearch() 를 boolean값(true, false) 으로 리턴 받는 isImage() 함수도 이전에 다룬적이 있으므로 해당 글을 찾아보시면 좋을것 같습니다.

2021.03.29 - [이미지맥스, lua/이미지맥스 ImageMax] - [이미지맥스] ImageSearch()의 결과값을 boolean 값으로 받기

 

이제 좌표만 따면 됩니다.

반응형

댓글