오토핫키(AutoHotKey) 기초강좌 #4 - 매크로 프로그래밍 2 (ImageSearch, Send, Sleep)




 전체 강좌

 1강 - 오토핫키(AutoHotKey) 소개

 2강 - 프로그래밍의 시작, GUI 만들기

 3강 - 매크로 프로그래밍 1 (Button, Loop, if 사용법)

 4강 - 매크로 프로그래밍 2 (ImageSearch, Send, Sleep)

 5강 - 매크로 프로그래밍 3 (Gui Submit)

 6강 - 매크로 만들기 응용 1 (if 응용, CoordMode)

 7강 - 매크로 만들기 응용 2 (핫키, if 응용)

 8강 - 매크로 만들기 응용 3 (While, GUI와 변수의 활용 1)

 9강 - 매크로 만들기 응용 4 (GUI와 변수의 활용 2)

 10강 - 매크로 만들기 응용 5 (함수1)

 11강 - 매크로 만들기 응용 6 (함수2)

 12강 - 매크로 제작 예제
















안녕하세요~ 킴영감입니다.


지난시간에는 ButtonLoop, if를 사용해서 매크로의 틀을 만들어 봤습니다.


프로그래밍을 처음 접하시는 분들에게는 생소하기때문에 어려울 수 있겠지만 아주 기초적인 내용이기 때문에 반드시 모두 이해하시고 넘어오셔야 합니다.


그럼 네번째 강좌를 시작하겠습니다.


오늘은 매크로를 만드는데 가장 중요한 이미지를 찾고 마우스를 클릭하는 코드를 작성할 것입니다.


우선 SciTE를 실행시켜 지난시간까지 작성했던 코드를 불러옵니다. 오늘 작성하는 코드는 모두 아래 그림의 빨간색으로 표시된 부분에 작성합니다.



1. 이미지 찾기

이미지를 찾기 위해서는 우리가 찾기 원하는 이미지를 24비트 BMP 파일로 저장을 해 놓아야 합니다. 스크린샷을 찍은 다음 그림판에서 원하는 버튼 그림을 잘라서 이미지로 저장하시면 됩니다. 단 그림의 왼쪽 상단을 클릭하기 때문에 왼쪽 상단은 반드시 버튼 안에 위치해야 합니다.

이미지 파일이 있는 폴더와 이미지 파일명은 공백이 포함되어서는 안되며 한글은 사용가능합니다.


3개의 이미지 파일의 파일명을 "1.bmp", "2.bmp", "3.bmp"라고 하겠습니다.

우선 이미지를 찾는 코드를 설명드리겠습니다.


 ImageSearch, x좌표 변수, y좌표 변수, 0,0, A_ScreenWidth, A_ScreenHeight, 옵션 + 파일위치 + 파일명 


위 내용만으로는 조금 어렵게 느끼실 것 같습니다. 하지만 모두 똑같은 방법으로 쓰기 때문에 두려워하실 필요 없습니다. 한번 성공하면 복사해서 붙여넣으면 됩니다.


코드를 풀어서 써보면

ImageSearch, 찾은 이미지의 x좌표 값을 저장할 변수, 찾은 이미지의 y좌표 값을 저장할 변수, 이미지를 찾을 시작점의 x좌표, 이미지를 찾을 시작점의 y좌표, 이미지를 찾을 끝점의 x좌표, 이미지를 찾을 끝점의 y좌표, 옵션 + 파일위치+파일명

이렇게 표혈할 수 있습니다.

"0, 0, A_ScreenWidth, A_ScreenHeight"은 모니터 화면 전체에서 찾기원할때 쓰시면 됩니다.


ImageSearch를 실행하면 ErrorLevel이라는 값을 돌려줍니다. ErrorLevel이미지를 찾았을 경우 0, 못찾았을 경우 1의 값을 가집니다. 이 값을 사용해 찾기 원하는 이미지를 찾았는지 판단하게 되며, 이전시간에 배운 if를 이용해서 코드를 작성할 수 있습니다.


그럼 1번이미지를 찾는 코드를 함께 작성해보겠습니다.



