컴퓨터크래프트 강좌

[컴퓨터크래프트] 22. 터틀 원격조종


안녕하세요 okok99haha입니다

이번에는 터틀을 원격조종 하는 방법을 배워볼텐데요.

일단 이번 강좌는 컴퓨터크래프트에서의 네트워크라고 할수 있는 레드넷 (Rednet)을 쓸텐데요,

무엇이던지 하려면 API부터 익혀두어야겠죠.

Method NameDescription
rednet.open(string side)

Wireless Modem의 전원을 킵니다

rednet.close(string side)

Wireless Modem의 전원을 끕니다

rednet.announce()

내용이 없는 메세지를 모든 컴퓨터에 보냅니다.

rednet.send(number receiverID, string message)

특정한 컴퓨터에 메세지를 보냅니다.

rednet.broadcast(string message)

모든 컴퓨터에 메세지를 보냅니다.

rednet.receive(number timeout)

메세지를 기다립니다.

rednet.isOpen(string side)

Wireless Modem의 전원이 켜져있으면 true로 나옵니다.

이중에서 오늘 쓸껀 필요한건 rednet.open( ), rednet.broadcast( ), rednet.receive( )입니다.

일단 레드넷을 쓰려면 Wireless Modem이 필요한데요,

역시 컴크는 쌉니다.

그리고 이걸 컴퓨터의 아무 방향에다 붙여주시면 됩니다. (Shift+오른쪽클릭)

저는 위에다가 했습니다.

그리고 컴퓨터에 메세지를 보내는 프로그램을 만들어보겠습니다.

일단 제일 먼저 Wireless Modem의 전원을 켜야햡니다.

위의 API중 rednet.open("Wireless Modem의 위치")을 사용하면 됩니다. 저같은 경우는 Wireless Modem이 컴퓨터의 위에 있으닌까 rednet.open("top")이 되겠군요.

저 컴퓨터는 메세지를 보내는용도이니 문자만 보내면 할일을 다 한것입니다.

유저가 입력한 문자를 다른 컴퓨터에 보내는 무한 루프만 만들면 되는것입니다.

이렇게 하시면 됩니다.

while true do는 무한루프의 시작이고,

rednet.broadcast(read( ))read( ), 즉 유저가 타입한 문자를 그대로 모든 컴퓨터에 메세지로 보낸다는뜻입니다. (rednet.broadcast( )는 위에서 설명했다싶이 모든 컴퓨터에 문자를 보냅니다.)

sleep(.1)은 문자를 보낸 후 .1초동안 잔다는 뜻입니다. 저게 없으면 아마도 에러가 뜰꺼에요.

마지막으로 end는 무한루프를 끝내줍니다.

실행을 해보겠습니다.

실행을 하시면 밑의 커서는 깜빡거리지만 앞이 허전합니다. 바로 위의 프로그램 시작할땐 있었던 >가 없어진것입니다. 이것은 프로그램이 유저가 메세지를 입력해서 엔터를 누를때까지 기다리고 있단 뜻입니다.

그리고 무한으로 했으니 저런식으로 계속 메세지를 입력해서 보낼수가 있습니다.

그리고 나가보는데.. 어?!

Wireless Modem이랑 컴퓨터와 연결되있는 쪽에 빨간색 불빛이 들어왔습니다.

이것은 Wireless Modem이 켜져있다고 알려주는겁니다.

그다음은 터틀에서 메세지를 받아서 특정 동작을 하는 프로그램을 만들어야하는데요, Wireless Turtle을 만들어줍니다.

터틀에 곡괭이 다는것처럼 똑같이 Wireless Modem이랑 터틀이랑 조합하면 됩니다.

이런식으로 Wireless Mining Turtle도 만들수 있습니다.

이젠 터틀에서도 프로그램을 만들어야 합니다.

아까와 같이 일단 Wireless Modem을 켜야하는데요, 터틀에는 무저군! 오른쪽에 있습니다.

그리고 무한루프를 생성하고, rednet.receive( )로 받은 메세지를 id, msg순으로 정렬해줍니다. 이때 id란 컴퓨터의 id와 msg는 받은 메세지를 말하는것입니다.

그리고 이제 if statement를 이용하여 "만약 문자가 a라면 무엇을 하라"라는 식으로 만들어주어야 합니다.

이런식으로 계속 생성해주시면 됩니다.


  if msg == "forward" then 만약 받은 메세지가 forward이라면

    turtle.forward() turtle.forward()를 실행한다

  end 

이런식으로 원하시는 기능을 추가하시면 됩니다.

중요한점은, 모든 if statement마다 뒤에 end가 들어가고, 스크립트의 마지막에 무한루프를 끝내는 end가 하나 들어가야합니다.


if msg == "turn left" then

    turtle.turnLeft()

  end if statement를 끝내는 end

end 무한루프를 끝내는 end


이런식으로요.

그리고 프로그램을 실행하시고 컴퓨터에서 메세지를 보내면 됩니다.

위의 동영상처럼 된다면 성공입니다.

읽어주셔서 감사합니다. 댓글로 원하는 강좌 있으면 말해주세요 다음주에 쓸게 없습니다 ㅠ