미니게임

알까기

바둑판 위에서 내 돌을 튕겨 상대 돌을 판 밖으로 밀어낸다.

프롬프트를 복사해 claude.ai 에 붙여 넣으면 바로 실행됩니다 · Opus 5.5 · Effort High 기준

알까기 실행 화면

조작 내 돌을 뒤로 끌었다 놓기 · 키보드는 ↑↓ 돌 고르기, ←→ 조준, Space 힘

전체 화면으로

무대를 누르면 키보드로도 조작할 수 있습니다

권장 모델
Claude Opus 5.5 · Effort High
화면비
1:1 (정사각)
조작
내 돌을 뒤로 끌었다 놓기 · 키보드는 ↑↓ 돌 고르기, ←→ 조준, Space 힘
결과물
HTML 파일 하나 · 따로 설치할 것 없음

프롬프트

Claude 가 읽는 제작 지시문입니다. 맨 위 [바꿀 곳]의 값을 바꿔 붙여 넣어도 됩니다.

바둑판 위에서 내 돌을 새총처럼 뒤로 끌었다 놓아 상대 돌을 판 밖으로 밀어내는 「알까기」 게임을 HTML 파일 하나로 만들어 줘.

핵심 아이디어: 비자나무 결이 살아 있는 13줄 바둑판, 점판암 흑돌과 조개 백돌. 돌끼리 부딪는 순간 「딱」 소리와 함께 화면이 0.18초 동안 0.3배로 느려지고, 맞은 돌이 판 가장자리 밖으로 미끄러져 떨어진다. 이 한 순간이 작품의 얼굴이다. 열자마자 컴퓨터끼리 두는 구경 모드가 돌고, 첫 수가 약 0.98초에 판 위쪽 가운데(판 중심에서 위로 0.28S)에서 터진다.

[바꿀 곳]
아래 값은 모두 CONFIG 에 이름 그대로 둔다. S = 화면 짧은 변의 0.92배(px) — 판과 그 아래 그림자까지 화면 안에 들어오게 둘레에 여백을 남긴다. 위치·길이·속도는 S 단위, 좌표는 판 중심이 (0,0), 오른쪽 +x, 아래쪽 +y.
- boardSize = 0.94 (판 한 변, S 배)
- lines = 13 (판의 줄 수)
- gridInset = 0.06 (판 가장자리에서 첫 줄까지, 판 한 변의 배)
- stoneRadiusCells = 0.46 (돌 반지름, 칸 너비의 배)
- stonesPerSide = 5
- maxSpeed = 2.4 (힘 1일 때 처음 속도, S/초)
- friction = 1.2 (속도 반대쪽 일정 감속, S/초²)
- stopSpeed = 0.01 (이보다 느리면 멈춤)
- restitution = 0.92 (돌끼리 반발)
- chargeTime = 0.9 (스페이스를 이만큼 누르면 힘 1)
- dragFull = 0.30 (끌기 길이가 이만큼(S)이면 힘 1)
- dragMin = 0.03 (이보다 짧은 끌기는 취소)
- grabRadius = 0.08 (끌기 시작점이 내 돌 중심에서 이 안이면 그 돌을 잡는다)
- aimTurnSpeed = 1.2 (방향키 조준 회전, 라디안/초)
- turnLimit = 7 (내 차례 제한 시간, 초)
- maxTimeouts = 3 (연속 시간 초과 이 횟수면 판 끝)
- maxShotsPerSide = 12
- cpuAimTime = 0.8 (컴퓨터가 겨누는 연출 시간, 초 — 구경 모드는 0.6)
- settleCap = 3.5 (한 수가 이 시간을 넘게 움직이면 감속을 4배로)
- settleWait = 0.25 (모든 돌이 멈춘 뒤 다음 차례까지)
- slowScale = 0.3, slowTime = 0.18, slowEase = 0.12, slowMinSpeed = 1.0
- cpuNoise = [0.14, 0.14, 0.07, 0.07, 0.04] (컴퓨터 상대의 n번째 수 조준 오차 표준편차, 라디안 — 다섯째부터는 마지막 값), demoNoise = 0.03
- 점수: hitScore = 10, outScore = 100, comboBonus = 50, winBonus = 300, aliveBonus = 50
- 색: bg = '#2E2A26', bgFiber = '#3A352F', board = '#D8BC8C', boardGrain = '#C29F6B', boardEdge = '#9C7A4C', ink = '#2A2118', black = '#1E1F21', blackLight = '#4A4C50', white = '#F1ECE0', whiteShade = '#D9D2C2', accent = '#C8553D', text = '#EDE6D8'

