야생 모드에서 사냥과 채집, 채광을 하다 보면 여러 아이템이 보관함인 ‘인벤토리’에 모이게 됩니다.
인벤토리가 꽉 차 더 이상 아이템을 수집할 수 없으면 상자에 아이템을 옮겨야 해요.
이때 아이템 별로 구분해 상자에 담아 두면 나중에 편하게 아이템을 사용할 수 있어요.
오늘은 자동으로 아이템을 분류해서 상자에 넣는 기계를 만들어 보겠습니다.
크리에이티브 모드에서는 모든 아이템을 무한히 사용할 수 있어요. 하지만 야생 모드에서는 필요한 모든 아이템 블록을 스스로 구해야 합니다. 다이아몬드 블록을 구하기 위해서 2시간 동안 땅을 파기도 하고 영혼 모래를 얻기 위해서 위험이 도사리는 네더 월드로 가기도 하지요.
이렇게 힘들게 모은 아이템을 인벤토리가 다 찼다고 해서 버릴 순 없어요. 그래서 모든 아이템 블록을 상자에 잘 보관하는 것이 좋습니다. 상자마다 아이템을 잘 분류해 담아두면 필요할 때 다시 꺼내 쓸 수 있거든요.
<;문제 상황>; 많은 아이템을 자동으로 분류하려면?
야생 모드에서 살아남는 시간이 점점 길어질수록 더 많은 아이템이 모이게 되고, 상자도 점점 더 늘어나는데요. 많은 아이템을 여러 상자에 나눠 넣는 것도 계속하다 보면 꽤 번거로운 일입니다. 이럴 때 ‘아이템 자동 분류기’를 사용하면 쉽게 아이템을 구분할 수 있습니다. 이 기계의 핵심 아이템은 레드스톤 회로로 자동화 기계를 만들 때 자주 사용하는 ‘호퍼’와 ‘중계기’, ‘비교기’입니다.
아이템 자동 분류기의 핵심 아이템 살펴보기
2. 신호 증폭하고, 지연시키는 레드스톤 중계기
기능 ① | 신호 증폭
마인크래프트에서 신호의 최대 크기는 15칸이에요. 이보다 긴 신호를 보낼 때 중계기가 유용해요. 중계기는 입력되는 신호의 크기에 상관없이 추가로 15칸만큼의 신호를 출력하거든요.
기능 ② | 신호 지연
신호를 지연시키는 목적으로도 중계기를 사용할 수 있어요. 기본적으로 중계기는 0.1초 후에 신호를 전달하는데요. 마우스 오른쪽 버튼을 눌러 0.4초까지 지연시킬 수 있습니다. 레버가 1번 이동할 때마다 0.1초가 흐른 뒤에 신호가 전달돼요.
아이템 자동 분류기의 핵심 아이템 살펴보기
3. 신호 비교하고 연산하는 레드스톤 비교기
기능 ① | 아이템 개수에 따른 신호 출력
비교기를 이용하면 원하는 크기로 신호를 보낼 수 있어요. 비교기의 뒤쪽에 아이템을 담을 수 있는 블록인 호퍼나 상자를 연결하면 블록 안에 아이템이 얼마나 채워져 있는지에 따라 다른 강도의 신호를 출력합니다. 출력 신호는 공식 1 + {(아이템 개수 ÷ 해당 아이템의 최대 묶음 수 ÷ 보관용 아이템의 최대 공간의 수) × 14}를 계산해 나온 값에 내림을 하면 됩니다. 오른쪽의 경우 1 + {(576 ÷ 64 ÷ 27) × 14} ≒ 5.667로 내림하면 강도 5의 신호가 출력돼요.
기능 ② | 두 신호의 비교
비교기는 뒤쪽과 양옆에서 신호를 받을 수 있어요. 뒤쪽 입력 신호의 강도가 옆쪽 입력 신호의 강도보다 같거나 크면 뒤쪽 신호만큼을 출력하고, 작으면 출력하지 않아요. 들어오는 신호의 강도는 15 - (비교기에 연결된 블록의 개수)로 구해요. 예를 들어 뒤쪽의 강도는 15 - 2 = 13이고, 옆쪽의 강도는 15 - 5 = 10이에요. 이 경우 뒤쪽이 옆쪽보다 강도가 세기 때문에 앞쪽으로 뒤쪽 신호인 13을 출력합니다.
기능 ③ | 두 신호의 뺄셈
비교기에서 마우스 오른쪽 버튼을 누르면 앞쪽에 빨간 불빛이 켜지고 뺄셈 모드로 설정돼요. 뒤쪽 강도에서 옆쪽 강도를 뺀 강도가 앞쪽으로 출력돼요.
아이템 자동 분류기 만들기
이제 아이템 자동 분류기를 만들어 볼까요? 맨 아래에 블록 A를 설치하고, 블록 A에 레드스톤 횃불을 설치해요. 레드스톤 횃불 위에는 호퍼3을 두고, 최종적으로 아이템을 분류할 상자와 연결해요. 레드스톤 횃불이 켜져 있어서 호퍼3은 다른 곳으로부터 아이템을 전달받지 못해요.
블록 A 뒤에는 신호를 증폭시킬 중계기를 설치해요. 그리고 계단 모양으로 블록 B를 쌓고, 이 위에는 비교기에서 나오는 신호가 흐를 수 있도록 레드스톤 가루를 뿌립니다. 블록 B 앞, 블록 A 위에 블록 C를 설치하고, 이 위에 비교기, 그 앞에 호퍼2를 마련해요. 비교기는 호퍼2에 있는 아이템의 비율에 따라 신호를 내보내는 역할을 합니다.
마지막 호퍼2 위에 호퍼1을 설치합니다. 이제 이 구조물을 여러 개 만들어 옆으로 나란히 연결하면 아래처럼 여러 가지 아이템을 분류할 수 있는 아이템 자동 분류기가 완성돼요. 이때 주의할 사항이 있습니다. 바로 호퍼2 안에는 22개의 아이템이 들어가 있어야 해요. 그 이유는 호퍼2에 들어있는 아이템의 개수가 1~22개일 땐 강도 1의 신호를 출력하고, 23~45개일 땐 강도 2의 신호를 출력하기 때문이에요.
출력 강도가 1일 때는 레드스톤 가루 1개에만 신호가 흐르지만, 강도가 2일 때는 레드스톤 가루 2개 모두에 신호가 흐르고 중계기에 그 신호가 전해져요. 중계기는 신호를 증폭하고 레드스톤 횃불이 설치된 블록에 신호가 흘러요. 그러면 레드스톤 횃불은 꺼지고 이제 호퍼3은 호퍼2의 아이템을 받을 수 있어요.
<;수학으로 따지기>; 호퍼2에는 왜 22개의 아이템을 넣어야 할까?
아이템 보관용 블록에는 한 공간 당 최대 64개의 동일 아이템을 넣을 수 있고, 호퍼에는 5개의 공간이 있어요. 비교기는 공식을 통해 나온 값을 어림해 그 만큼 신호를 출력해요. 아이템의 개수를 x라 하면 1 + {(x ÷ 64 ÷ 5) × 14}는 (7x + 160)/160이고, 강도 1의 신호를 출력하려면 1 < (7x + 160)/160 < 2를 만족하는 x를 찾아야 해요. 부등식을 풀면 0 < x < 22.9가 나와요. 즉 아이템의 개수가 1~22이면 신호 1을 출력하지요. 같은 방법으로 계산하면 아이템의 개수가 23~45이면 신호 2를 출력합니다.
구조를 알았으니 기계의 알고리듬을 순서도로 살펴볼게요. 수의 계산이나 문제 해결에 필요한 처리 과정을 알고리듬이라 하는데 이 알고리듬의 내용을 이해하기 쉽게 그린 그림을 ‘순서도’라고 해요. 주로 컴퓨터가 연산을 처리하는 과정을 표현하지요.
먼저 호퍼1에서 호퍼2로 아이템 1개가 전달되면 호퍼2 속 아이템의 개수는 22개를 초과해요. 그럼 강도 2의 신호가 출력돼 레드스톤 횃불은 꺼져요. 그러면 호퍼3에는 신호가 흐르지 않기 때문에 호퍼2의 아이템 하나를 전달받아요.
그럼 다시 호퍼2의 아이템의 개수는 22개가 되고, 신호의 강도는 다시 1이 되지요. 결국 레드스톤 횃불이 다시 켜지고 호퍼3은 아이템을 받지 않습니다. 이 일련의 과정이 반복되면서 아이템이 상자로 분류돼요.