오토핫키(AutoHotKey) 기초강좌 #8 - 매크로 만들기 응용 3 (While, GUI와 변수의 활용 1)




 전체 강좌

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
















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


열심히 달리다 보니 벌써 8번째 강좌가 되었네요^^


지난 강좌까지 잘 따라 오시고 테스트도 많이 해보셨나요?? 


기초 강좌가 거의 끝나가니 조금만 더 힘내시길 바랍니다!!


지난 강좌때 드린 말씀 중에 "여기까지만 알아도 그럴듯한 매크로를 만들 수 있고 여러가지 옵션을 코드로 바로 작성해서 사용하면 된다"라고 말씀 드렸습니다.


하지만, 보기에 좋은 떡이 먹기도 좋다고 했으니 GUI를 이용해 여러가지 옵션을 만드는 방법에 대해 알려드리려고 합니다. 


예를 들어 반복 횟수를 설정하거나 특정 동작의 유무를 결정하는 등 많은 기능들을 생각할 수 있습니다. 이를 구현하기 위해서는 오늘 배우는 GUI 요소들과 변수의 개념과 사용방법에 대해 확실하게 아시는 것이 중요하기 때문에 프로그램을 고급스럽게(?) 만들고 싶으신 분은 꼭!! 모두 이해하셔야 합니다. (2개의 버튼만 있으면 되다는 분은 변수의 활용 부분만 보시면 됩니다.^^)


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


1. While


3번째 강좌에서 Loop를 배웠습니다. Loop어떤 동작을 반복하고 싶을 때 사용한다는 것을 알고 계실 것입니다. 오늘은 Loop의 고급형(?)이라고 할 수 있는 While에 대해 배워보겠습니다.


While은 특정 조건을 만족하면 중괄호 내부의 코드를 반복해서 실행합니다.


사용방법을 살펴보면


 While (조건)

 {

   반복해서 동작시킬 내용

 }


어디서 많이 본것 같은 느낌이 드시죠?^^

여기서 핵심은 "조건"입니다. Loop의 경우에는 옵션으로 반복횟수만 설정할 수 있었습니다. 하지만, While문은 조건을 만족하는 한 무한히 반복하기 때문에 더 많은 자유도가 주어집니다. 덧붙여 말하면 7강에서 배운 if와 마찬가지로 여러개의 조건을 사용할 수 있기 때문에 응용능력만 키운다면 엄청나게 다양한 프로그램을 작성할 수 있습니다.


지난시간까지 사용했던 Loop를 While로 바꿔보겠습니다.


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


오토핫키 while


우선 코드를 보다보니 잘못된 부분이 눈에 들어오네요...ㅠ "ture"로 되어 있는 것을 위 그림처럼 "true"로 모두 바꿔주세요. 아래의 if의 조건으로 적은 부분도 모두 고치셔야 합니다.


별표로 표시한 부분이 Loop를 While로 바꾼 부분입니다. Loop 대신 While을 적고 조건을 적어주시면 됩니다. "매크로시작" 변수에 "true" 라는 값이 들어있으면 계속 반복하겠다는 뜻입니다.

중괄호 내부에 코드가 짧아진 것을 느끼셨나요?? 3강에서 작성한 루프 탈출을 위한 부분이 사라졌습니다.

Loop는 탈출할 수 있는 조건을 설정할 수 없기 때문에 break를 사용해서 탈출을 시켜줘야 했지만 While은 기본적으로 조건을 만족해야 반복을 하기 때문에 필요가 없는 것입니다. 다르게 말하면 조건을 만족하지 않으면 중괄호 내부의 코드를 실행하지 않고 다음으로 넘어가게 됩니다.


여기까지 스크립트를 작성 하셨으면 테스트를 해본 다음에 "GUI와 변수의 활용 1"로 넘어가시기 바랍니다.


2. GUI와 변수의 활용 1


이전 강좌까지 우리는 Button과 Text만 사용해서 스크립트를 작성했습니다. 여러가지 기능을 가진 매크로를 구현하기위해 Edit, Checkbox, ComboBox 등 여러가지 GUI요소들을 사용할 수 있습니다. 오늘은 Edit에 대해 알아볼 것이며 실제로 적용했을 때 어떻게 사용해야 하는지에 대해 배워보겠습니다.


2-1. Edit


