‘랭턴의 개미’는 미국 컴퓨터과학자 크리스토퍼 랭턴(사진)이 발견한 세포자동자의 한 종류예요. 세포자동자는 단순한 규칙에 따라 움직이는 장치입니다. 랭턴의 개미는 모든 칸이 흰색인 격자상의 평면에서 규칙에 따라 한 칸씩 움직이는데, 움직이는 패턴이 처음엔 복잡해 보이다가도 나중엔 규칙성이 드러나요. 이런 특징이 복잡한 현상을 설명하는 수학 이론인 ‘카오스 이론’과 닮아 있지요. 마인크래프트로 직접 만들어 보면서 랭턴의 개미를 이해해 봐요!
첫 번째 에이전트, 랭턴의 개미가 되다!
게임 속 캐릭터인 ‘에이전트’가 랭턴의 개미처럼 움직이도록 만들어 볼게요. 랭턴의 개미가 흰색 격자 위에 있다면, 격자는 검은색으로 바뀌고 개미는 왼쪽으로 회전해 한 칸 앞으로 이동합니다. 이를 반복하다 개미가 검은색 격자 위에 서면, 이 격자는 흰색으로 바뀌고 개미는 오른쪽으로 회전해 한 칸 앞으로 이동하지요. 바닥이 이런 특징을 구현하도록 만들어 봐요!
➊ 코드 작성기에서 채팅명령어를 ‘1’로 약속하세요.
➋ ‘에이전트-에이전트 텔레포트’ 명령블록을 가져오세요. 에이전트가 개미의 역할을 할 수 있도록 시작점으로 이동시키는 명령이에요.
➌ ‘반복-무한반복 실행’ 명령블록을 가져오세요.
➍ ‘논리-만약 아니면 실행’ 명령블록을 가져오세요.
➎ ‘블록-블록탐지’ 명령블록을 가져와 블록을 ‘검은색 콘크리트’로 바꾸세요.
➏ ‘위치-월드 좌표, position 좌표 정보 얻기’ 명령블록을 가져와 화면과 같이 연결하세요.
➐ ‘에이전트-에이전트 위치’ 명령블록을 가져와 ‘position’에 넣으세요. 단, y좌표는 ‘계산-빼기’ 명령블록을 가져와 화면과 같이 바꾸세요. 에이전트가 검은색 큰크리트 블록이 한 칸 아래에 있다는 걸 감지하면 명령을 실행하는 조건문이에요.
➑ ‘에이전트-에이전트가 블록 또는 아이템 가져오기’ 명령블록을 가져와 블록을 ‘흰색 콘크리트’로 바꾸세요.
➒ ‘에이전트-에이전트가 블록 파괴’, ‘에이전트-에이전트가 블록 놓기’ 명령블록을 가져와 방향을 모두 ‘아래로’로 바꾸세요.
➓ ‘에이전트-에이전트가 회전’ 명령블록을 가져와 방향을 오른쪽으로 바꾸세요.
11 ‘에이전트-에이전트가 이동 방향’ 명령블록을 가져와 이동방향을 ‘앞으로’로 설정하세요.
12 같은 방법으로 ‘아니면 실행’ 코드를 작성하세요. 에이전트가 검은색 콘크리트 블록을 감지하지 못했을 때는 검은색 콘크리트 블록을 아래에 놓고 왼쪽으로 이동하는 명령이에요.
13 ‘에이전트-에이전트가 모든 블록 수집하기’ 명령블록을 가져오세요. 에이전트가 부순 블록을 다시 줍는 명령이에요.
14 ‘코드시작’ 버튼을 누르고 Alt+Tab을 눌러 마인크래프트로 돌아가세요. 무한반복 실행은 ‘코드시작’ 버튼을 누르는 즉시 실행되므로 마인크래프트에서 에이전트가 움직이기 시작해요. 만약 에이전트의 위치를 바꾸려면 채팅명령어 ‘1’을 실행하세요. 평면 월드에서 실행하면 장애물이 없어서 좋아요.
잠깐!코드 실행이 중지되어 버렸어요!
코드를 실행하는 중에 코드 작성기에서 코드를 수정하면 코드 실행이 자동으로 중지돼요. 이때는 따로 채팅명령어를 입력하지 말고 코드 작성기에서 ‘코드시작’ 버튼을 다시 누르면 무한반복 실행 명령이 다시 시작되므로 마인크래프트에서 랭턴의 개미를 이어서 관찰할 수 있어요.
두 번째 랭턴의 개미, 빌더로 만들기
랭턴의 개미가 그리는 무늬는 처음엔 아무런 규칙이 없이 복잡해 보이지만, 개미가 1만 번쯤 이동하면 하나의 규칙성이 보이기 시작해요. 이런 점 때문에 ‘랭턴의 개미’가 수학과 과학 연구에서 주목을 받았지요. 마인크래프트에서도 이 규칙성을 관찰하면 좋을 텐데, 개미의 역할을 하는 에이전트가 1만 번 움직이길 기다리는 건 시간이 너무 오래 걸려요. 빠르게 블록을 놓을 수 있는 빌더를 이용해 랭턴의 개미가 보이는 규칙성을 확인해 볼게요.
➊ 코드 작성기에서 채팅명령어를 ‘2’로 약속하세요.
➋ ‘빌더-빌더 텔레포트’ 명령블록을 가져와 좌표를 화면과 같이 바꾸세요. 빌더를 시작점으로 이동시키는 명령이에요. 빌더는 에이전트와 달리 화면에 보이지 않는다는 걸 참고하세요.
➌ ‘반복-무한 반복 실행’ 명령블록을 가져오세요.
➍ ‘논리-만약 아니면 실행’ 명령블록을 가져오세요.
➎ ‘블록-블록 탐지’를 가져온 뒤 블록을 ‘검은색 콘크리트’로 바꾸고 위치에는 ‘빌더-빌더 절대 좌표’를 넣으세요. 빌더는 공간을 차지하지 않기 때문에 자신의 위치에 블록을 놓을 수 있어요.
➏ ‘빌더-블록 놓기’, ‘빌더-빌더 돌기’, ‘빌더-빌더 이동 방향’ 명령블록을 가져와 차례로 블록은 ‘흰색 콘크리트’, 도는 방향은 ‘오른쪽’, 이동 방향은 ‘앞으로’로 설정하세요.
➐ 같은 방법으로 ‘아니면 실행’ 코드를 작성하세요. 빌더가 검은색 콘크리트 블록을 감지하지 못했을 때는 검은색 콘크리트 블록을 놓고 왼쪽으로 이동하는 명령이에요.
➑ ‘코드시작’ 버튼을 누르고 Alt+Tab을 눌러 마인크래프트로 돌아가세요. 무한반복 실행은 ‘코드시작’ 버튼을 누르는 즉시 실행되므로 빌더가 움직이기 시작해요. 만약 빌더의 위치를 바꾸려면 채팅명령어 ‘2’를 실행하세요.
➒ 실행한지 약 20분 이 지나도 랭턴의 개미(빌더)가 만든 바닥은 불규칙한 모양을 띠지만(1), 조금 더 지켜보면 규칙성이 보여요(2). 일정한 규칙에 따라 한 방향으로 무늬가 생긴답니다.
잠깐! 얼마나 기다려야 규칙성이 보이나요?
랭턴의 개미가 규칙적인 움직임을 보여주려면 약 1만 칸을 움직여야 해요. 그 뒤로는 104칸을 움직일 때마다 같은 모양을 그리며 반복하게 돼요. 2번 그림 속 꼬리처럼 생긴 부분이 반복된 모양들이 모여 만들어진 그림이랍니다.