마인크래프트의 야생 모드에서 플레이어가 살아남기는 쉬운 일이 아닙니다.
낮에는 없었던 몬스터들이 밤이 되면 나타나 플레이어를 공격하거든요. 플레이어가 몬스터를 마냥 피해 다닐 수도 없어요. 먹을 것을 찾아다니고 광물을 수집하기 위해 계속해서 채굴해야 하거든요. 오늘은 코딩을 이용하는 야생 생존법을 소개할게요.
첫 번째 몬스터 감지기 만들기
플레이어 근처에서 폭발하는 몬스터인 ‘크리퍼’가 플레이어 뒤에 나타나는 걸 상상해 보세요. 플레이어에게 일어날 일을 생각하면 끔찍하네요. 공격에 대비하기 위해 다가오는 몬스터를 감지하는 ‘몬스터 감지기’를 만들어 볼게요.
➊ 코드작성기에서 ‘무한반복 실행’ 명령블록을 가져오세요. 무한반복 실행 명령은 코드실행 버튼을 누르면 즉시 실행돼요.
➋ ‘변수-변수만들기’에서 변수 ‘몹’을 만든 뒤 ‘몹에 (변숫값) 저장’ 명령블록을 가져와 연결하세요.
➌ 변숫값에 ‘몹-대상 선택’ 명령블록을 가져와 넣은 뒤 좌푯값에 ‘플레이어 절대좌표’를 넣으세요. 반경 값은 10으로 입력하세요. 플레이어 주위 10칸 안에 있는 모든 엔티티
(개체)가 변수 ‘몹’에 저장되는 명령이에요.
➍ ‘몹-규칙 추가’ 명령블록을 가져와 연결한 뒤 대상을 ‘family’, ‘monster’로 입력하세요. 이제 변수 ‘몹’에는 monster 집합에 속하는 엔티티만 저장돼요.
➎ ‘몹-상대에게 명령 실행하게 하기’ 명령블록을 가져와 연결한 뒤 대상 값에 변수 ‘몹’을 연결하고 화면과 같이 실행할 명령을 작성하세요. 변수 ‘몹’에 저장된 엔티티가 “접근 중! 조심하세요.”라는 메시지를 보내는 명령이에요.
➏ 빠르게 메시지를 반복하지 않도록 ‘일시중지’ 명령블록을 넣어 1초 동안 명령을 정지하도록 하세요.
➐ 코드작성기의 시작 버튼을 누르고 Alt+Tab을 눌러 마인크래프트로 돌아가세요.
➑ 몬스터를 소환해 메시지가 나오는지 확인하세요. family 속성이 monster인 몹이 나타날 때만 메시지가 나온답니다.
➒ family 값을 mob으로 바꾸고 실행해 보세요. 이제는 플레이어 주변에 있는 모든 몹을 감지하여 메시지를 보여줍니다.
잠깐! ‘family’ 명령에 대해 더 알려주세요.
마인크래프트의 다양한 엔티티들은 저마다 고유한 속성이 있어요. family는 그 대상을 분류하는 방법 중 하나예요. 예를 들어 좀비는 zombie, undead, monster, mob이라는 family에 속해 있어요. 우리가 작성한 코드에서 family 속성을 monster로 선택했기 때문에 monster의 속성을 가진 모든 엔티티가 변수 ‘몹’에 저장되는 거지요.
두 번째 동굴 탐지기 만들기
동굴은 위험한 몬스터가 자주 나타나지만, 여러 광물이 많이 발견되기 때문에 위험을 무릅쓰고 찾아낼 가치가 있답니다. 이번에는 동굴의 위치를 알려주는 동굴 탐지기를 만들어 볼게요.
➊ 코드작성기에서 채팅명령어를 ‘1’로 약속하고 +를 눌러 변수 num1을 추가하세요.
➋ ‘반복(for)’ 명령블록을 가져와 연결한 뒤 변수 num1을 반복 값에 넣으세요.
➌ ‘만약(if)’ 명령블록을 가져와 연결한 뒤 ‘블록-블록탐지’를 조건식에 넣으세요. 탐지할 블록을 공기블록으로 바꾸세요. 공기블록은 아무 블록도 없는 빈 공간을 의미해요. 탐지 좌표의 y좌표를 화면과 같이 바꾸세요. 0인 index값에 1을 더하고 -1를 곱하세요. 만약 플레이어가 “1 30”이라는 채팅명령어를 입력하면 플레이어 기준으로 y축 방향으로 -1에서부터 명령을 30번 반복해 -31만큼 떨어진 범위까지의 블록을 탐지하는 명령이에요.
➍ ‘채팅창에 말하기’, ‘문자열 연결’ 명령블록으로 화면과 같이 코드를 작성하세요. 공기 블록을 탐지했을 때, 즉 땅속 빈 공간인 동굴을 탐지했을 때 탐지한 위치를 알려주는 메시지가 나오도록 하는 명령이에요.
➎ ‘변수-변수 만들기’에서 변수 ‘빈공간’을 만든 뒤 ‘빈공간에 (변숫값) 저장’ 명령블록을 가져와 연결하세요. 변숫값에는 공기 블록이 발견될 y좌표의 값을 넣으세요.
➏ 공기 블록을 찾지 못했을 땐 플레이어 아래에 빈 공간이 없다는 메시지가 나오도록 설정하세요.
➐ 반복이 끝나면 탐지 종료 메시지를 보여주는 명령이에요.
➑ Alt+Tab을 눌러 마인크래프트로 돌아가 채팅명령어 ‘1 30’을 실행하세요. 동굴 탐지기는 플레이어 아래 31칸까지 탐지해요.
➒ 플레이어 아래 22째 칸에서 빈 공간을 발견했어요.
세 번째 동굴 탐지기 업그레이드하기
앞서 만든 동굴 탐지기는 플레이어 아래 y축 방향의 칸만 탐지한다는 단점이 있어요. 탐지 범위를 x축 방향으로 늘려 봐요.
➊ 코드작성기에서 앞서 작성한 코드에 ‘고급-배열-리스트에 저장’ 명령블록을 가져와 연결하세요. 그리고 +를 눌러 값을 추가한 뒤 화면과 같이 수를 넣어주세요.
➋ ‘반복(foreach)’ 명령블록을 가져와 화면과 같이 ‘반복(for)’ 명령블록 아래에 넣어 주세요. ‘반복’ 명령블록의 ‘list’를 클릭하여 ‘리스트’로 바꾸세요.
➌ ‘변수’에서 ‘value’를 가져와 ‘블록 탐지’ 명령블록의 x좌표에 넣어 주세요. 리스트에 있는 0, 1, 2가 x좌표에 차례로 저장되며 3번 반복해서 명령이 실행돼요. x좌표가 0, 1, 2인 곳마다 y좌표가 -1에서 -31인 곳까지 빈 공간을 탐지할 거예요.
➍ Alt+Tab을 눌러 마인크래프트로 돌아가 채팅명령어 ‘1’을 실행하세요. 매 칸마다 3번의 메시지가 나오면서 탐지 범위가 x축 방향으로 늘어난 것을 알 수 있어요.
잠깐! 리스트가 무엇인가요?
리스트는 자료를 저장하는 방법이에요. 하나의 값을 저장할 때는 변수로 저장하면 되지만 여러 개의 값을 저장하고 싶을 때는 리스트를 활용하는 것이 좋아요. 하나의 리스트에 여러 가지 값을 저장할 수 있기 때문이지요. 단, 하나의 리스트에는 같은 형식의 값만 저장할 수 있어요. 예를 들어 숫자와 문자는 같은 리스트에 저장할 수 없답니다.
네 번째 발견한 동굴로 이동하기1
동굴 탐지기에서 발견한 동굴의 위치는 변수 ‘빈공간’에 저장돼요. 이렇게 저장된 변숫값을 이용해서 플레이어는 동굴로 바로 이동할 수 있어요.
➊ 코드작성기에서 채팅명령어를 ‘2’로 약속하세요.
➋ ‘채팅창에 말하기’ 명령블록을 가져와 화면과 같이 메시지를 입력하세요.
➌ ‘다음 좌표로 텔레포트’ 명령블록을 가져와 y좌표에 변수
‘빈공간’을 넣어 주세요.
➍ Alt+Tab을 눌러 마인크래프트로 돌아가 채팅명령어 ‘1’을 실행한 뒤, 만약 빈 공간을 찾았다면 채팅명령어 ‘2’를 실행하세요.
다섯 번째 발견한 동굴로 이동하기2
‘빈공간’에 저장된 변숫값을 이용해서 동굴로 가는 물 엘리베이터를 만들 수도 있어요.
➊ 채팅명령어를 ‘3’으로 약속하세요.
➋ ‘채팅창에 말하기’ 명령블록을 가져와 화면과 같이 메시지를 입력하세요.
➌ ‘블록-블록 채우기’ 명령블록을 가져와 연결한 뒤 화면과 같이 좌표를 바꾸세요. 끝 지점 y좌표에는 변수 ‘빈공간’을 넣으세요. 플레이어 아래 첫 번째 칸부터 빈 공간까지 블록이 없어지는 명령이에요.
➍ ‘블록-블록 놓기’ 명령블록을 가져와 연결한 뒤 블록을 ‘물’로 바꾸고 좌표를 화면과 같이 바꾸세요. 플레이어 한 칸 아래에 물 블록을 설치하면 플레이어가 안전하게 이동할 수 있어요.
➎ Alt+Tab을 눌러 마인크래프트로 돌아가 채팅명령어 ‘1’을 실행한 뒤 만약 빈 공간을 발견 했다면 채팅명령어 ‘3’을 실행하세요.
잠깐! 빈 공간으로 이동하는 명령을 실행해도 플레이어가 제자리에 있어요.
코드작성기에서 생성한 변수의 초깃값은 0이에요. 따라서 동굴 탐지기를 실행하여 빈 공간을 찾지 못했다면 변수 ‘빈공간’의 값은 그대로 0이지요. 즉, 동굴 탐지기로 빈 공간을 찾았을 때만 플레이어를 이동하는 명령을 실행해야 한답니다. 그리고 코드를 수정하거나 코드작성기를 정지시키면 저장되었던 변수가 초기화되므로 다시 동굴 탐지기를 실행해야 해요.