Edit는 프로그램 사용자로부터 텍스트를 입력받고 싶은 때 사용합니다.


사용방법은 아래와 같습니다.


 Gui, Add, Edit, 옵션, 초기 값


사용하는 방법은 모든 GUI가 유사한 형태를 가집니다. Add, 뒤에 Edit을 적어주고 옵션과 초기값을 적어주시면 됩니다.


빠른 이해를 위해 바로 우리 프로그램에 적용해 보도록 하겠습니다.


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


오토핫키 edit


빨간박스 안에 있는 부분이 추가한 코드입니다. 시작버튼이 있는 자리에 Text와 Edit를 추가했기 때문에 버튼의 좌표를 위 그림과 같이 수정해주셔야 합니다.

Edit의 옵션 부분에 변수이름을 "반복횟수"로 설정했습니다. 값을 바꿔 줘야하기 때문에 "v반복횟수"라고 적은 것입니다. 초기 값을 적는 부분에 0이라고 적었습니다. 프로그램을 실행시키면 Edit에 0이 입력되어 있을 것입니다.


GUI구성은 코드만으로 작성하기에는 상당한 시간이 필요합니다. 하지만 아직 간단하기 때문에 코드로 바로 작성하고 

추후에 GUI Creater를 사용하는 방법에 대해 알려드리겠습니다.


그럼 "F5"를 눌러서 실행해봅시다.



화면이 이쁘게 구성되었네요.^^


이제 매크로의 반복횟수를 정해줄 수 있습니다.



여기서 While의 진가가 들어나게 됩니다.


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


오토핫키 while


이전 강좌에서 "클리어횟수" 변수를 만들어 놓았고 3번 이미지를 클릭할 때에 1씩 더해주도록 해놓았기 때문에 던전을 몇번 클리어 했는지 알 수 있습니다. 


While의 조건을 보시면 7강에서 배운 것과 같이 3개의 조건을 사용했습니다. 괄호에 주목해서 보시면 (매크로시작 = true) 가 조건1, (클리어횟수 < 반복횟수) || (반복횟수 = 0)조건2가 됩니다. 이 사이에 있는 "&&"는 양 옆에 있는 조건을 모두 만족해야 함을 의미합니다. 조건2는 (클리어횟수<반복횟수)조건 2-1, (반복횟수 = 0)조건 2-1이 됩니다. 이 사이에 있는 "||"는 양 옆에 있는 조건 중 하나만 만족하면 된다는 의미입니다. 

조건을 생각하실 때 순서는 조건2-1 와 조건2-2 의 결과 → 조건1 과 조건1 의 결과로 하시면 이해하시기 편할 겁니다.


말로 풀어서 다시한번 설명드리면 시작버튼을 누른 뒤에 한줄씩 실행되고 While을 만났을 때 클리어횟수가 반복횟수보다 작거나 반복횟수가 0일때와 함께 매크로시작 변수에 true값이 들어있어야 중괄호 내부의 코드를 반복해서 실행하는 것입니다.


조건을 조금 더 쉽게 접근하시려면 수학시간에 배웠던 "명제"와 같다고 생각하시면 됩니다.


마지막으로 24번줄에 있는 코드를 봐주세요.

Gui, Submit, nohideGUI의 내용이 변경되었을 때 업데이트 하는 코드입니다. Submit의 의미를 업데이트라고 생각하시면 됩니다.

매크로를 시작하기 전에 Edit에 입력된 반복횟수의 값을 받아와야 하기때문에 반드시 적어주셔야 되며 우리는 앞서 프로그램을 실행 시킨 뒤 매크로 상태를 표시하기 위해 미리 추가를 했기 때문에 넘어간 것입니다.



오늘 강좌는 유난히 길게 느껴지네요...ㅠ


내용이 조금씩 어려워 지는데 조금이라도 쉽게 설명드리려고 하다보니 시간이 많이 걸리는 것 같습니다.


앞으로 진행되는 강의는 조급한 마음에 따라하는 것에 그치면 응용이 어려워 쉽게 포기하는 경우가 생길 수 있습니다. 그러니 마음을 느긋하게 가지고 최대한 많이 연습에 연습을 거듭하시고, 반드시 익숙해 지신 다음에 다음 강좌를 보시기 바랍니다.


이것으로 이번 강좌를 마치겠습니다.

블로그 이미지

킴영감

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