스네이크 게임

방향키(또는 화면의 버튼)로 뱀을 조종해 먹이를 먹고 몸길이를 늘려보세요.

점수: 0길이: 1최고 점수: 0

이 뱀 게임의 규칙과 수치

판은 20 x 20칸(가로 300px, 한 칸 15px)이고 뱀은 120밀리초마다 한 칸씩 움직입니다. 속도는 먹이를 먹어도 빨라지지 않고 처음부터 끝까지 같으며, 먹이 하나에 10점이 더해지고 몸이 한 칸 길어집니다. 시작할 때는 가운데 부근에 길이 1짜리 뱀이 멈춰 있다가 첫 방향키를 누르는 순간부터 움직입니다. 벽에 닿거나 자기 몸에 부딪히면 즉시 끝나고, 판의 400칸을 전부 채우면 만점으로 끝납니다. 아래 수치는 이 설정값에서 계산한 것입니다.

뱀 길이점수판 점유율남은 빈 칸
100.3%399
5401.3%395
10902.5%390
201905.0%380
5049012.5%350
10099025.0%300
200199050.0%200
300299075.0%100
4003990100.0%0

길이는 “점수 / 10 + 1”이므로 최고 점수는 3990점(먹이 399개)입니다. 점수는 먹이 먹은 횟수만 반영하고 생존 시간은 반영하지 않습니다.

이동 시간 감각 잡기

한 칸에 120ms이면 초당 약 8.33칸을 가는 셈입니다. 이동 거리별 걸리는 시간은 다음과 같습니다.

이동 칸 수걸리는 시간비고
5칸0.60초
10칸1.20초
20칸2.40초판의 한 변을 가로지르는 시간
40칸4.80초한 변을 왕복하는 시간

먹이가 맨해튼 거리(가로 차이 + 세로 차이)로 13칸 떨어져 있다면 최단 경로로도 1.56초가 걸립니다. 이 시간 안에 몸이 만들어 놓은 벽이 길을 막지 않게 경로를 짜는 것이 이 게임의 전부입니다.

조작과 입력 처리의 세부 규칙

예시로 확인하는 판단

예시 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 판에서 각 유형의 칸 수와 비율입니다.

칸 유형칸 수판 비율벽 안쪽 이동 방향 수
모서리41.0%2
가장자리(모서리 제외)7218.0%3
안쪽32481.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 판이 짝수 크기라서 가능합니다. 판을 한 줄씩 지그재그로 훑고, 한 줄을 비워 두었다가 돌아오는 길로 쓰는 구조로 시작해 점차 지름길을 섞는 접근을 택하면 됩니다. 긴 연습이 필요하므로 일시정지 기능으로 중간에 호흡을 가다듬는 것이 좋습니다.

실전 요령과 흔한 실수

  1. 벽을 따라 달리는 습관 줄이기. 가장자리를 따라 지나가면 한쪽이 벽이라 방향 선택지가 줄어듭니다. 길이가 짧을 때는 가운데 영역을 활용하세요.
  2. 길이가 길어지면 큰 원을 그리듯 움직이기. 좁은 곳에서 방향을 자주 바꾸면 꼬리와 겹칠 위험이 커집니다.
  3. 먹이가 구석에 있을 때는 서두르지 말기. 구석 먹이는 접근 경로가 한두 개뿐이라, 들어갔다 나올 길을 먼저 확보하세요.
  4. 키를 연타하지 않기. 칸마다 방향이 하나만 반영되므로 연타는 소용이 없고 오히려 마지막 입력이 의도와 달라질 수 있습니다.
  5. 모바일은 방향 버튼의 위치를 먼저 익히기. 버튼을 누르는 손가락이 판을 가리지 않는 자세를 찾아 두세요.

한계와 저장 정보

결과를 활용하는 법

점수를 길이로 환산해(점수 / 10 + 1) 점유율 표와 비교하면, 지금 실력이 판의 몇 퍼센트를 채울 수 있는지 감을 잡을 수 있습니다. 같은 점수대에서 반복적으로 끝난다면 대개 길이가 비슷한 지점에서 비슷한 실수를 하는 것이므로, 마지막 몇 칸의 경로를 되짚어 보세요.

배경: 뱀 게임의 계보

뱀을 조종해 먹이를 먹고 길어지는 방식은 1970년대 후반 아케이드의 “Blockade”와 같은 초기 게임까지 거슬러 오르는 것으로 알려져 있으며, 1990년대 후반에는 노키아 휴대전화에 기본 탑재된 판본이 전 세계에 널리 퍼졌습니다. 구현마다 속도 변화, 벽 통과 여부, 꼬리 칸 충돌 같은 세부 규칙이 달라 같은 이름의 게임이라도 같은 기록으로 비교할 수 없습니다.

자주 묻는 질문

모바일에서도 플레이할 수 있나요?

화면 아래의 방향 버튼을 터치해 조종할 수 있습니다. 키보드 단축키(방향키, Space)는 PC에서 쓰는 기능입니다.

최고 점수는 저장되나요?

저장되지 않습니다. 현재 열어 둔 페이지 안에서만 유지되고, 새로고침하면 사라집니다.

왜 반대 방향 키가 안 먹나요?

길이가 2 이상일 때 정반대로 돌면 머리가 바로 자기 몸에 닿으므로 입력을 무시하도록 만든 규칙입니다. 위나 아래로 먼저 꺾은 뒤 반대쪽으로 한 번 더 꺾으면 U턴이 됩니다.

벽을 통과해서 반대편으로 나올 수 있나요?

아니요. 이 게임은 벽에 닿으면 끝나는 규칙입니다.

점수가 가장 높을 때는 몇 점인가요?

판 400칸을 모두 채우면 3,990점입니다. 먹이 399개를 먹어야 하고, 이후 게임은 만점 메시지와 함께 종료됩니다.

시작하자마자 방향키를 누르지 않으면 게임이 진행되나요?

아니요. 뱀은 첫 방향 입력이 있기 전까지 가운데에 멈춰 있고, 이 상태에서는 시간이 흘러도 끝나지 않습니다. 방향 버튼이나 키를 누른 순간부터 120ms마다 한 칸씩 움직입니다.

탭을 바꿨다 돌아오면 뱀이 순간이동하지 않나요?

다른 탭으로 옮기면 자동으로 일시정지되고, 한 프레임에서 처리하는 경과 시간에도 상한(250ms)이 있어 한꺼번에 몰아 이동하지 않습니다. 돌아와서 ‘계속하기’를 누르면 이어집니다.

먹이가 뱀 몸 위에 나타날 수도 있나요?

아니요. 먹이 위치를 뽑을 때 몸이 차지한 칸이면 다시 뽑기 때문에 몸 위에는 나타나지 않습니다. 길이가 길어질수록 빈 칸이 줄어 먹이 위치가 점점 예측하기 쉬워집니다.

소리가 안 나는데 고장인가요?

먹이를 먹거나 게임이 끝날 때 효과음이 재생되도록 되어 있지만, 브라우저나 기기의 음소거 설정, 자동 재생 제한에 따라 들리지 않을 수 있습니다. 게임 진행과는 상관없습니다.

다른 미니 게임

순서를 기억하는 색깔 순서 기억 게임, 공을 튕기는 벽돌 깨기, 길을 찾는 미로 탈출 게임, 공을 주고받는 퐁 바운스 게임도 함께 해 보세요.