반응형
이번에는 랜덤함수를 이용해서 주사위 게임과 로또 번호 생성기를 만들어보도록 하자. lua script에서의 랜덤함수는 math.random()이다. 사용 방법은 math.random(최소 숫자, 최대숫자) 형식으로 되어 있다. 그리고 이 랜덤함수의 시드값은 math.randomseed(시드값) 으로 주면 된다. 그리고 이 시드값은 직접 숫자로 줄 수도 있지만, 일반적으로는 시스템 시간을 시드값으로 해서 랜덤함수를 구현하는 것이 일반적이다. 그래서 이러한 내용들을 가지고 이제 주사위 게임과 로또 번호 생성기를 만들어보도록 하자.
먼저 주사위 게임을 구현해보도록 하자.
now = os.time() math.randomseed(now) function on_msg_receive(msg) if(msg.text == "dice") then mark_read(msg.from.print_name, ok_cb, false) send_msg(msg.from.print_name, math.random(1,6), ok_cb, false) end end function ok_cb(extra, succes, result) end
이렇게 하면 dice라고 입력했을 때 1~6까지의 랜덤의 숫자를 메시지로 보내준다. 다음으로 로또 번호 생성기를 만들어보도록 하자. 이 로또 번호 생성기는 1~45까지의 숫자 중 6개의 숫자를 임의로 출력해주는 것이다.
now = os.time() math.randomseed(now) function on_msg_receive(msg) message = string.lower(msg.text) if(message == "dice") then mark_read(msg.from.print_name, ok_cb, false) send_msg(msg.from.print_name, math.random(1,6), ok_cb, false) end if(message == "lotto") then mark_read(msg.from.print_name, ok_cb, false) send_msg(msg.from.print_name, lotto(), ok_cb, false) end end function lotto() lotto_list = {} for i=1, 45 do lotto_list[i] = i end for i=1, 45 do a = math.random(1, 45) b = math.random(1, 45) lotto_list[a], lotto_list[b] = lotto_list[b], lotto_list[a] end str = "" for i=1, 6 do str = str .. " " .. lotto_list[i] end return str end function ok_cb(extra, succes, result) end
로또 번호 생성기의 경우 주사위와 달리 구현해야 할 내용이 복잡하기 때문에 lotto()라는 새로운 함수를 선언하였다. 여기서 24번째 줄을 보면 약간 신기한 방식으로 써져있는데, 그 줄의 의미는 lotto_list[a]와 lotto_list[b]의 값을 서로 바꾼다라는 의미로 사용한다. 그리고 lua script에서는 문자열을 서로 이어붙일 때 '+'가 아닌 '..'을 이용해서 문자열을 이어붙인다.
반응형
'컴퓨터 > 기타' 카테고리의 다른 글
도서 바코드 인식기 프로그램 제작 (2) (0) | 2016.01.26 |
---|---|
도서 바코드 인식기 프로그램 제작 (1) (3) | 2016.01.23 |
Project 1.0 telegram 봇 제작하기.(2) (0) | 2014.11.04 |
Project 1.0 telegram 봇 제작하기.(1) (0) | 2014.10.30 |
Project 1.0 telegram 봇 제작하기.(0) (0) | 2014.10.30 |