[크기]
- 캔버스는 창 전체. 판은 화면 가운데, 한 변 B = 0.94S 의 정사각형. 판 바깥 남는 곳(세로 폰의 위아래, 가로 화면의 좌우)도 배경으로 다 채운다.
- 줄 사이 거리: 첫 줄은 판 가장자리에서 0.06B 안쪽, 줄이 차지하는 폭 G = 0.88B = 0.8272S, 칸 너비 c = G/12 = 0.0689S.
- 돌 반지름 r = 0.46c = 0.0317S (지름 0.063S). 1280×720 화면에서 반지름 약 21px, 390×844 폰에서 약 11px.
- 판이 「끝나는 선」은 판 가장자리, 곧 중심에서 ±0.47S. 돌 중심이 x 나 y 로 이 선을 넘으면 그 돌은 판 밖으로 떨어진다(벽은 없다).
- 처음 배치(시드와 상관없이 늘 같다): 흑돌 5개는 아래에서 넷째 줄(중심에서 +4칸, y = +0.2757S), 백돌 5개는 위에서 넷째 줄(y = −0.2757S). 둘 다 가로로 −4·−2·0·+2·+4칸(x = −0.2757, −0.1379, 0, +0.1379, +0.2757 S). 가운데 돌은 화면 가로 정가운데에 놓인다.
- 글자 크기: 점수 표시 0.032S, 「눌러서 시작」 0.045S, 제목 0.09S, 판 끝 결과 0.11S, 점수 튀어나옴(+100) 0.06S.

