이 게임이 하는 일
가로 10칸, 세로 18칸의 판(전체 180칸) 위로 4칸짜리 블록이 한 개씩 떨어지고, 가로 한 줄 10칸이 빈틈없이 차는 순간 그 줄이 사라지며 위의 더미가 한 줄씩 내려옵니다. 새 블록이 나타날 자리가 이미 막혀 있으면 게임이 끝납니다. 규칙은 단순하지만, 이 페이지의 구현에는 "다음 블록 순서가 완전한 무작위", "블록이 바닥에 닿은 뒤 다음 중력 틱까지만 움직일 수 있음", "점수는 한 번에 지운 줄 수에만 비례" 같은 특징이 있어 공략 방식이 정해집니다. 아래는 모두 이 페이지 코드의 값입니다.
조작 정리
- ← → : 한 칸 이동, ↓ : 한 칸 내리기(블록이 이미 바닥이나 더미에 닿아 있으면 그 자리에서 고정됩니다), ↑ : 시계 방향 90도 회전.
- Space 또는 "바로 내리기" 버튼: 더 이상 내려갈 수 없는 곳까지 즉시 내려 고정합니다. 별도의 추가 점수는 없습니다.
- P 키 또는 "일시정지" 버튼: 중력 타이머를 멈춥니다. 정지 중에는 이동·회전 입력이 무시됩니다.
- 회전 시 벽이나 더미에 걸리면 가로 방향으로 0, -1, +1, -2, +2칸 밀어 보고 처음 들어맞는 위치로 회전합니다. 위쪽으로는 밀리지 않습니다.
- 화면 오른쪽 작은 칸에 다음 블록이 미리 표시됩니다.
블록 7종과 회전 모양
블록은 새로 만들 때마다 7종 중 하나가 같은 확률(1/7)로 고르게 뽑힙니다. 표의 "서로 다른 모양" 수는 4단계 회전 데이터를 위치만 정규화해 비교한 값입니다.
| 블록 | 색 | 칸 수 | 처음 자세 크기(가로×세로) | 서로 다른 모양 수 |
|---|---|---|---|---|
| I (일자) | 초록 | 4 | 4×1 | 2 |
| O (정사각형) | 빨강 | 4 | 2×2 | 1 |
| T (T자) | 파랑 | 4 | 3×2 | 4 |
| S (S자 지그재그) | 주황 | 4 | 3×2 | 2 |
| Z (Z자 지그재그) | 하늘 | 4 | 3×2 | 2 |
| J (J자(ㄱ자 계열)) | 노랑 | 4 | 3×2 | 4 |
| L (L자(ㄴ자 계열)) | 보라 | 4 | 3×2 | 4 |
정사각형은 돌려도 변하지 않고, 일자·S·Z는 두 가지 모양을 번갈아 취하며, T·J·L은 네 방향이 모두 다릅니다. 새 블록은 판 위쪽 가운데 부근에서 나타납니다. 일자 블록만이 세로로 세우면 4줄에 걸치므로 한 번에 4줄을 지울 수 있는 유일한 블록입니다.
속도가 빨라지는 방식
중력 틱 간격은 700ms에서 시작해 지운 줄이 5줄 늘어날 때마다 60ms씩 줄고, 최저 180ms에서 멈춥니다(공식: max(180, 700 − ⌊줄 수÷5⌋×60)). 아래 표의 "자연 낙하 시간"은 위에서 바닥까지 18칸을 중력만으로 내려갈 때 걸리는 대략의 시간입니다.
| 지운 줄 수 | 틱 간격 | 초당 낙하 칸 | 맨 위→바닥 자연 낙하 |
|---|---|---|---|
| 0줄 이상 | 700ms | 1.43칸 | 12.6초 |
| 5줄 이상 | 640ms | 1.56칸 | 11.5초 |
| 10줄 이상 | 580ms | 1.72칸 | 10.4초 |
| 15줄 이상 | 520ms | 1.92칸 | 9.4초 |
| 20줄 이상 | 460ms | 2.17칸 | 8.3초 |
| 25줄 이상 | 400ms | 2.50칸 | 7.2초 |
| 30줄 이상 | 340ms | 2.94칸 | 6.1초 |
| 35줄 이상 | 280ms | 3.57칸 | 5.0초 |
| 40줄 이상 | 220ms | 4.55칸 | 4.0초 |
| 45줄 이상 | 180ms | 5.56칸 | 3.2초 |
45줄 이상부터는 속도가 더 오르지 않고 180ms(초당 약 5.6칸)로 고정됩니다. 블록이 착지한 뒤에는 별도의 고정 지연 시간이 없어서 다음 틱에 바로 굳습니다. 따라서 마지막 단계에서 착지 후 좌우로 밀거나 돌릴 수 있는 여유는 최대 약 0.18초입니다. 줄을 지우는 순간 타이머가 새로 시작되므로 그 직후 블록은 한 틱 가까이 여유가 생깁니다.
점수 표와 효율
| 한 번에 지운 줄 | 점수 | 줄당 점수 | 지워지는 칸 수 |
|---|---|---|---|
| 1줄 | 100점 | 100.0점 | 10칸 |
| 2줄 | 300점 | 150.0점 | 20칸 |
| 3줄 | 500점 | 166.7점 | 30칸 |
| 4줄 | 800점 | 200.0점 | 40칸 |
점수는 속도 단계와 무관하게 오직 동시에 지운 줄 수로 정해지고, 블록을 빨리 내려도 가산점이 없습니다. 예를 들어 같은 40줄을 지우더라도 전부 한 줄씩 지우면 4000점, 두 줄씩 20번이면 6000점, 네 줄씩 10번이면 8000점으로 갈립니다. 네 줄 지우기 5번(20줄), 두 줄 지우기 5번(10줄), 한 줄 지우기 10번(10줄)을 섞어도 합계 40줄이지만 6500점입니다(5×800 + 5×300 + 10×100). 한 줄 점수와 네 줄 점수의 줄당 효율 차이는 두 배입니다. 반대로 속도는 지운 줄 수가 늘수록 빨라지므로, 점수 효율을 높이려고 줄 지우기를 미루면 판이 차올라 위험해집니다.
무작위의 실제 의미
블록은 직전 블록과 상관없이 매번 독립적으로 뽑힙니다(Math.random 사용, 보안용 난수가 아닙니다). 7개 묶음에서 한 번씩 나오는 방식이 아니어서, 특정 블록이 오래 안 나올 수 있습니다. 일자 블록이 n번 연속으로 나오지 않을 확률은 (6/7)ⁿ입니다.
| 연속 블록 수 | 일자 블록이 한 번도 안 나올 확률 |
|---|---|
| 7개 | 약 34.0% |
| 14개 | 약 11.6% |
| 21개 | 약 3.9% |
| 28개 | 약 1.3% |
14개 안에 한 번도 안 나올 확률이 약 11.6%이므로 열 번 중 한 번 정도는 일자 블록을 14개 넘게 기다릴 수 있다는 뜻입니다. 이 가능성을 전제로 판을 운영해야 합니다.
코드 규칙에서 나오는 공략
- 한쪽 끝 열을 비워 두는 방식이 안정적입니다. 일자 블록이 올 때 네 줄을 한 번에 지우는 구조가 되지만, 위의 가뭄 확률 때문에 일자 블록을 기다리는 동안 다른 블록으로 평평하게 쌓을 수 있어야 합니다. 비워 둔 열이 깊어질수록 위험이 커집니다.
- 구멍(위가 막힌 빈칸)을 만들지 않습니다. 줄은 모든 칸이 차야 지워지므로 구멍 하나가 그 줄을 위의 블록이 치워질 때까지 묶어 둡니다.
- 다음 블록 표시를 이용해 한 수 앞을 보세요. 현재 블록 놓을 자리가 애매하면 다음 블록이 들어갈 자리를 먼저 남겨 두는 편이 안전합니다.
- 고속 구간에서는 바로 내리기를 쓰세요. 180ms 틱에서는 한 칸씩 내리는 것보다 위치와 회전을 먼저 정한 뒤 Space로 한 번에 고정하는 편이 입력 실수가 적습니다.
- 회전은 벽 앞에서 미리 하세요. 일자 블록은 세로(1×4)에서 가로(4×1)로 돌릴 때 옆 칸 4개가 비어 있어야 하며, 벽 쪽에서는 가로 이동 보정(최대 2칸)으로만 해결합니다.
가로 배치 경우의 수와 게임 오버 지점
한 블록을 놓을 수 있는 가로 위치의 수는 모양의 폭에 따라 달라집니다. 폭이 w칸인 모양은 10칸 판에서 (10 − w + 1)곳에 놓을 수 있고, 서로 다른 모양 수만큼 더합니다. 예를 들어 일자 블록은 가로 모양(폭 4)이 7곳, 세로 모양(폭 1)이 10곳이라 17곳입니다. 아래 표의 합계는 7종 전체에서 162가지입니다. 다만 이는 회전·이동만으로 판 어디든 갈 수 있다고 가정한 값이며, 더미가 높아지면 실제로 갈 수 있는 위치는 줄어듭니다.
| 블록 | 가로 배치 가짓수 | 생성 시 맨 윗줄이 막히면 안 되는 열(왼쪽부터) |
|---|---|---|
| I (일자) | 17곳 | 4·5·6·7번째 열 |
| O (정사각형) | 9곳 | 5·6번째 열 |
| T (T자) | 34곳 | 4·5·6번째 열 |
| S (S자 지그재그) | 17곳 | 4·5번째 열 |
| Z (Z자 지그재그) | 17곳 | 5·6번째 열 |
| J (J자(ㄱ자 계열)) | 34곳 | 4·5·6번째 열 |
| L (L자(ㄴ자 계열)) | 34곳 | 4·5·6번째 열 |
새 블록은 가로로 4번째 열 부근(x=3)에서, 일부 칸이 판 위쪽 바깥(y=−1)에 걸친 채 생성됩니다. 게임 오버 판정은 생성된 블록의 칸 중 판 안에 들어온 칸이 이미 채워진 칸과 겹치는지만 검사합니다. 그래서 가장 윗줄(1번째 줄)의 위 표에 적힌 열에 더미가 닿아 있으면 끝나고, 그보다 아래까지만 쌓였다면 아직 끝나지 않습니다. 반대로 말하면 표에 나오지 않는 열(1~3번째, 8~10번째)은 맨 윗줄까지 채워도 새 블록이 바로 막히지는 않습니다. 다만 그 상태에서 가운데로 블록을 옮길 공간이 없으면 곧 끝나므로 안전하다는 뜻은 아닙니다.
속도 단계까지 필요한 최소 블록 수
판이 비어 있는 상태에서 시작하므로, 줄 L개를 지우려면 최소 10×L칸을 채워야 하고 블록은 한 개가 4칸이니 최소 ⌈10L÷4⌉개가 필요합니다. 실제 플레이에서는 남아 있는 더미도 있으므로 이보다 더 많은 블록이 나옵니다. 이 값은 "이 속도에 닿으려면 최소 몇 개를 놓아야 하는가"의 하한입니다.
| 지운 줄 수 | 그때의 틱 간격 | 필요한 최소 블록 수 |
|---|---|---|
| 5줄 | 640ms | 13개 |
| 10줄 | 580ms | 25개 |
| 20줄 | 460ms | 50개 |
| 30줄 | 340ms | 75개 |
| 45줄 | 180ms | 113개 |
표에서 5줄은 13개, 45줄은 113개입니다. 속도가 최고에 닿는 45줄까지는 아무리 효율적으로 놓아도 100개 넘는 블록을 다뤄야 하므로, 초반 몇 분은 느린 속도에서 자세를 다지는 구간이라고 볼 수 있습니다. 한 번에 여러 줄을 지우는 것은 점수에 유리하지만 줄 수는 같은 만큼만 오르기 때문에 속도 단계가 빨리 오르는 효과는 없습니다. 같은 20줄이라도 네 줄 지우기 5번이면 4,000점, 한 줄 지우기 20번이면 2,000점으로 점수는 두 배 차이가 나면서 속도 단계는 똑같습니다.
흔한 실수와 한계
초보자가 가장 자주 하는 실수는 높이를 균일하게 쌓지 않고 한 열만 먼저 올리는 것입니다. 판 높이는 18칸이고 새 블록이 위에서 나오므로, 가운데 열이 위쪽 몇 칸까지 올라오면 새 블록이 나올 자리가 막혀 곧바로 끝납니다. 또 모든 블록이 4칸이므로 이론상 구멍 없이 판 전체(180칸)를 채우려면 블록 45개가 필요하지만, 줄을 지울 때마다 10칸씩 사라지므로 실제로는 줄이 지워지는 속도가 쌓이는 속도와 같아야 끝나지 않습니다. 블록 2.5개가 줄 한 줄을 만든다는 계산입니다.
이 게임에는 블록 보관(홀드), 그림자(착지 예상 위치), 레벨 표시, 콤보 보너스, 스핀 점수가 없습니다. 속도 상승도 지운 줄 수만 기준이며 난이도 선택은 없습니다. 모바일에서는 화면 버튼으로 조작하며 버튼을 누르고 있어도 반복 입력은 되지 않고 누를 때마다 한 번씩 동작합니다.
최고 점수 저장
게임이 끝날 때 점수가 기존 최고 점수보다 높으면 브라우저 localStorage의 line-clear-best 키에 저장합니다. 서버로 보내지 않으며 기기·브라우저가 달라지면 따로 기록됩니다. 지우려면 브라우저의 사이트 데이터를 삭제하세요.
다른 퍼즐 게임도 즐겨보세요
칸을 클릭해 같은 색 블록 무리를 터뜨리는 퍼즐이 궁금하다면 색깔 블록 터뜨리기 퍼즐을, 타이밍에 맞춰 블록을 쌓는 게임이 궁금하다면 타이밍 블록 쌓기 게임을, 숫자 타일을 합치는 퍼즐은 숫자 합치기 퍼즐을 확인해보세요.
자주 묻는 질문
블록 모양은 몇 가지인가요?
일자 모양, 정사각형, T자 모양, 지그재그 모양(S·Z 2종류), J자·L자 모양까지 서로 다른 4칸짜리 블록 7종류가 같은 확률로 무작위 등장합니다.
속도는 어떻게 빨라지나요?
없앤 줄 수가 5줄 늘 때마다 중력 틱 간격이 60ms씩 줄어듭니다. 시작은 700ms, 최저는 180ms이며 45줄 이상에서는 더 빨라지지 않습니다.
한 번에 네 줄을 지우려면 어떤 블록이 필요한가요?
일자 블록을 세로로 세워 한 열에 꽂아야 합니다. 네 줄이 모두 그 한 열만 비어 있고 나머지 9칸이 채워진 상태여야 800점을 얻습니다.
일시정지 중에도 점수나 시간이 흐르나요?
아닙니다. 일시정지하면 낙하 타이머가 멈추고 입력이 무시됩니다. 다시 누르면 같은 속도로 이어집니다.
점수 기록은 어디에 저장되나요?
이 브라우저의 localStorage에만 저장됩니다. 다른 기기와 동기화되지 않으며, 사이트 데이터를 지우면 사라집니다.
키보드 방향키를 누르고 있으면 계속 움직이나요?
키보드에서는 키를 누르고 있으면 브라우저의 키 반복 입력으로 이동·내리기·회전이 이어집니다. 반복 속도는 운영체제 설정에 따르며 게임이 따로 정한 값이 아닙니다. 반면 Space로 바로 내리기는 키 반복이 무시되어 한 번 누를 때 한 번만 동작합니다.
바닥에 닿은 블록을 옆으로 밀 수 있나요?
착지한 블록은 다음 중력 틱이 오면 바로 굳습니다. 그 틱 사이에는 좌우 이동과 회전이 가능하지만, 아래 방향키나 버튼으로 내리기를 시도하면 이미 닿은 상태에서는 즉시 고정됩니다. 마지막 속도 구간의 틱은 180ms라 여유가 매우 짧습니다.
게임이 끝나는 정확한 조건은 무엇인가요?
블록이 고정된 뒤 새 블록을 만들었을 때, 그 칸 중 판 안에 들어온 칸이 이미 채워진 칸과 겹치면 끝납니다. 판 위쪽 바깥에 걸친 칸은 검사하지 않으므로 가장 윗줄의 가운데 부근(위 표의 열)이 막히는 순간이 사실상의 종료 지점입니다.