이 뱀 게임의 규칙과 수치
판은 20 x 20칸(가로 300px, 한 칸 15px)이고 뱀은 120밀리초마다 한 칸씩 움직입니다. 속도는 먹이를 먹어도 빨라지지 않고 처음부터 끝까지 같으며, 먹이 하나에 10점이 더해지고 몸이 한 칸 길어집니다. 시작할 때는 가운데 부근에 길이 1짜리 뱀이 멈춰 있다가 첫 방향키를 누르는 순간부터 움직입니다. 벽에 닿거나 자기 몸에 부딪히면 즉시 끝나고, 판의 400칸을 전부 채우면 만점으로 끝납니다. 아래 수치는 이 설정값에서 계산한 것입니다.
| 뱀 길이 | 점수 | 판 점유율 | 남은 빈 칸 |
|---|---|---|---|
| 1 | 0 | 0.3% | 399 |
| 5 | 40 | 1.3% | 395 |
| 10 | 90 | 2.5% | 390 |
| 20 | 190 | 5.0% | 380 |
| 50 | 490 | 12.5% | 350 |
| 100 | 990 | 25.0% | 300 |
| 200 | 1990 | 50.0% | 200 |
| 300 | 2990 | 75.0% | 100 |
| 400 | 3990 | 100.0% | 0 |
길이는 “점수 / 10 + 1”이므로 최고 점수는 3990점(먹이 399개)입니다. 점수는 먹이 먹은 횟수만 반영하고 생존 시간은 반영하지 않습니다.
이동 시간 감각 잡기
한 칸에 120ms이면 초당 약 8.33칸을 가는 셈입니다. 이동 거리별 걸리는 시간은 다음과 같습니다.
| 이동 칸 수 | 걸리는 시간 | 비고 |
|---|---|---|
| 5칸 | 0.60초 | |
| 10칸 | 1.20초 | |
| 20칸 | 2.40초 | 판의 한 변을 가로지르는 시간 |
| 40칸 | 4.80초 | 한 변을 왕복하는 시간 |
먹이가 맨해튼 거리(가로 차이 + 세로 차이)로 13칸 떨어져 있다면 최단 경로로도 1.56초가 걸립니다. 이 시간 안에 몸이 만들어 놓은 벽이 길을 막지 않게 경로를 짜는 것이 이 게임의 전부입니다.
조작과 입력 처리의 세부 규칙
- 방향 바꾸기는 칸마다 한 번만 적용됩니다. 한 칸 이동하는 120ms 사이에 방향키를 여러 번 눌러도 마지막으로 유효했던 입력 하나만 다음 이동에 쓰입니다.
- 정반대 방향은 무시됩니다. 오른쪽으로 가는 중에 왼쪽 키를 눌러도 길이가 2 이상이면 반응하지 않습니다. 따라서 U턴을 하려면 위(또는 아래)로 한 칸 이동한 뒤에 왼쪽 키를 눌러야 하고, 같은 칸 안에서 “위, 왼쪽”을 연달아 눌러도 왼쪽 입력은 버려집니다.
- 머리가 꼬리가 있던 칸으로 들어가도 충돌입니다. 이 구현은 이동 전에 몸 전체와 비교하므로, 꼬리가 같은 순간에 빠져나갈 칸이라도 부딪힌 것으로 처리합니다. 구현에 따라 이를 허용하는 게임도 있으니 다른 뱀 게임과 규칙이 다를 수 있습니다.
- 일시정지는 Space 키 또는 버튼으로 켜고 끕니다. 방향키는 화면이 스크롤되지 않도록 이 게임에서만 처리됩니다. 다른 탭으로 옮기면 게임이 자동으로 일시정지되고, 돌아와서 '계속하기'를 누르면 이어서 진행합니다.
- 먹이는 뱀의 몸이 없는 칸 중 무작위 칸에 나타납니다(Math.random 사용, 보안용 난수 아님).
예시로 확인하는 판단
예시 1. 거리 계산. 머리가 (10, 10), 먹이가 (3, 16)에 있으면 가로 7칸 + 세로 6칸 = 13칸이 최단 거리이고 13 x 0.12초 = 1.56초가 걸립니다. 이 사이 경로 위에 몸이 있으면 돌아가야 하므로 거리가 늘어납니다.
예시 2. 몸이 만드는 막다른 길. 길이 4의 뱀이 2 x 2 정사각형 모양으로 말려 있고 머리가 꼬리 칸 바로 옆을 향한다면, 머리는 꼬리 칸으로 들어갈 수 없어 이 구현에서는 즉시 끝납니다. 길이가 짧아도 이렇게 말리면 나갈 길이 없는 경우가 생기므로, 방향을 바꿀 때는 다음 두 칸 앞까지 보고 판단하세요.
예시 3. 만점의 조건. 모든 칸을 채우려면 먹이 399개를 먹어 길이가 400이 되어야 하고, 그때 점수는 3,990점입니다. 가로·세로 칸 수가 모두 짝수인 20 x 20 판에는 모든 칸을 정확히 한 번씩 지나 제자리로 돌아오는 순환 경로(해밀턴 순환)가 존재하므로, 그 경로를 따라 도는 것만으로도 충돌 없이 이론상 끝까지 갈 수 있습니다. 다만 먹이를 가장 빨리 먹는 방법은 아니므로 시간은 훨씬 오래 걸립니다.
칸 위치별 위험도: 모서리, 가장자리, 안쪽
벽에 닿으면 끝나는 규칙이므로 칸이 어디에 있느냐에 따라 한 번에 갈 수 있는 방향 수가 달라집니다. 모서리 칸은 이동 가능한 방향이 2개, 가장자리 칸은 3개, 안쪽 칸은 4개입니다(몸이 막고 있는 방향은 따로 빼야 합니다). 아래 표는 20 x 20 판에서 각 유형의 칸 수와 비율입니다.
| 칸 유형 | 칸 수 | 판 비율 | 벽 안쪽 이동 방향 수 |
|---|---|---|---|
| 모서리 | 4 | 1.0% | 2 |
| 가장자리(모서리 제외) | 72 | 18.0% | 3 |
| 안쪽 | 324 | 81.0% | 4 |
먹이는 몸이 없는 칸 중에서 무작위로 나타나므로, 판이 비어 있을 때 먹이가 가장자리나 모서리에 나올 확률은 칸 수 비율과 거의 같습니다. 가장자리 칸 76개(모서리 4개 포함)는 전체의 19%이므로, 다섯 번 중 한 번 가까이는 벽 근처로 접근해야 하는 먹이가 나온다고 보면 됩니다. 그때는 먹이를 먹은 뒤에 어느 방향으로 빠져나올지를 접근하기 전에 정해 두어야 합니다.
몸 칸이 비워지는 시간 읽기
먹이를 먹지 않고 한 칸씩 이동하면 꼬리가 매번 한 칸씩 줄어듭니다. 그래서 지금 막혀 있는 몸 칸도 시간이 지나면 지나갈 수 있는 칸이 됩니다. 이 구현은 이동하기 전에 머리가 들어갈 칸을 몸 전체와 비교하므로, 머리에서 i번째 몸 칸(머리는 0번)은 길이가 L일 때 (L − i + 1)번째 이동부터 들어갈 수 있습니다. 아래 표는 길이 30인 뱀에서의 값입니다.
| 머리에서 몇 번째 몸 칸 | 들어갈 수 있는 이동 차례 | 걸리는 시간 |
|---|---|---|
| 1번째 | 30번째 이동 | 3.60초 |
| 5번째 | 26번째 이동 | 3.12초 |
| 15번째 | 16번째 이동 | 1.92초 |
| 25번째 | 6번째 이동 | 0.72초 |
| 29번째 | 2번째 이동 | 0.24초 |
표에서 꼬리에 가까운 29번째 칸은 2번째 이동부터 비어 있지만, 머리 가까운 1번째 칸은 30번째 이동이 되어야 비어 있습니다. 즉 몸이 길게 접혀 있을 때 곧 비게 되는 칸은 꼬리 쪽뿐이고, 머리 가까운 칸은 한참 기다려야 합니다. 꼬리 쪽 빈칸을 믿고 들어갔는데 도중에 먹이를 먹으면 그 이동에서는 꼬리가 줄어들지 않아 칸이 비는 시점이 한 번씩 뒤로 밀리므로, 길이가 짧은 여유 없는 경로에서는 이 한 칸 차이로 막다른 길이 될 수 있습니다.
시간으로 보는 한 판의 길이
한 판이 얼마나 오래 걸리는지는 이동 횟수로 가늠할 수 있습니다. 120ms 간격이므로 아래 표의 시간 동안 움직이는 칸 수는 다음과 같습니다 (일시정지 시간은 포함하지 않습니다).
| 플레이 시간 | 이동한 칸 수(최대) |
|---|---|
| 10초 | 83칸 |
| 30초 | 250칸 |
| 60초 | 500칸 |
| 180초 | 1500칸 |
| 300초 | 2500칸 |
만점의 시간 규모도 같은 식으로 구할 수 있습니다. 판 전체를 한 바퀴 도는 순환 경로를 그대로 따라가면 길이가 L일 때 다음 먹이는 아무리 멀어도 (400 − L)칸 앞에 있습니다. 이를 L = 1부터 399까지 합하면 79,800칸이고, 칸당 120ms이므로 최악의 경우 약 2시간 39분 36초가 걸립니다. 지름길을 쓰면 훨씬 줄지만 그만큼 위험이 커지니, 이 수치는 안전하게 끝까지 가는 데 필요한 시간의 상한으로 이해하면 됩니다.
상황별 연습 방법
처음 해 보는 사람
길이 10 정도(점수 90점)까지는 가운데 영역을 크게 돌며 먹이를 먹는 것만 연습하세요. 이 구간에서 끝나는 가장 흔한 이유는 벽에 너무 일찍 다가가서 꺾을 방향이 없어지는 경우입니다. 먹이가 벽 쪽에 있어도 한 칸 앞에서 꺾을 수 있도록 방향 키를 미리 눌러 두면 됩니다.
길이 50 이상을 노리는 사람
이때부터는 판의 12.5%를 몸이 차지하므로 먹이를 향해 직진하는 것보다 몸이 만든 통로를 설계하는 것이 중요합니다. 판을 가로로 긴 줄무늬로 나누어 위아래로 왕복하며 먹이를 줍는 패턴은 단순하지만 몸이 서로 막지 않게 하는 데 효과적입니다. 줄무늬가 끝나는 쪽에서는 항상 같은 쪽 모서리로 돌아 나오도록 규칙을 정해 두세요.
만점을 노리는 사람
본문의 순환 경로 방식은 20 x 20 판이 짝수 크기라서 가능합니다. 판을 한 줄씩 지그재그로 훑고, 한 줄을 비워 두었다가 돌아오는 길로 쓰는 구조로 시작해 점차 지름길을 섞는 접근을 택하면 됩니다. 긴 연습이 필요하므로 일시정지 기능으로 중간에 호흡을 가다듬는 것이 좋습니다.
실전 요령과 흔한 실수
- 벽을 따라 달리는 습관 줄이기. 가장자리를 따라 지나가면 한쪽이 벽이라 방향 선택지가 줄어듭니다. 길이가 짧을 때는 가운데 영역을 활용하세요.
- 길이가 길어지면 큰 원을 그리듯 움직이기. 좁은 곳에서 방향을 자주 바꾸면 꼬리와 겹칠 위험이 커집니다.
- 먹이가 구석에 있을 때는 서두르지 말기. 구석 먹이는 접근 경로가 한두 개뿐이라, 들어갔다 나올 길을 먼저 확보하세요.
- 키를 연타하지 않기. 칸마다 방향이 하나만 반영되므로 연타는 소용이 없고 오히려 마지막 입력이 의도와 달라질 수 있습니다.
- 모바일은 방향 버튼의 위치를 먼저 익히기. 버튼을 누르는 손가락이 판을 가리지 않는 자세를 찾아 두세요.
한계와 저장 정보
- 최고 점수는 페이지를 열어 둔 동안만 화면에 기억되고, 새로고침하거나 다시 접속하면 0으로 돌아갑니다. 브라우저 저장소나 서버에 기록하지 않으며 기기 간에도 공유되지 않습니다.
- 속도 단계, 장애물, 벽 통과 모드는 없습니다. 이 페이지는 가장 기본 규칙의 판입니다.
- 브라우저 탭이 백그라운드로 가면 타이머가 늦춰질 수 있어, 게임 중에는 탭을 유지하세요.
결과를 활용하는 법
점수를 길이로 환산해(점수 / 10 + 1) 점유율 표와 비교하면, 지금 실력이 판의 몇 퍼센트를 채울 수 있는지 감을 잡을 수 있습니다. 같은 점수대에서 반복적으로 끝난다면 대개 길이가 비슷한 지점에서 비슷한 실수를 하는 것이므로, 마지막 몇 칸의 경로를 되짚어 보세요.
배경: 뱀 게임의 계보
뱀을 조종해 먹이를 먹고 길어지는 방식은 1970년대 후반 아케이드의 “Blockade”와 같은 초기 게임까지 거슬러 오르는 것으로 알려져 있으며, 1990년대 후반에는 노키아 휴대전화에 기본 탑재된 판본이 전 세계에 널리 퍼졌습니다. 구현마다 속도 변화, 벽 통과 여부, 꼬리 칸 충돌 같은 세부 규칙이 달라 같은 이름의 게임이라도 같은 기록으로 비교할 수 없습니다.
자주 묻는 질문
모바일에서도 플레이할 수 있나요?
화면 아래의 방향 버튼을 터치해 조종할 수 있습니다. 키보드 단축키(방향키, Space)는 PC에서 쓰는 기능입니다.
최고 점수는 저장되나요?
저장되지 않습니다. 현재 열어 둔 페이지 안에서만 유지되고, 새로고침하면 사라집니다.
왜 반대 방향 키가 안 먹나요?
길이가 2 이상일 때 정반대로 돌면 머리가 바로 자기 몸에 닿으므로 입력을 무시하도록 만든 규칙입니다. 위나 아래로 먼저 꺾은 뒤 반대쪽으로 한 번 더 꺾으면 U턴이 됩니다.
벽을 통과해서 반대편으로 나올 수 있나요?
아니요. 이 게임은 벽에 닿으면 끝나는 규칙입니다.
점수가 가장 높을 때는 몇 점인가요?
판 400칸을 모두 채우면 3,990점입니다. 먹이 399개를 먹어야 하고, 이후 게임은 만점 메시지와 함께 종료됩니다.
시작하자마자 방향키를 누르지 않으면 게임이 진행되나요?
아니요. 뱀은 첫 방향 입력이 있기 전까지 가운데에 멈춰 있고, 이 상태에서는 시간이 흘러도 끝나지 않습니다. 방향 버튼이나 키를 누른 순간부터 120ms마다 한 칸씩 움직입니다.
탭을 바꿨다 돌아오면 뱀이 순간이동하지 않나요?
다른 탭으로 옮기면 자동으로 일시정지되고, 한 프레임에서 처리하는 경과 시간에도 상한(250ms)이 있어 한꺼번에 몰아 이동하지 않습니다. 돌아와서 ‘계속하기’를 누르면 이어집니다.
먹이가 뱀 몸 위에 나타날 수도 있나요?
아니요. 먹이 위치를 뽑을 때 몸이 차지한 칸이면 다시 뽑기 때문에 몸 위에는 나타나지 않습니다. 길이가 길어질수록 빈 칸이 줄어 먹이 위치가 점점 예측하기 쉬워집니다.
소리가 안 나는데 고장인가요?
먹이를 먹거나 게임이 끝날 때 효과음이 재생되도록 되어 있지만, 브라우저나 기기의 음소거 설정, 자동 재생 제한에 따라 들리지 않을 수 있습니다. 게임 진행과는 상관없습니다.
다른 미니 게임
순서를 기억하는 색깔 순서 기억 게임, 공을 튕기는 벽돌 깨기, 길을 찾는 미로 탈출 게임, 공을 주고받는 퐁 바운스 게임도 함께 해 보세요.