이번강좌는 Os.pullEvent 중 하나인 키보드 입력이에요. 키보드외에도 많으니 이벤트를 좀더 보시고 싶으시면
http://computercraft.info/wiki/Os.pullEvent
위 링크로 가서 보실수 있어요.
1. 강제종료를 막아보자.
여태까지 문들은 CTRL+T(강제종료) 키나 CTRL+S(시스템종료) CTRL+R(시스템 재부팅)을 통해서 프로그램을 종료 시키고 소스를 볼 수 있었죠?
이소스는 강제종료를 막아주는 강력한 기능을 수행해요.
본 필자도 왜 이게 막히는지 아직 잘 몰라요. 그냥 이걸 넣으면 강제 종료를 막을수 있다는것만 알아두세요.
os.pullEvent = os.pullEventRaw
위 소스는 시스템종료나 시스템재부팅은 막지 못하지만, 나중에 그것도 막는 방법을 꼭 알려드릴게요
2. 키보드 입력을 인식해보자.
여태까지 비밀번호는 read() 함수를 통해서 기입해서 그 값을 전송하는 기법을 썼었지만, 이번에는 이전과 달리 키보드누르는대로 입력되는 기법이에요.
os.pullEvent() 이벤트중 하나인데요.
위키의 정보에 따르면 키보드 입력은 1개의 파라미터를 가지는것으로 나와있어요.
그래서 event, param = os.pullEvent() 로 정의해두는거죠.
참고사항 : event 와 param 은 변수명입니다
event 에는 발생한 이벤트 데이터가 저장되요. 종류가 좀 다양한데, 우리는 키보드 입력한 신호를 받아야하니 key 라는 값을 쓰도록해요.
param 은 키보드를 누른 신호값인데요. 이 코드는 param 값에서 확인이 가능하지만, 번거로우니까. 이미지 첨부할게요.
3. 완성소스 예제
4. 시연영상
5. 부록 ( 복붙용 소스 )
local i = 0
local side = "right"
local delay = 3
term.clear()
term.setCursorPos(1,1)
print("First Password")
while true do
os.pullEvent = os.pullEventRaw
event, param = os.pullEvent()
if event == 'key' then
if i == 0 and param == 200 then
i = i+1
print("Second Password")
elseif i == 1 and param == 208 then
i = i+1
print("Thrid Password")
elseif i == 2 and param == 203 then
i = i+1
print("Final Password")
elseif i == 3 and param == 205 then
i = 0
print("Open the door!")
redstone.setOutput(side,true)
os.sleep(delay)
redstone.setOutput(side,false)
term.clear()
term.setCursorPos(1,1)
print("First Password")
elseif param == 16 then
term.clear()
term.setCursorPos(1,1)
print("Shut down system")
break
else
i = 0
print("Sorry, try again!")
os.sleep(delay)
term.clear()
term.setCursorPos(1,1)
print("First Password")
end
end
end
'마인크래프트(Minecraft) > Computer Craft' 카테고리의 다른 글
[Computer Craft] 7. Computer Craft 란 무엇인가? (2) | 2013.06.11 |
---|---|
[Computer Craft] 6. 무선 조정을 해보자. rednet (8) | 2013.05.10 |
[Computer Craft] 4. 비밀번호 문 예제2 (0) | 2013.04.30 |
[Computer Craft] 3. 비밀번호 문 예제 (9) | 2013.04.28 |
[Computer Craft] 2. 시간을 대기 시켜보자. (os.sleep) (0) | 2013.04.26 |