티스토리 뷰

#Chapter.04 ,이미지 서치(trans)3

시작합니다.


지난 Chapter 에서 특정구역내 이미지 서치 방법과 찾은 이미지의 좌표값을 구하는 부분을 다뤘었습니다.

이번 Chapter 에서는 찾은 좌표를 클릭하는 방법을 알아보겠습니다.


시작하기 앞서, Chapter02 에서 준비한 이미지들 중에 '+' 이미지를 기억하시나요?

흰색 + 부분을 제외한 나머지를 그림판을 이용해 검은색으로 칠해야 된다고 말씀드렸었습니다.


그 이유로는 '+'를 제외한 배경이 투명이기 때문인데요, 화면이 이동하면 배경이 계속 바뀌게 됩니다.

캐릭터를 움직일때마다 배경이 바뀐다는 소린데요.


ImageSerch 에서 옵션값으로 *30을 줬었는데요. 이게 정확도라고 말씀드렸었죠,

이번엔 그앞에 *Trans0x000000 옵션을 하나 더줄 겁니다.

이렇게해주면 0x000000(검은색)을 제외한 이미지를 검색하게되는데요, 이거때문에 

흰색 '+' 부분을 제외한 나머지를 검은색으로 칠해달라고 말씀드렸었습니다.


스크립트를 먼저 볼게요.


;Chapter04_01


gui, show, w200 h200 Center, Chapter04

gui, Add, Button,x50 y50 w100 h100 gBClick, ImageSearch

return


BClick:

WinActivate, 녹스 플레이어

ImageSearch, fx,fy, 0,0,A_ScreenWidth,A_ScreenHeight,*Trans0x000000 *30 Matching.bmp

if(ErrorLevel=0){

MsgBox, foundX=%fx% , foundY=%fy%

}

if(ErrorLevel=1){

MsgBox, notFound

}


return


GuiClose:

ExitApp


return


Chapter04_01_txt.txt

# 위 링크를 누르시면 다운가능하십니다.


#Chapter03 스크립트와 빨간색으로 *Trans0x000000 추가한 부분을 제외하곤 같습니다.


그럼 매칭을 클릭해보겠습니다.


스크립트를 보시겠습니다.


;Chapter04_02


gui, show, w200 h200 Center, Chapter04

gui, Add, Button,x50 y50 w100 h100 gBClick, ImageSearch

return


BClick:

WinActivate, 녹스 플레이어

ImageSearch, fx,fy, 0,0,A_ScreenWidth,A_ScreenHeight,*Trans0x000000 *30 Matching.bmp

if(ErrorLevel=0){

Send {Click %fx% %fy%}

}

if(ErrorLevel=1){

MsgBox, notFound

}

return


GuiClose:

ExitApp


return


Chapter04_02_txt.txt

# 위 링크를 누르시면 다운가능하십니다.


#Chapter04_01에서 if(ErrorLevel=0)의 {}안에 부분만 수정되었습니다.

#Send의 경우 Chapter01 을 참고해주세요. 


찾은 이미지의 클릭까지 해봤습니다. 

그런데 이미지 하나를 찾아서 한번 클릭을 하는데 스크립트가 상당히 길죠? 

매크로하나에 많은 이미지를 찾아야하는데 너무 복잡해집니다.

그래서 스크립트를 수정하겠습니다.


스크립트 보시겠습니다.


gui, show, w200 h200 Center, Chapter04

gui, Add, Button,x50 y50 w100 h100 gBClick, ImageSearch

return


sendClick(imgName){

WinActivate, 녹스 플레이어

ImageSearch, fx,fy, 0,0,A_ScreenWidth,A_ScreenHeight,*Trans0x000000 *30 %imgName%

if(ErrorLevel=0){

Send {Click %fx% %fy%}

}

if(ErrorLevel=1){

MsgBox, notFound

}

}

return


BClick:

sendClick("Matching.bmp")

return


GuiClose:

ExitApp

return


Chapter04_03_txt.txt

# 위 링크를 누르시면 다운가능하십니다


차이점이 보이시나요? 설명은 드리지만 이해가 안간다 하시면 넘어가셔도 좋습니다.

이렇게도 쓸 수 있구나 하시면됩니다.


sendClick(imgName){

WinActivate, 녹스 플레이어

ImageSearch, fx,fy, 0,0,A_ScreenWidth,A_ScreenHeight,*Trans0x000000 *30 %imgName%

if(ErrorLevel=0){

Send {Click %fx% %fy%}

}

if(ErrorLevel=1){

MsgBox, notFound

}

}

return


#sendClick 이라는 함수를 하나 만들었습니다.

sendClick("imgName")이 호출이되면 자동으로 ("")안에 들어간 이미지를 찾아서 클릭까지해줍니다.

%imgName% 원래 이자리에는 이미지 이름이 들어갔었죠, ("") 이안에서 받은 imgName 값이 이미지 이름이라고

알려주는겁니다. 

#어려울 수 있습니다. 모르겠다 싶으면 쿨하게 넘어가세요. 넘어가시는 것도 좋지만 그냥 무작정 따라쓰시다보면

'아, 이런거구나' 하실수 있습니다.


BClick:

sendClick("Matching.bmp")

return

#sendClick()함수를 불러주고, 이미지 이름은 "Matching.bmp" 라고 명령했습니다.


이제는 sendClick("imgName") 을 이용해서 이미지 이름만 넣으면 찾아서 클릴 할 수 있습니다.

준비한 이미지가 나오는 화면에서 "imgName"을 바꿔가며 써보세요.


다음 Capter 에서는 반복(Loop)를 배워 보겠습니다. Loop까지 이해하시면 오토핫키를 이용해서 던전을 반복으로 클리어 하실 수 있습니다. 






댓글