본문 바로가기

카테고리 없음

Autothokey #40, Lotto 발생기 수정버전, 원하는 번호 추가하기

반응형

https://youtu.be/PA1Xo3WuQjY

 

- YouTube

 

www.youtube.com

예전에 랜덤함수에 대한 예시로 로또 번호 생성기를 소개해 드렸는데, 많은 분들이 본인이 지정한 숫자를 기본으로 넣고 나머지 번호만 번호를 생성하는 기능을 원하셔서 해당 기능이 추가된 버전을 소개해 드립니다.

기본적인 필요는 사용자가 지정한 숫자만큼은 기본으로 넣고, 나머지 숫자에 대해서만 발생하면 되므로 일단 사용자 입력을 받아 들일 수 있도록 UI에 추가해 줘야겠고, 입력된 숫자를 읽어 들여서, 몇개를 입력했는지? 해당 값들을 어떻게 저장할지등을 정해야겠죠. 이후에 나머지 숫자만큼만 번호를 발생하는 로직으로 진행하면 되겠습니다.

먼저 사용자 입력을 위해 UI를 수정합니다.

 

Gui, Add, Text, x60  y55  w100 h20 , 포함할 숫자
Gui, Add, Edit, x170 y55  w100 h20 vAddNo  , 

 

임의로 AddNo라는 변수로 저장하게 했습니다.

다음에는 해당 변수에 입력된 숫자는 몇개인지? 해당 값들을 미리 넣어야겠죠.

 

Lotto(0에서 아래 부분을 추가해 줍니다.

cnt :=1 ;원래 있던 부분
;여기부터 추가된 부분입니다.
aNo := StrSplit(AddNo," ") ; 변수에 입력된 값들을 StrSplit을 써서 공백을 기준으로 구분해서 배열로 저장해 줍니다.
aCnt := aNo.Length()       ; 배열의 갯수를 받아옵니다.
if ( aCnt > 0 )                ; 배열의 갯수가 0보다 크면 1개이상 입력한 경우입니다.
{
  Loop %aCnt%             ; 입력된 갯수만큼 루프를 돌면서 각각의 값을 후보배열에 입력해 줍니다.
  {
    cand[A_Index] := aNo[A_Index]
  }
}
loopcnt := 6-aCnt        ;이미 입력된 갯수만큼은 빼고 loop를 돌아야 하므로 최대 6에서 빼주면 수행할 loop숫자가 저장이 됩니다.
cnt := cnt+aCnt          ; index로 cnt변수를 사용하는데 이미 입력된 갯수만큼은 건너띄도록 더해 줍니다.

 

이제 남아있는 loop숫자만큼만 번호를 발생하도록 합니다.

나머지는 동일합니다.

아래는 실제로 실행해 본 결과입니다.

임의로 3가지 숫자를 넣었습니다. ( 1 10 30 )

1 10 30이 포함된채로 남은 숫자만 생성하여 보여줍니다.

 

요청이 많아서 만들었지만, 심취하지 않도록 재미로만 하시기 바랍니다.

 

반응형