본문 바로가기

마인크래프트(Minecraft)/Computer Craft

[Computer Craft] 18. 모니터로 문 열고 닫기

0. 주절주절


컴퓨터 들여다보기도 싫다. 플로피 디스크 가지고 다니기도 귀찮다. 채팅 치는것도 귀찮다.

하시는분들에게는 반가운 프로그래밍 일수도 있습니다.

바로 모니터를 사용한 프로그래밍이거든요.

물론 편하게 게임을 하고싶은 욕구는 누구나 다 가지고 있지요.

하지만 정작 모니터 프로그래밍은 타이핑한만큼 결과는 그리 많이 나오지 않아요.

신경쓸게 이만저만 아니거든요.

모니터의 크기와 폰트 스케일, 버튼 위치. 버튼의좌표값 찾기 등 할게 많죠.

이 모든 과정을 끝마쳐야만 비로소 프로그래밍 작성을 시작할수 있죠.



1. 주석소스


term.clear() -- 컴퓨터의 화면을 청소한다.
term.setCursorPos(1,1) -- 컴퓨터의 커서를 좌측 상단으로 옮겨준다.
print("this is monitor door control") -- 메시지 출력
monitor = peripheral.wrap('monitor_0') -- 무선 모뎀이 연결된 모니터와 연결시켜준다. (이름 체크 필수)
monitor.setBackgroundColor(colors.black) -- 모니터의 화면을 검은색으로 정한다.
monitor.clear() -- 모니터를 청소한다
monitor.setTextScale(4) -- 글씨 크기를 결정한다 (사이즈 0.5~5)
local x,y = monitor.getSize() -- 모니터의 크기를 잡아준다.
x = x/2-2
y = y/2
local status = 0
monitor.setBackgroundColor(colors.green) -- 모니터의 화면을 초록색으로 정한다.
monitor.setCursorPos(x,y) -- 모니터의 커서를 x, y좌표로 이동시켜준다.
monitor.write('  open  ') --   open  글씨를 출력한다. 배경색이 초록이므로 open 에는 초록색의 배경이 부여된다.
redstone.setOutput('right',true) -- 레드스톤신호 우측
while true do
  event, side, mx, my = os.pullEvent('monitor_touch') -- 이벤트를 정한다 (모니터 터치를 입력했으나 생각시 event 변수를 활용해야된다.)
  monitor.setCursorPos(x,y)
  if mx >= 8 and mx <= 13 and my >=3 and my <= 5 then -- 터치모니터의 영역 x 8~13 y 3~5
    if status == 1 then
      monitor.setBackgroundColor(colors.green)
      redstone.setOutput('right',true)
      monitor.write('  open  ')
      status = 0
    else
      monitor.setBackgroundColor(colors.red)
      redstone.setOutput('right',false)
      monitor.write(' closed ')
      status = 1
    end
  end
  os.sleep(0.05)
end



2. 복붙용소스


term.clear()
term.setCursorPos(1,1)
print("this is monitor door control")
monitor = peripheral.wrap('monitor_0')
monitor.setBackgroundColor(colors.black)
monitor.clear()
monitor.setTextScale(4)
local x,y = monitor.getSize()
x = x/2-2
y = y/2
local status = 0
monitor.setBackgroundColor(colors.green)
monitor.setCursorPos(x,y)
monitor.write('  open  ')
redstone.setOutput('right',true)
while true do
  event, side, mx, my = os.pullEvent('monitor_touch')
  monitor.setCursorPos(x,y)
  if mx >= 8 and mx <= 13 and my >=3 and my <= 5 then
    if status == 1 then
      monitor.setBackgroundColor(colors.green)
      redstone.setOutput('right',true)
      monitor.write('  open  ')
      status = 0
    else
      monitor.setBackgroundColor(colors.red)
      redstone.setOutput('right',false)
      monitor.write(' closed ')
      status = 1
    end
  end
  os.sleep(0.05)
end



3. 시연영상