오토핫키(AutoHotKey) 기초강좌 #11 - 매크로 만들기 응용 6 (함수2)




 전체 강좌

 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강 - 매크로 제작 예제
















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


어제 밤에 갑자기 블로그 이름이 너무 한쪽에 치우친 것 같아서 게시물이 더 많아지기전에 바꾸기로 결심하고


이름만 바꾸려 했는데 주소까지 바꿔버려서...ㅠㅠ 기존에 강좌 보시던 분들께 죄송하다는 말씀 먼저 드립니다.ㅠㅠ


이미지에 워터마크 바꾸느라 새벽까지 고생했네요...ㅠㅠ


피곤하지만 끝을 향해 힘내서 달려보겠습니다. 


오늘 강좌를 끝으로 오토핫키로 매크로를 제작하기 위한 기능들은 모두 배우게 됩니다. 강좌를 보시는 분들 모두 힘내서 따라오시기 바랍니다.


지난 시간에 함수를 어떻게 사용하는지에 대해 배웠습니다.


이번 강좌에서는 약간의 응용 방법을 배우고 우리가 어디에 적용해야 하는지에 대해 고민해 보겠습니다.


함수를 호출하게 되면 우리가 작성한 내용을 실행하게되고 중괄호를 벗어나면 함수가 종료되고 원래의 코드로 돌아옵니다. 

지난 강좌에서는 함수가 종료되는 시점을 중괄호가 끝나는 지점으로 스크립트를 작성했지만 다른 위치에서도 종료시킬 수 있습니다.


함수 및 핫키, 버튼같이 프로그램이 실행되는 중괄호를 종료하는 방법은 동일하며 첫시간에 배웠던 "return"을 사용하는 것입니다.


"return"이란 단어 뜻 그대로 "돌아간다"는 뜻입니다. 스크립트를 한줄씩 실행하다가 "return"을 만나게 되면 원래의 코드가 실행되는 곳으로 돌아가게 되는 것입니다.


이해가 잘 안되시는 분들을 위해서 코드를 작성해서 설명드리겠습니다.


아래와 같이 스크립트를 작성하세요



지난 강좌에서 작성했던 스크립트를 그대로 사용했습니다. "함수1"의 2번 이미지를 찾고 클릭하는 부분에 "return"을 추가했습니다. 


시작버튼을 누르면 시작버튼 내부의 코드를 한줄씩 실행하다가 "함수1"을 실행하게 됩니다. "함수1"이 호출되면 함수 내부의 코드를 한줄씩 실행하다가 마지막 중괄호를 닫으면 함수가 종료됩니다. 하지만, 2번 이미지를 클릭하게되면 if 내부의 return을 만나게 되어 함수를 종료하게 됩니다. 위 코드의 경우 함수가 종료되면 while에 의해서 다시 함수가 호출되기 때문에 프로그램이 종료되는 것은 아닙니다. 


이해를 돕기위해 두가지 경우를 예를 들어서 설명해드리겟습니다.

만약 2번클릭 체크박스에 체크를 하고 콤보박스에서 4번을 선택했을 경우 시작버튼을 누르게 되면

1번클릭→2번클릭 (함수종료) → 1번클릭 → 2번클릭 (함수종료).....가 반복됩니다.

2번클릭 체크박스에 체크를 해제하고 콤보박스에서 4번을 선택했을 경우 시작버튼을 누르면

1번클릭 → 3번클릭 → 4번클릭안함 (함수종료) → 1번클릭 → 3번클릭 → 4번클릭안함 (함수종료)......이렇게 동작합니다.


지금바로 테스트 해보시기 바랍니다.



두번째로 "return"을 만나서 원래의 자리로 돌아갈 때에 특정 값을 가지고 돌아갈 수 있습니다. 


아래와 같이 코드를 작성하세요.



Button시작 부분에 새로운 변수 "2번클릭성공"을 추가하고 함수 사용부분을 그림과 같이 바꿨습니다. 이전 실습에 있는 그림에서 언급되어있듯이 함수를 사용할 때에 값을 반환 받을 수 있으며 "반환받을 값을 저장할 변수 := 함수()"의 형태로 사용할 수 있습니다.

그 아래에 반환되는 값을 이용해서 "클리어횟수"를 카운트 하는 부분을 추가했습니다.


이어서 아래 그림과 같이 스크립트를 수정하세요.



이전 실습에서 "return"을 "return 1"로 바꿨습니다. 2번을 클릭하고 나서 "return"을 만나면 1을 반환하겠다는 뜻입니다. 카운트를 위에서 해주기 때문에 3번이미지 클릭부분에 있던 카운트 코드를 잘라내어 위로 옮긴 것입니다.


먼저 프로그램을 실행해 보세요. 2번이 클릭되면 숫자가 카운트 되는 것을 확인 하실 수 있을 것입니다.


이처럼 함수를 사용할 때 특정 값을 "return + 값"의 형태로 받아올 수 있습니다. 이와 함께 "return + 변수"와 같이 사용 할 수도 있으니 참고하시기 바랍니다.


이것으로 우리에게 필요한 함수의 사용방법에 대해서 모두 알아봤습니다.


그럼 매크로를 만들 때에는 어떻게 사용해야 할까요??


가장 적합한 곳은 지금 어느화면에 있는지 판단할 때 입니다.


가상 OS(블루스택, 지니모션, 윈드로이 등)를 사용할 때에 가장 문제가 되는 것 중 하나가 "랙"입니다. 버튼을 눌렀는데 화면이 안움직이는 경우가 참 많이 발생합니다. 이렇게 랙에 의해서 생기는 오류를 해결하는 방법으로 화면이 어디 있는지 찾고 그 화면에 따라 맞는 버튼을 클릭하거나 특정한 동작을 할 수 있게 프로그램을 만드는 것입니다.



오늘 강좌를 끝으로 매크로를 만들기 위해 필요한 오토핫키 기능은 모두 배웠습니다. 이제 남은 것은 응용하는 능력을 기르는 것입니다. 제 강좌를 보시는 분이 학생일 수도 있고 직장인 일수도 있습니다. 게임을 즐기기 위한 부수적인 수단으로써 매크로 제작에 도전하셨을 수도 있고 게임 할 시간이 없어서 매크로를 만들고 싶어 하실수도 있습니다. 어떠한 경우든 하루에 한두시간씩 투자해서 꾸준히 하시다 보면 어느 순간 남들이 부러워 할만한 프로그램이 제작되어 있을 것이라 장담할 수 있습니다.


다음 강좌는 오늘까지 배운 내용을 어떻게 게임에 적용할 것인가에 대해 팁을 드리려고 합니다. 


프로그램을 만드는데 가장 중요한 것은 그림을 그리는 것입니다. 어떠한 알고리즘으로 구현할 것인가를 생각할 수 있다면 구현하기 위해 필요한 요소들을 사용방법에 맞게 사용만 하시면 됩니다. 하지만, 이 말조차 어렵게 느껴지시는 분들을 위해 마지막 강좌에서 밑그림을 그려드릴 것입니다.


다음 강좌를 보시기 전에 오늘까지 배운내용을 얼마나 잘 이해하고 있느냐에 따라서 도움이 될 수도 있고 안될 수도 있습니다. 그러니 반드시 복습에 복습을 반복한 뒤에 마지막 강좌를 보시기 바랍니다.



블로그 이미지

킴영감

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

,