본문 바로가기

ComputerCraft

[Computer Craft] 19. <응용기술> 패턴 인식 오랜만에 컴퓨터크래프트 관련 글을 쓰네요소스는 생각외로 단순하게되어 있습니다이전에 썼던 강좌글에 다 나와있던 API 함수를 활용한것이죠. 5개의 함수로 이루어져있으며 각자의 역할은 구분 지어져 있습니다. 1. T_C() turtle.compare() 함수를 쓰는것이며, 8번슬롯부터 16번 슬롯까지 하나씩 선택을 해줍니다.만일 선택된 블럭이 아래의 길과 일치하면 그 블럭에 맞는 행동값 코드를 부여해줍니다. 2. T_S(num) turtle.select() 함수를 쓰는것이며 길게 치기 귀찮아서 함수화했습니다. 3. T_GetItemCount() 아이템수를 계산해주는 turtle.getItemCount() 함수를 썻습니다.대게 상자에 넣을때 ([현재들고있는 아이템의 수량 ] -1)을 지정하기위해서 쓰는편이죠... 더보기
[Computer Craft] 17. <부록?> 지양해야할 프로그래밍 - 간단한 예제들 LUA 프로그래밍 하다보면, 어느 구간에 다가가면 엄청난 렉을 유발하는 경험이 있잖아요.원인은 무한반복을 하는 프로그래밍 때문이죠.물론 코드만 잘 짜여져 있다면 무한반복을 하더라도 아무런 탈이 없습니다. 아래의 여러가지 샘플 소스를 통해서 문제점을 적도록 하겠습니다. 샘플소스 1 while true do turtle.dig()end 터틀이 무한으로 채광을 하는것인데요.블럭이 있던 없건간에 터틀의 1회 채광행위가 빠르지 않아 문제점은 없어보입니다.터틀의 이동 및 채광 함수는 속도가 빠르지 않아 큰 문제는 없습니다만, 딜레이 함수를 걸어주는게 매우 좋습니다. 샘플소스 1 - 수정 while true do turtle.dig() os.sleep(0.05) end딜레이를 0.05초를 걸어주면 해결됩니다. = =.. 더보기
[Computer Craft] 16. <응용기술> 유저 인식 문 1. 개요 본 강좌는 컴퓨터크래프트 애드온 모드인 OpenCCSensors 가 설치되어 있어야 사용할 수 있습니다모드 자료 : OpenCCSensors 지난 시간엔 채팅인식하는 시스템을 구축해보았는데요타이핑을 하기조차 귀찮아 하는 여러분들을 위해 유저감지센서라는 아이템을 써봅시다. Sensor 조합법 Proximity Sensor Card (MK1) 조합법 2. 새로운 API들 os.loadAPI("ocs/apis/sensor") : API 함수를 불러오는 명령어입니다. math.sqrt() : 루트를 의미합니다.math.pow(밑,지수) : 제곱을 의미 합니다. = math.pow(2,3) 으로 표현 할 수 있습니다.sensor.wrap(side) : 센서의 방향을 결정합니다. detect.getTar.. 더보기
[Computer Craft] 15. <응용기술> 채팅 인식 문 본 강좌는 컴퓨터크래프트 애드온 모드인 MiscPeripherals 가 설치되어 있어야 사용할 수 있습니다. 모드 자료 : MiscPeripherals 0. 개요 그동안 플로피 디스크를 가지고 다니거나 컴퓨터 안에서 직접 제어를 해야하니 이만저만 불편한게 아니였습니다.그러나 컴퓨터크래프트 애드온 모드인 MiscPeripherals 가 추가됨으로써 채팅으로 문을 열고 닫고 하게 가능해졌죠.Chat Box 라는아이템을 사용한 채팅으로 제어하는것을 알아보도록 해요. 1. Chat Box 조합법 금4개, 노트블럭4개, 다이아몬드1개 들어갑니다. 꽤나 비싸네요. 2. 주석소스 chatbox = peripheral.wrap('left') -- Chat Box 가 있는 쪽을 연결 시켜준다.while true do e.. 더보기
[Computer Craft] 14. <응용기술> 플로피디스크 비밀번호 문 14. 플로피디스크 비밀번호 문 이번에는 예전에 썼던 대부분 소스들이 있기 떄문에 짧게 쓰겠습니다. fs.exists(dir) : 디렉토리나 파일이 존재하는가 체크해주는 함수h.eject() : 디스크를 배출해주는 함수 h.eject() 에서 h 에는 peripheral.wrap(side) 함수로 디스크 드라이버가 지정이 되었을때,그 변수의 이름을 h값으로 가집니다. 예)local drive = peripheral.wrap('left')drive.eject() local chick = peripheral.wrap('left')chick.eject()1. 주석소스 local side = 'bottom' -- 문을 열때 보낼 레드스톤 신호 위치 local drive = peripheral.wrap('left.. 더보기
[Computer Craft] 13. <기초강좌> 터틀 채광,블럭감지, 블럭비교 및 블럭놓기 API 0. 개요 이번강좌에서는 어찌보면 매우 중요한 요소가 있다고 볼 수 있는데요. 블럭이 터틀 앞에 놓여 있느냐? 내가 선택한 블럭과 일치하느냐? 이런것을 감지가 가능하게되면서 좀더 스마트하게 블럭 채취행위가 가능했죠. 또한 감지가 됬으면 블럭을 두거나 채취하는 행위가 당연히 뒤따르게 된거죠. 컴퓨터크래프트에서 만들어 두었던 tunnel 명령어를 쳐보면 아래에 블럭이 없을때 선택된 슬롯의 블럭을 놓아두는 것을 볼수있는데요. 이게 블럭감지 함수를 사용했음을 알 수 있다는것이죠. 그만큼 이 함수가 좋다는 의미겠죠? 그러므로 이번 강좌를 통해서 좀더 스마트해진 터틀을 만들어 보도록하죠. 1. 채광 API 터틀이 채광하는 API 함수는 기본적으로 세가지를 지원합니다. 농사 터틀경우에는 땅을 경작하지만, 그외의 터틀.. 더보기
[Computer Craft] [시연영상] 나무베기 터틀 1.5.2 이후 예전에 뼛가루 전성기 시절 1.4.7 포함 이전 버전에서는 뼛가루를 1개만 넣어주면 나무가 자라났기 때문에 뼛가루 판정을 하지 않아도 됬었죠. 그러나 1.5 이후에는 뼛가루가 너프 되면서 여러번 뿌려야하는 문제점에 봉착하게 됬습니다. 그래서 1.4.7 때 작성한 제 터틀 알고리즘이 쓸모가 없어지게 됬었죠. 그래서 다시 터틀을 알고리즘을 설계하고 조촐하게나마 만들어 봤습니다. 아직 약간의 문제점이 남아 있지만, 나무 베는데는 지장이 없을정도입니다. 문제점 : 뼛가루 사용시 상자에 뼛가루가 없을때 뼛가루를 찾아 빙글빙글 도는 현상 정작 나무가 자라나면 베어버린다는... 문제점2 : config 시스템 처리가 되어있지 않음. database 파일[아이템 슬롯위치, 뼛가루 사용 on/off 설정 정보]을직접 수.. 더보기
[Computer Craft] 10. Web DataBase - 소스를 편하게 불러오자. 이전 강좌에서는 소스를 편하게 붙여 넣는 방법을 소개했었는데요.타인의 서버에서는 저 방법이 안되므로 다른 방법이 필요 했었죠.그렇다고 서버 어드민에게 파일을 주면서 '이것좀 넣어주세요'라고 부탁하기도 좀 부담스럽잖아요. 1. CONFIG 파일을 수정하자. 우선 이 소스를 쓰기 위해서는 서버 설정옵션을 건들여줄 필요가 있는데요.경로 : %appdata%\.minecraft\config\ 이번 강좌에서는 http api 함수를 써야하므로 ComputerCraft.cfg 파일을 메모장으로 열어서B:enableAPI_http=false 이것을 B:enableAPI_http=true이렇게 바꾸셔야합니다. 2. 시연영상 3. 소스코드 -- save file name 메시지 를 화면에 보여준다. print("save.. 더보기
[Computer Craft] 9. DataBase - 소스를 편하게 붙여보자. (자신의 서버, 싱글에서 사용 가능) 여태까지 복붙용 소스를 올리면서, 이 소스를 어떻게 복사해야할까 고민하던분이 있었더군요.세날님의 댓글을 보고, '아차 이걸 빼먹었구나' 하는 생각이 들어 포스팅을 작성합니다. 마인크래프트에서 자신이 만든 월드를 찾아가면 saves 에 있는 computer 라는 폴더가 보이는데요. 경로 : %appdata%\.minecraft\saves\월드\computer\ 이 안에 들어가면 자신이 만들었던 모든 소스들을 볼 수 있어요.상수(0,1,2,3,4,5,…) 로 된것은 현재 작성된 프로그래밍이 든 폴더(컴퓨터, 터틀)이며,disk 폴더는 플로피 디스크의 데이터가 저장되어 있는 공간이죠.labels.txt 는 레이블이 지정된 Database 라고 보면됩니다. 열어보면 자신이 지정한 레이블을 볼 수 있죠.lasti.. 더보기
[Computer Craft] 8. LABEL (레이블) 자의건 타의건간에 컴퓨터가 아이템화 되었을때는자신이 만들어 두었던 모든 프로그래밍 자료는 소실되었죠. 정확히는 소실된것은 아니며,서버나 클라이언트쪽 월드에보면 프로그래밍한 데이터가 그대로 남아있는데요. 컴퓨터가 부서지게 되면 새로운 ID값이 부여가 되기때문에기존의 자료를 다시 사용할 수 없는거에요. 싱글에서는 얼마든지 파일을 복구가 가능하지만,자신이 운영하는 서버가 아니라면 프로그래밍 복구는 불가능합니다. 그래서 LABEL(레이블) 명령어를 통해컴퓨터가 블럭화가 되어도 데이터 유실을 방지 하는 기법을 배워봅시다. 1. 시연 영상 2. 레이블 사용법 (정의되어 있는 프로그램) 컴퓨터를 설치하고 ID 값을 입력하면 현재 컴퓨터의 번호를 볼 수 있는데요.id값은 0부터 차레대로 증가한다는점이 특징이죠. 이제 .. 더보기