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

[이미지맥스] 마우스 클릭을 조금만 더 간편하게! click()

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

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

 

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

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

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

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

 

1. 마우스 좌클릭 함수 click()

첫번째 다뤄볼 함수는 마우스제어함수인 Mouse()를 활용하여 원하는 좌표 지점을 좌클릭하는 아주아주매우매우 자주 사용할수 밖에 없는 기능을 함수화 해서 활용하는것입니다.

function click(_ix, _iy, _rx, _ry)
    local rx = _rx or 0
    local ry = _ry or 0
    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('click() : '..ix, iy)
end

-- 인수 : _ix, _iy (클릭할 중앙지점 좌표) / _rx, _ry (랜덤 범위)

가장 많이 사용할수 밖에 없는 마우스 좌클릭을 click() 함수로 다시 정의하였습니다.

인수는 클릭할 중앙좌표(ix, iy), 랜덤클릭범위(rx, ry) 입니다. 랜덤범위는 기입하지 않아도 중앙좌표를 클릭합니다.

 

-- 예시1) 원하는 좌표(X:100, Y:100) 클릭
click(100, 100)

-- 예시2) 원하는 좌표(X:100, Y:100)에서 랜덤범위 (X:50, Y:50) 클릭
click(100, 100, 50 , 50)


-- 내부함수 Mouse()를 사용시 예문
Mouse(LBUTTON, CLICK, 100, 100)
Mouse(LBUTTON, CLICK, 100, 100, 0, 0, 50, 50)

Mouse() 함수를 그대로 사용하여도 좋지만 조금이라도 타이핑을 덜 하고 싶었습니다!

 

-- 예시3) 특정 이미지를 발견한 지점으로 좌표를 오프셋한 지점을 클릭
local ret, acc, ix, iy, sx, sy = ImageSearch('search_icon')
if ret == 1 then
    click(ix + 220, iy, 10, 10)
end


-- 내부함수 Mouse()를 사용시 예문
local ret, acc, ix, iy, sx, sy = ImageSearch('search_icon')
if ret == 1 then
    Mouse(LBUTTON, CLICK, ix + 220, iy, 0, 0, 10, 10)
end   

찾을 이미지 'search_icon' 를 검색한 지점으로부터 X좌표를 우로 220 픽셀만큼 오프셋 된 위치의 지점을 x, y 각 10만큼 랜덤하게 클릭하는 예시입니다.

 

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

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

 

손이 조금 덜 바빠도 될것같습니다.

반응형

댓글