얼굴 셋 맞추기 실험실: 동현주TM
8×8 판에서 이웃한 두 얼굴을 바꿔 같은 얼굴 셋을 나란히 놓으면 잡힌다. 얼굴마다 정해진 수만큼 잡으면 다음 단계다. 시작 단계와 쌍안경 횟수는 동현랭으로 정한다.
처음이라면? 예제를 고르고 시작을 눌러 보자. 시작 단계와 쌍안경 횟수는 모두 동현랭 명령으로만 정한다.
동현랭 배우기 · 실행기 ↗A 얼굴 판
판을 준비하는 중동현주
LEVEL 1부터 · 쌍안경 3개
얼굴마다 3마리씩 · 시작하면 시간이 흐른다
GAME OVER
점수0
- 오늘 최고0
- 이번 주 최고0
- 역대 최고0
B 동현랭 설정 코드
zooo.dh예제를 고른 뒤 시작을 눌러 보자. 시작 단계와 쌍안경 횟수는 코드로만 정한다.
동현주 규약
정하는 것은 두 숫자다
- 동현랭 코드가 출력한 첫 정수가 시작 단계, 둘째 정수가 쌍안경 횟수다.
- 기본값은
1과3이다. 아무것도 출력하지 않으면 이 값으로 시작한다. - 시작 단계는
1부터20까지, 쌍안경은0부터9까지 쓸 수 있다. 0이면 쌍안경 단추를 쓸 수 없다. - 정수를 하나만 출력하거나 셋 이상 출력하면, 또는 범위를 벗어나면 시작하지 않고 오류를 알려 준다.
- 점수는 어느 단계에서 시작하든 0부터 센다. 높은 단계에서 시작하면 한 묶음의 점수가 크지만 시간이 빠듯하다.
예제
01 · 기본은 뿡뿡 도옹~뿡뿡뿡으로 1을, 뿡뿡 도오오옹~뿡뿡뿡으로 3을 출력한다. 02 · 중간부터는 8과 5, 03 · 맨눈은 1과 0, 04 · 마지막 단계는 20과 9다. 0은 도옹ㅠ로, 20은 도오오오오오오오오오옹 도오옹(10×2)으로 쓴다.
코드가 하지 않는 것
동현랭 코드는 판의 얼굴이나 바꿀 자리를 고르지 않는다. 판은 처음부터 맞춰진 줄이 없고 바꿀 자리가 적어도 하나 있게 뽑는다. 얼굴을 찾아 바꾸는 것은 사람이 한다.
단계
- 1~3단계는 얼굴마다 3마리, 4단계부터 하나씩 늘어 12단계부터는 12마리다. 일곱 얼굴을 모두 채우면 다음 단계다. 20단계를 마치면 끝이다.
- 시간 막대가 비는 데 1단계는 32초, 단계마다 1.1초씩 짧아져 20단계는 12초다. 셋을 잡으면 8%, 넷은 14%, 다섯 이상은 22%가 다시 찬다. 목표를 달성하면 막대가 멎고, 다음 단계는 가득 찬 막대로 시작한다.
점수
- 한 묶음은 셋 30점 · 넷 60점 · 다섯 90점(여섯 이상은 하나당 30점씩 더). 여기에 연쇄 배수(2연쇄 ×2 … 최대 ×8)와 단계 배수(단계마다 +10%)를 곱한다.
- 보병이 든 묶음은 2배이고 시간이 20% 더 찬다. 반짝 판을 누르면 그때 보이는 얼굴을 판에서 모두 잡고 하나당 20점(단계 배수 적용)이다.
- 단계를 마치면 500점 × 단계 + 남은 시간(최대 1,000점)을 더한다.
- 5,000점마다 쌍안경이 하나 늘어난다(최대 9개). 오늘·이번 주·역대 최고 점수는 이 브라우저에만 저장된다.
놀이 방법
셋을 나란히
- 머리글 오른쪽의 네 아이콘(키보드·마우스·게임패드·전체 화면 FULL)은 입력 표식이다. 켜진 것만 이 실험실에서 쓸 수 있다: 키보드 · 마우스(터치) · 게임패드. 전체 화면은 없다.
- 처음 열면 판 위에 시작 단추가 떠 있고 시간은 멎어 있다. 시작을 누르거나(키보드 X·Enter, 패드 A) 판이 돌기 시작한다. 오른쪽 동현랭 코드의 시작을 누르면 그 설정으로 바로 새 판이 돈다.
- 가로나 세로로 이웃한 두 얼굴만 바꿀 수 있다. 바꿔서 같은 얼굴이 셋 이상 나란히 놓이면 그 얼굴들이 잡히고, 아니면 제자리로 되돌아온다.
- 잡힌 자리로 위의 얼굴이 떨어지고 새 얼굴이 내려온다. 떨어지며 또 셋이 맞으면 연쇄다. 연쇄가 이어지는 동안에도 멎어 있는 얼굴은 바로 바꿀 수 있다.
- 판 오른쪽(휴대폰은 위)의 숫자는 얼굴마다 더 잡아야 하는 수다. 하나 남은 얼굴은 빨갛게 표시된다. 모두 0이 되면 다음 단계다.
- 왼쪽(휴대폰은 위) 막대가 시간이다. 비면 끝이고, 그때 남아 있던 길을 모두 보여 준다. 바꿀 자리가 하나도 없으면 판을 새로 섞는다. 시간은 계속 간다.
얼굴들
포동이 · 슈슈 · 라이언 · 초파리 · 둠가이 · 기사 · 꼬리콥터, 일곱 얼굴이 판을 채운다. 3단계부터 가끔 보병이 내려오는데, 어느 얼굴과도 줄을 이루고 목표에는 들지 않는다. 2단계부터는 얼굴이 계속 바뀌는 반짝 판이 드물게 내려온다. 누르면 그 순간 보이는 얼굴을 판에서 모두 잡는다.
조작
- 마우스·터치: 얼굴을 누른 뒤 이웃 얼굴을 누르면 바뀐다. 누른 채 이웃 쪽으로 끌어도(쓸어도) 된다. 같은 얼굴을 다시 누르면 고름이 풀린다. 반짝 판은 한 번 누르면 터진다.
- 키보드: 화살표로 칸을 고르고 X(또는 Enter·Space)로 집은 뒤 화살표를 누르면 그쪽 얼굴과 바뀐다. Z는 취소, S는 쌍안경, M은 소리다. 코드 편집기에 커서가 있을 때는 판이 키를 받지 않는다.
- 게임패드: 십자나 왼 스틱으로 고르고 A로 집은 뒤 방향으로 바꾼다. B 취소, X 쌍안경. 닌텐도 배치 기준이며 A·B가 거꾸로면 −를 한 번 누른다.
막히면
- 쌍안경: 바꿀 수 있는 자리를 모두 2초 동안 파랗게 보여 준다. 단추 위 숫자만큼 쓸 수 있고 5,000점마다 하나 는다. 처음 개수는 동현랭 코드가 정한다.
- 휴대폰은 두 번 두드려도 확대되지 않고 판에서 손가락을 끌어도 화면이 밀리지 않는다. 다른 탭을 보거나 창을 벗어나면 시간이 멎는다.
끝
시간 막대가 비면 끝이다. 20단계의 목표까지 달성하면 모든 단계를 마친 것이다. 점수를 최대한 올려 보자.
원작과 출처
원작
이 놀이는 Robot Communications의 브라우저 게임(2002~2003)으로 시작해 Game Boy Advance판 「Zooo」(2003, Success)와 Nintendo DS판 「Zoo Keeper」(2004~2005)로 나온 동물 얼굴 셋 맞추기 퍼즐의 보통 모드(Normal)를 따른다. 8×8 판, 이웃한 둘만 바꾸기, 맞지 않으면 되돌아오기, 얼굴마다 정해진 수를 잡으면 다음 단계, 잡을수록 다시 차는 시간 막대, 길이 없으면 판 새로 섞기, 쌍안경(힌트), 얼굴이 바뀌는 특별 판, 연쇄 중에도 바꿀 수 있는 점이 원작의 규칙이다(Wikipedia, Giant Bomb, Worthplaying, TV Tropes). 보통 모드가 스무 단계인 것과 1~3단계 목표 3마리, 그 뒤 하나씩 느는 것은 DS판 평을 따랐다(Kikizo). GBA판 「Zooo」의 토끼처럼 드물게 나오는 여덟째 얼굴은 보병이 맡는다(RetroAchievements). 동현주라는 이름은 Zooo의 '주(Zoo)'에서 따왔다.
동현주는 보통 모드만 만들었다. 토코톤·퀘스트·타임어택·대전 모드는 없다. 구체적인 수치(목표 최대 12, 막대 32→12초, 점수 배분, 5,000점마다 쌍안경)는 동현주가 정한 것이다.
권리
동현주는 원작 게임의 코드·그림·소리·글을 쓰지 않았다. 얼굴 여덟은 모두 tools/paint.py가 글자 격자로 새로 그린 동현랭 세계관의 인물이다. 동현주는 원작 제작사·발매사(Robot Communications, Success, Ignition Entertainment 등)와 관계가 없고 승인도 받지 않았다.
동현주가 만든 것
규칙 엔진, 얼굴 판 화면, 키보드·마우스·터치·게임패드 조작, 동현랭 단계·쌍안경 규약, 예제, 얼굴 그림, 효과음, 문서. 이 부분은 MIT 라이선스다. 동현랭 실행기(donghyun.js)는 동현랭 v1.55를, 게임패드 읽기(gamepad.js)는 동현몬의 것을 고치지 않고 썼다. 휴대폰 경험(두 번 두드려도 확대되지 않기, 누른 자리 번짐 없애기)은 동현텐의 방식을 그대로 가져왔다.
얼굴의 출처
포동이는 동현랭의 강아지, 슈슈와 라이언은 동현파, 초파리는 동현초, 둠가이는 동현둠, 기사는 동현워, 꼬리콥터는 동현콥, 보병은 동현전에서 왔다. 동현몬과 같은 글자 팔레트와 윤곽색으로 얼굴만 16×16으로 다시 그렸다.
글꼴
Black Han Sans, Nanum Gothic Coding, Pretendard — SIL Open Font License 1.1.
시험
node qa/core-tests.cjs가 맞춤 판정(가로·세로·ㄱ자·보병), 되돌아오기, 중력과 연쇄, 목표와 단계 넘기기, 시간, 쌍안경, 섞기, 반짝 판, 규약 예제를 확인한다. node qa/fuzz-play.cjs는 무작위로 수천 번 바꾸며 판이 비거나 멈추지 않는지 본다. node qa/ui.cjs는 실제 화면에서 키보드·마우스·끌기·반짝 판·규약 오류·단계 마침·끝 카드·멎음·휴대폰 폭을 확인한다.