빨간색 박스로 표시한 부분이 지난시간에 작성한 코드에 추가한 부분입니다.

찾은 이미지의 x좌표와 y좌표 값을 저장할 변수이름FoundXFoundY로 사용했습니다. (똑같이 사용하시면 됩니다.)

옵션과 파일명을 적는 부분에 *50정확도를 의미합니다. 숫자가 커질수록 정확도가 떨어지고 비슷한 이미지를 찾는 경우가 발생합니다. 반면에 숫자가 너무 적어질 경우에는 이미지를 못찾는 일이 발생할 수 있습니다. 30~50의 값이 가장 적당하며 바꿔가면서 테스트 해보시면 됩니다.

파일경로를 표시하는 부분에 %A_ScriptDir%는 오토핫키 스크립트가 있는 폴더를 의미합니다. "C:\Image\1.bmp"처럼 절대 경로를 적어도 되지만 스크립트가 있는 폴더 아래에 이미지를 저장하는 것이 편할 것 입니다.



2. 마우스 클릭과 Sleep

오토핫키는 매크로를 만들기위한 너무나도 다양한 기능들을 제공합니다. 

하지만 우리는 초보단계이기 때문에 Send만을 사용해서 매크로를 만들 것입니다. Send마우스와 키보드 입력을 할 수 있는 명령어이며 사용방법을 익혀 두시면 아주 유용하게 사용하실 수 있습니다.

우선 사용법을 알려드리겠습니다.


 Send {기능 + 옵션}


간단하죠??


그럼 함께 코드를 추가해 봅시다.



우리가 원하는 기능은 마우스 클릭이며 Click으로 표시됩니다. 옵션을 적는 부분에 클릭할 좌표를 입력하면 되고 우리는 찾은 이미지의 좌표를 FoundX와 FoundY라는 변수에 저장해 놓았기 때문에 %FoundX% %FoundY%라고 적으면 됩니다.


마지막으로 Sleep에 대해서 설명드리겠습니다.

Sleep은 대기하는 시간을 의미하며 아래와 같이 쓰시면 됩니다.


 Sleep, 대기시간


대기시간은 ms 단위입니다. 


이것으로 모든 설명을 마쳤습니다. 

천천히 따라오신분은 "의외로 쉬운데?"라고 느끼셨을 것입니다.

그럼 마지막으로 정말 쉽다는 것을 보여드리겠습니다.


아래의 그림을 보시면 빨간 박스로 표시한 부분이 "2.bmp"와 "3.bmp" 이미지를 찾아서 클릭하는 부분입니다. 

복사해서 붙여놓고 파일이름만 바꿨습니다.

참 쉽죠??



이렇게 해서 클리어 횟수 카운팅을 제외한 완전히 기초적인 매크로 프로그램 만들기를 마쳤습니다.


아주 간단하게 끝날 수 있는 이유는 던전만 반복해서 도는 기능만 구현하면 되기 때문입니다. 

하지만!! 여기서 만족할 수는 없죠?? 

다음강의 부터는 응용에 들어가겠습니다!!


우선 오늘까지 배우신 내용을 완벽하게 숙지하시기 바랍니다. 특히 if의 사용방법을 완벽하게 이해하셔야 응용을 하실수 있습니다.



한가지 말씀드리면 현재 많은 사람들이 사용하고 있는 게임 매크로는 오늘까지 배운 내용만 가지고도 구현이 가능합니다. 단 프로그래밍이 어떤 것인지를 이해하고, 2강에서 작성한 순서도를 그릴 수 있으며, Loop와 if의 사용법을 완벽하게 숙지하고 있어야 합니다. 다르게 말하면 Loop와 if만 알면 아무리 복잡한 프로그램이라도 만들 수 있다라고 할 수 있습니다.


제 강좌를 보시는 초보자분들은 절대 좌절하지 마시고 1~4강을 차근차근 따라하면서 익히시기 바랍니다.

익숙해 지면 또다른 재미를 맛보실 수 있을 것입니다.


이상으로 네번째 강좌를 마치겠습니다.

블로그 이미지

킴영감

프로그래밍과 게임공략, 게임과 관련된 프로그램에 대한 내용을 다룹니다.

,