[장면]
- 바탕: 어두운 먹빛 #2E2A26 위에 한지 섬유 같은 가는 곡선 #3A352F 를 시드 난수로 300가닥쯤(길이 0.02~0.08S, 굵기 1px, 불투명도 0.3~0.6) 흩는다. 화면 크기가 바뀔 때만 다시 그려 둔다.
- 판 아래 그림자: 판 사각형을 아래로 0.015S 내리고 흐림 0.04S, 검정 불투명도 0.45.
- 바둑판(비자나무): 바탕색 #D8BC8C. 결은 판의 세로 방향을 따라 흐르는 곧은 결 — 가는 선 160가닥쯤을 #C29F6B 로, 각 선은 x 위치마다 아주 느린 사인 물결(진폭 0.002~0.006S, 파장 0.3~0.9S)과 굵기 0.5~2px, 불투명도 0.08~0.30 을 시드 난수로 다르게. 몇 군데(3~5곳)는 결이 촘촘히 모여 더 짙은 띠가 된다. 판 아랫면에 두께 0.03S 짜리 옆면을 #9C7A4C 로 그려 두꺼운 판처럼 보이게 한다. 이 판 그림은 크기가 바뀔 때만 오프스크린 캔버스에 그려 두고 매 프레임 붙인다.
- 줄: 먹색 #2A2118, 굵기 max(1px, 0.0022S), 13×13. 화점 5개(셋째·아홉째 줄의 교차 넷 + 한가운데)는 반지름 0.006S 점.
- 흑돌(점판암): #1E1F21 무광. 왼쪽 위 0.35r 지점을 중심으로 #4A4C50 에서 투명으로 가는 방사 그라데이션(반지름 0.9r)을 은은하게, 가장자리 0.08r 는 약간 더 어둡게. 표면에 아주 옅은 점 무늬(불투명도 0.05).
- 백돌(조개): #F1ECE0 바탕, 가장자리로 갈수록 #D9D2C2. 돌마다 시드로 정한 방향의 평행한 가는 곡선 무늬(조개 결) 12~18줄을 #D9D2C2 불투명도 0.35 로. 왼쪽 위에 작은 하이라이트(흰색 불투명도 0.6, 반지름 0.25r). 돌마다 결 방향이 달라야 한다.
- 돌 그림은 크기가 바뀔 때 돌마다 오프스크린 캔버스에 그려 둔다. 그림자는 돌 아래 오른쪽으로 (0.10r, 0.16r) 비켜 검정 불투명도 0.35, 흐림 0.25r.
- 판 밖으로 떨어지는 돌: 판 선을 넘은 순간부터 0.35초 동안 원래 속도로 계속 미끄러지며 크기 1→0.6, 불투명도 1→0, 그림자는 오프셋이 3배로 벌어진다(떨어지는 느낌). 끝나면 지운다.
- 부딪힘 자국: 두 돌의 접점에서 고리 하나가 반지름 0→2.2r 로 0.25초 동안 퍼지고 불투명도 0.5→0, 색 #F1ECE0, 굵기 0.004S. 동시에 판이 0.1초 동안 0.004S 진폭으로 흔들린다.
- 느린 화면(시그니처): 한 수에서 처음으로 상대속도 1.0S/초 이상의 충돌이 나면, 그 뒤 0.18초(실제 시간) 동안 시간 배율 0.3, 이어서 0.12초 동안 1로 부드럽게 돌아온다. 한 수에 한 번만.
- 조준 표시: 고른 내 돌 둘레에 #C8553D 고리(반지름 1.25r, 굵기 0.004S). 쏠 방향으로 점선(길이 0.12S + 힘×0.35S, 점 간격 0.012S), 끝에 작은 화살촉. 터치로 끌 때는 돌에서 손가락까지 고무줄 같은 가는 선(#2A2118 불투명도 0.5)을 함께. 컴퓨터가 겨눌 때는 같은 점선을 #F1ECE0 불투명도 0.7 로, 겨누는 시간 동안 길이가 0에서 자란다.
- 점수 튀어나옴: 상대 돌이 나간 자리(판 가장자리 안쪽 0.05S)에서 「+100」이 0.7초 동안 0.05S 떠오르며 사라진다. 색 #EDE6D8, 그림자 1px.
- 위 왼쪽 HUD(0.032S, #EDE6D8): 「점수 230 · 최고 400」, 다음 줄에 「내 차례」 또는 「상대 차례」와 남은 돌 수(작은 돌 그림 5개, 나간 돌은 빈 테두리). 내 차례에는 그 아래 폭 0.25S 짜리 남은 시간 막대(#C8553D).
- 오른쪽 위 소리 단추: 0.07S 정사각, 확성기 모양을 선으로(꺼지면 사선).

[조작]
- 키보드: ↑·↓ = 쏠 내 돌 바꾸기(바꿀 때마다 그 돌에서 가장 가까운 상대 돌을 겨눈 상태가 된다). ←·→ 누르고 있기 = 조준 방향 돌리기(1.2 라디안/초). 스페이스(또는 Enter) 누르고 있기 = 힘 모으기(0.9초에 힘 1, 그 뒤 1 유지), 떼면 쏜다. 누른 시간이 0.08초 미만이면 쏘지 않는다(취소). keydown 의 자동 반복(e.repeat)은 무시한다.
- 터치·마우스(pointer 이벤트): 끌기 시작점이 내 돌 중심에서 0.08S 안이면 그 돌을, 아니면 지금 고른 돌을 잡는다. 끈 방향의 반대쪽으로, 힘 = min(1, 끈 길이 / 0.30S) 로 쏜다(새총). 끌기 중에는 조준 표시가 손가락을 따라 같은 프레임에 바뀐다. 끈 길이가 0.03S 미만이면 취소. 시작점이 판 밖이어도 된다 — 세로 폰에서 엄지로 판 아래 빈 곳을 끌어도 고른 돌이 쏘아진다.
- 내 차례가 올 때마다 자동으로 「가장 가까운 내 돌–상대 돌 짝」을 고르고 그 상대 돌 중심을 겨눈 상태로 둔다. 거리가 같으면 판 가운데(x=0)에 가까운 내 돌. 그래서 첫 수는 가운데 흑돌이 바로 위 백돌을 겨눈 상태로 시작한다 — 아무 키도 돌리지 않고 스페이스만 0.8초 눌렀다 떼도 맞는다.
- 게임을 시작시킨 첫 입력(키든 탭이든)은 시작에만 쓰이고 힘 모으기·끌기로 이어지지 않는다. 시작 뒤 새로 누른 입력부터 조작이다. 'play' 가 되는 즉시 입력을 받는다.
- 돌이 움직이는 동안과 상대 차례에는 조작을 받지 않는다(소리 단추·M 키는 늘 된다). 소리 단추를 누른 탭은 게임 시작·끌기로 쓰지 않는다.
- 내 차례에 힘을 모으는 중 시간이 다 되면, 그때까지 모은 힘으로 바로 쏜다.

[규칙]
- 흑(나)이 먼저, 흑과 백(컴퓨터)이 번갈아 한 수씩. 한 수 = 내 돌 하나를 쏘는 것. 모든 돌이 멈추고 0.25초 뒤 차례가 넘어간다.
- 물리: 1/120초 고정 간격. 속도 반대쪽으로 일정 감속 1.2S/초², 속도가 0.01S/초 미만이면 0. 돌끼리는 같은 질량의 원 충돌(반발 0.92), 겹침은 반씩 밀어 푼다. 매 간격마다 모든 짝을 검사한다. 한 간격 최대 이동 2.4/120 = 0.02S 는 돌 지름 0.063S 보다 작아 뚫고 지나가지 않는다. 한 수가 3.5초를 넘게 움직이면 그 뒤 감속을 4배로 해 곧 멈추게 한다. 힘 1 의 최대 미끄럼 거리는 2.4²/(2×1.2) = 2.4S, 2초.
- 점수(내 수에서만): 상대 돌에 처음 닿게 할 때마다(한 수 안에서 돌마다 한 번) +10. 상대 돌을 판 밖으로 내보내면 +100, 한 수에서 둘째부터는 하나에 +50 더. 내 돌이 나가는 것은 감점 없이 돌만 잃는다. 이기면 +300 과 남은 내 돌마다 +50.
- 판이 끝나는 때: 어느 한쪽 돌이 모두 나가면(남은 쪽이 이김), 양쪽이 12수씩 다 두면(남은 돌이 많은 쪽, 같으면 비김), 또는 내가 연속 3번 시간 초과하면(짐). 내 차례 7초 안에 쏘지 않으면 시간 초과로 차례가 넘어간다.
- 입력이 없을 때의 길이: 내 차례 7초 ×3 + 그 사이 상대 차례 2번 × 최대 (0.8 + 3.5 + 0.5 + 0.25) ≈ 21 + 10.1 = 31.1초 < 40초. 상대가 먼저 내 돌을 다 내보내면 더 빨리 끝난다.
- 난이도: 컴퓨터 상대의 조준 오차(표준편차)는 첫째·둘째 수 0.14 라디안(자주 빗나감), 셋째·넷째 0.07, 다섯째부터 0.04. 그래서 처음 20초(대략 컴퓨터 두 수)는 내 돌을 거의 잃지 않는다.
- 끝 연출: 마지막 돌이 다 떨어지고 0.8초 동안은 state 'play' 그대로 판을 보여 주고, 그 뒤 'over'. 'over' 화면(판 위에 #2E2A26 불투명도 0.6 덮개): 「이겼다」/「졌다」/「비겼다」 0.11S, 점수 0.06S, 최고 점수, 「눌러서 다시」 0.045S. 'over' 가 되는 그 프레임부터 키·탭을 받아 새 판(시드 +1)을 연다.
- 컴퓨터가 겨누는 법(상대와 구경 모드 공통): 자기 돌 × 상대 돌 모든 짝에 대해, 쏘는 돌에서 목표 돌로 가는 선분에서 다른 돌 중심이 2.1r 안에 있으면 막힌 짝으로 뺀다. 남은 짝 중 비용 = 두 돌 사이 거리 + 0.6 × (목표 돌에서 그 방향으로 판 가장자리까지 거리 e) 이 가장 작은 짝을 고른다. 막히지 않은 짝이 없으면 가장 가까운 짝. 조준 각 = 정확한 방향 + 가우스 오차(시드 난수, 위 표준편차). 힘: d = 두 돌 사이 거리 − 2r, 충돌 때 필요 속도 v1 = √(2·friction·e) / 0.92, 처음 속도 v0 = 1.15 × √(v1² + 2·friction·d), 힘 = clamp(v0 / maxSpeed, 0.35, 1).

[구경 모드]
- 열리자마자 'demo'. 흑·백 모두 컴퓨터가 위 겨누는 법으로 번갈아 둔다(겨누는 시간 0.6초, 조준 오차 0.03). 첫 화면부터 판·돌 10개·흑의 조준 점선이 다 보인다 — 빈 화면으로 시작하지 않는다.
- 구경 모드 첫 수는 오차 0: 가운데 흑돌(0, +0.2757S)이 바로 위 백돌(0, −0.2757S)을 쏜다. 계산값 — d = 0.551 − 0.063 = 0.488S, e = 0.47 − 0.2757 = 0.194S, v1 = √(2×1.2×0.194)/0.92 = 0.742, v0 = 1.15 × √(0.742² + 2×1.2×0.488) = 1.15 × 1.312 = 1.509 S/초, 힘 0.629. 0.6초에 쏘고, 약 0.38초 뒤(열린 지 약 0.98초) 판 중심 위 0.28S 에서 「딱」, 느린 화면 0.18초, 백돌은 약 1.01S/초로 튀어 열린 지 약 1.3초에 위 가장자리를 넘어 떨어진다.
- 한쪽 돌이 다 나가거나 12수씩 두면 1.5초 쉬고 시드 +1 로 처음 배치에서 다시 시작(그 판의 첫 수도 오차 0 의 가운데 수).
- 판 가운데(y = −0.02S)에 제목 「알까기」 0.09S, 그 아래(y = +0.07S)에 「눌러서 시작」 0.045S 를 #EDE6D8 로. 「눌러서 시작」은 불투명도가 0.55~1 사이를 1.6초 주기로 오간다(rAF 시간으로 계산). 밝은 판 위의 밝은 글자는 읽히지 않으므로 두 글자 뒤에 먹빛 띠 하나를 깐다 — 판 가운데 가로 띠(가운데 y = +0.02S, 너비 0.56S, 높이 0.21S, 모서리 반지름 0.03S, #2E2A26 불투명 0.78). 띠는 구경 모드와 'over' 화면에만 있고 'play' 에서는 없다. 글자 그림자(검정 0.5, 흐림 0.006S)는 그대로.
- 구경 모드에서도 부딪힘 자국·느린 화면·떨어지는 연출은 플레이와 똑같이 나온다. 소리는 첫 입력 전이라 나지 않는다.
- 첫 키 입력이나 탭(소리 단추 제외)이면 새 판 'play'(점수 0, 흑 차례).

[소리]
- WebAudio 합성만. AudioContext 는 첫 입력 때 만들고, 그 전에는 소리를 내지 않는다. 소리 단추와 M 키로 끄고 켠다(마스터 게인 0/1).
- 딱(돌끼리 부딪힘, 시그니처): 짧은 흰 소음 0.03초를 대역 통과 필터(2400Hz, Q 8)에 통과 + 사인 1900Hz 가 0.06초에 지수 감쇠. 음량 = min(1, 상대속도/2.0) × 0.8. 같은 돌 짝은 0.05초 안에 다시 울리지 않는다.
- 쏨(튕김): 삼각파 900Hz→600Hz 0.03초, 음량 0.25.
- 떨어짐: 사인 140Hz→70Hz 0.18초 + 아주 낮은 소음, 음량 0.4 — 바닥에 툭.
- 시간 경고: 내 차례 남은 2초 동안 1초마다 1200Hz 짧은 틱 0.02초, 음량 0.15.
- 끝: 이기면 두 음(660→880Hz, 각 0.12초), 지면 (440→330Hz).

[구현]
- HTML 파일 하나로 만든다. 바깥 파일·글꼴·라이브러리·네트워크 요청을 쓰지 않는다(미리보기 칸에서 막힌다).
- 첫 <script> 맨 앞에 CONFIG 객체를 두고 [바꿀 곳]의 값과 이 글에 나온 숫자(속도·크기·색·시간)를 이름 붙여 모은다.
- 게임 진행은 requestAnimationFrame 의 타임스탬프로 고정 시간 간격(1/120초) 갱신을 돌린다. 한 프레임에 밀린 시간은 0.1초까지만 따라잡는다. setTimeout·setInterval·CSS 애니메이션으로 움직이지 않는다.
- 난수는 시드 고정 난수(mulberry32 등)만 쓰고, 판마다 시드를 하나씩 늘린다. Math.random 은 쓰지 않는다.
- 캔버스는 늘 창 전체 크기다. 창 크기가 바뀌면 다시 맞추고, 게임판 비율이 정해진 게임은 판을 가운데 두되 남는 곳에도 배경을 그린다(빈 띠를 두지 않는다). 스크롤이 생기지 않게 한다. devicePixelRatio 는 2 까지만 선명도에 반영한다.
- 키보드와 터치를 둘 다 받는다. 키 입력은 window 의 keydown·keyup 으로 받아, 화면을 먼저 누르지 않아도 첫 키가 먹게 한다. 짧게 눌렀다 뗀 키도 놓치지 않게 keydown 때 처리하거나 기록해 둔다. 터치는 페이지 스크롤·확대가 일어나지 않게 막는다(touch-action: none).
- 점수·상태를 window.__game = { state, score } 에 두고 매 프레임 갱신한다. state 는 'demo'(구경 모드)·'play'·'over' 셋 중 하나, score 는 숫자다.
- 열리자마자 'demo' — 컴퓨터가 스스로 플레이하는 구경 모드와 「눌러서 시작」 안내. 첫 키 입력이나 탭이면 새 판 'play'. 판이 끝나면 'over' 화면, 거기서 키 입력이나 탭이면 새 판. 'over' 화면은 뜨자마자 키 입력·탭을 받는다(입력을 막는 대기 시간을 두지 않는다). 끝나는 연출이 있으면 그동안은 state 를 'play' 로 두고, 연출이 끝나 입력을 받을 수 있게 된 때 'over' 로 바꾼다.
- 플레이 중 아무 입력이 없으면 늦어도 40초 안에 판이 끝난다.
- 브라우저 저장소(localStorage·sessionStorage·IndexedDB·쿠키)를 쓰지 않는다 — 미리보기 칸에서 막혀 오류가 난다. 최고 점수는 메모리에만 둔다.
- 소리는 WebAudio 로 합성한 소리만, 첫 입력 뒤에만 낸다. 화면 구석에 소리 끄기 단추(M 키도)를 둔다.
- 탭이 숨으면 멈추고 돌아오면 이어서 한다.
- 글자는 시스템 글꼴만 쓴다: 'Pretendard', 'Apple SD Gothic Neo', 'Malgun Gothic', 'Noto Sans KR', sans-serif.
- 모든 함수·상수를 먼저 정의하고, 시작(초기화와 첫 requestAnimationFrame)은 스크립트 맨 끝에서 한 번만 부른다.
- 콘솔에 오류가 나지 않게 한다. 스스로 대조하는 표는 console.table, 어긋남은 console.warn 으로만 낸다.

이 작품만의 구현:
- 물리 좌표는 S 단위(판 중심 원점)로 두고, 그릴 때만 px 로 바꾼다. 창 크기가 바뀌어도 돌의 판 위 위치는 그대로다.
- 시간 배율(느린 화면)은 고정 간격 갱신 안에서 물리에 넘기는 시간에만 곱한다. 연출 타이머(고리·튀어나옴·느린 화면 자체)는 실제 시간으로 센다.
- 차례 흐름은 작은 상태 기계로: aim(겨눔) → moving(움직임) → settle(0.25초) → 다음 차례 또는 끝. moving 중 경과 시간을 재어 settleCap 을 적용한다.
- 입력: keydown 에서 Space·Enter 의 눌림 시각을 기록하고 keyup 에서 누른 시간으로 힘을 낸다. 같은 프레임 안에서 눌렀다 떼도 기록이 남아야 한다. pointerdown·pointermove·pointerup 을 canvas 에 달고 setPointerCapture 를 쓴다.
- 시작할 때 자체 대조(console.table, 어긋나면 console.warn): 실제 물리 함수로 구경 모드 첫 수를 따로 돌려 보고 (1) 충돌 시각이 쏜 뒤 0.30~0.46초, (2) 백돌이 쏜 뒤 1.0초 안에 판 밖, (3) 「스페이스 0.8초 → 힘 0.889 로 가운데 흑돌이 정면 백돌을 맞힘」, (4) maxSpeed/120 < 2r, (5) 무입력 판 길이 추정 7×3 + 2×(0.8+3.5+0.5+0.25) ≤ 40, (6) 돌 반지름 0.030~0.034S, (7) 처음 배치 10개가 서로 겹치지 않음. 기대값과 실제값을 나란히 적는다.
- 결과 HTML 은 60KB 안팎, 100KB 를 넘지 않게. 돌·판 그림은 코드로 그린다.

[하지 말 것]
- 장식 입자(불꽃·먼지 수십 개)를 뿌리지 않는다 — 시그니처는 고리 하나와 느린 화면이고, 입자가 그 순간을 흐린다.
- 발광(shadowBlur 로 빛나는 테두리)·렌즈 플레어·네온색을 쓰지 않는다 — 나무와 돌의 무광 재질감이 무너진다.
- 돌 뒤에 꼬리(잔상 궤적)를 그리지 않는다 — 판 위가 지저분해지고 결이 안 보인다.
- 화면 모서리에 설명 라벨·조작법 상자·버전 글자를 두지 않는다 — HUD 와 소리 단추 말고는 판만 보이게.
- 바탕에 남청색·고채도 색을 쓰지 않는다 — 바탕은 #2E2A26 먹빛, 강조색은 #C8553D 하나.
- 태극 문양·한복 그림 같은 상투적 장식을 넣지 않는다 — 한국적인 맛은 비자나무 결·조개 결·한지 섬유로만 낸다.
- 바깥 글꼴·이미지·소리 파일을 불러오지 않는다 — 미리보기 칸에서 막힌다.
- 돌 배치를 난수로 흩지 않는다 — 처음 배치는 늘 [크기]의 자리 그대로다. 난수는 조준 오차·결 무늬에만.
- 판 둘레에 벽을 두어 돌을 튕겨 내지 않는다 — 판 밖으로 떨어지는 것이 이 놀이의 전부다.
- 'over' 화면에서 입력을 막는 대기 시간을 두지 않는다 — 뜨는 즉시 다시 할 수 있어야 한다.

사용 방법

필요한 것: claude.ai 계정 — 무료 계정에서도 Claude Opus 5.5 를 고를 수 있습니다

  1. claude.ai 에서 새 대화를 엽니다.
  2. 모델 메뉴에서 Claude Opus 5.5 를 고르고, 같은 메뉴의 Effort(답변 깊이)를 High 로 둡니다.
  3. 복사한 프롬프트를 붙여 넣고 전송합니다. 결과로 나온 HTML 파일을 브라우저로 열면 바로 해 볼 수 있습니다.

추가 요청 예시

결과가 나온 뒤 같은 대화에서 이어서 요청하면 해당 부분만 수정됩니다.

  • 바둑판을 19줄로 늘리고 돌을 일곱 개씩 놓아 줘
  • 두 사람이 한 화면에서 번갈아 두는 방식을 더해 줘
  • 돌이 판 밖으로 떨어질 때 얻은 점수가 떠오르게 해 줘

미니게임

같은 분류의 다른 작품

미니게임 전체 보기

모든 게임·3D 보기 AI 레시피 전체 RSS 로 새 글 받기