Commit Graph
10 Commits
Author SHA1 Message Date
plparkandClaude Opus 5 440af0df2a Add tank stage 4 with water and supply crates
Stages so far only varied the walls. Give stage 4 rules of its own.

Water blocks tanks but not shells, so the centre of the map is crossed
only at the fords while both sides can still shoot across it. It is one
predicate - rectBlocked is used for tank movement alone, so adding WATER
there leaves bullets untouched.

Supply crates appear on a timer and grant a 3s enemy freeze or 10s of
steel around the base; the shovel effect puts brick back when it lapses,
so broken walls are repaired. Active effects show a countdown badge.

Stages carry a specials line: shown on the start overlay and in the HUD
on entry, and previewed on the preceding stage's clear screen.

Checked headlessly: over 247k sampled tank positions none sat on water
while 7591 bullet frames did, crates were taken 8 times in 8 runs, and
stage 4 leaves the base standing in 7 of 10 idle runs with 98 cells the
player can reach without firing.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-11 16:54:33 +09:00
plparkandClaude Opus 5 f208619ac4 Add tank stage 3 and per-stage entry links
Two stages were not much of a ladder. Add STAGE 3 · 강철 회랑: 31 steel
cells the shells cannot pass, a double brick cap over the base and two
narrow funnels into it, 8 enemies with 4 on the field.

Getting to a later stage meant clearing the earlier ones. Read the stage
from the URL (#3 or ?stage=3) at load and on hashchange, so the shell's
nav chips and a plain link both land where they say. The stage buttons
and key hints are built from STAGES, so a new stage needs no UI edit.

Simulated 10 idle and 10 random-bot runs per stage: stage 3 leaves the
base standing in 6 of 10 idle runs, and its 144 reachable cells keep the
player out of a sealed pocket - an earlier layout had only 8.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-11 16:38:20 +09:00
plparkandClaude Opus 5 f771a6b3e5 Add a 휴게실 tank game tab under the literature list
The crossword shell only carried literature tabs. Add a second nav
section, 휴게실, holding a standalone canvas tank game: two stages
(fortress with 4 enemies, maze with 6), arrow keys to move, space to
fire, WebAudio for the shots and explosions.

The page shares nothing with the crossword engine, so the Dockerfile's
asset-hash stamp leaves it alone. Inside the shell's iframe a keydown
only lands once the frame has focus, so the canvas takes a tabindex and
the click handler focuses it; the start overlay says to click first.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-11 16:01:04 +09:00
plparkandClaude Opus 5 9cb8915173 Fix clue leak, stop the 404 fallback, bust the proxy asset cache
세 가지를 함께 고쳤다.

러시아 편에서 고리키와 어머니의 단서가 서로의 정답을 그대로 담고 있어 두 칸이
한꺼번에 풀렸다. 양쪽 단서에서 상대 이름을 뺐다.

nginx 의 try_files 폴백을 =404 로 바꿨다. 페이지가 여럿이 된 뒤로는 없는 경로도
200 으로 셸을 내려주어, 배포가 안 됐는데도 정상으로 보이는 일이 있었다.

프록시(NPM)가 js/css 에 제 캐시 헤더를 덧붙여 원본의 no-cache 를 덮어쓴다.
이미지 빌드 때 자산 내용의 sha256 앞 열 자리를 뽑아 각 페이지의 링크를
assets/crossword.js?v=<해시> 로 바꾸는 단계를 Dockerfile 에 넣었다. 저장소의
HTML 은 해시 없는 상태로 두고, 자산이 바뀌면 URL 이 저절로 바뀐다.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-08 17:56:43 +09:00
plparkandClaude Opus 5 23d9bd6862 Add French literature puzzle
셸에 프랑스 문학 탭을 영국 다음 자리에 더하고 site/french.html 을 추가했다.
9x9 40칸 15항목.

십칠 세기부터 이십 세기까지 정전으로 골랐다. 뒤마 · 스탕달 · 보들레르 ·
프루스트 · 생텍쥐페리에 위고(자베르 · 코제트) · 플로베르(마담 보바리) ·
모파상(여자의 일생) · 졸라(제르미날) · 카뮈(페스트) · 프레보(마농 레스코),
그리고 마들렌과 장미.

탭이 여섯이 되었으나 560px 이하에서 '문학'을 접는 처리로 충분히 들어간다.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-08 17:51:03 +09:00
plparkandClaude Opus 5 f50da5279c Add Korean literature puzzle, make it the default tab
site/korean.html 을 추가하고 셸의 첫 탭이자 기본값으로 두었다. 한글 사이트이니
빈 해시로 들어오면 한국 문학이 열리는 편이 자연스럽다.

9x9 41칸 15항목으로 다섯 편 중 항목이 가장 많다. 근현대 주류 정전으로만 골라
1917년 《무정》(영채)에서 한강 《채식주의자》까지 걸친다. 나도향 · 염상섭 ·
이광수 · 이효석 · 현진건 · 채만식 · 이상 · 황순원 · 전광용 · 이청준 ·
황석영 · 조세희 · 이문열.

탭이 다섯이 되어 560px 이하에서는 탭 이름의 '문학'을 접고 나라 이름만 남긴다.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-08 17:07:24 +09:00
plparkandClaude Opus 5 c36468843d Add Japanese literature puzzle
셸에 일본 문학 탭을 더하고 site/japanese.html 을 추가했다. 9x9 44칸 14항목으로
네 편 중 가장 촘촘하다. 첫 열에 《나는 고양이로소이다》 아홉 자가 통째로 들어간다.

일본어 한글 표기는 음절이 잘 겹쳐(낱말 143개에 음절 166종) 독일 편처럼 풀을
억지로 넓히지 않아도 교차가 넉넉히 나왔다.

격자 품질 검사에 항목 간 포함 관계 검사를 더했다. 한 정답이 다른 정답에 통째로
들어가는 짝(소세키 / 나쓰메소세키)은 한 격자에 같이 두지 않는다.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-08 16:20:09 +09:00
plparkandClaude Opus 5 5b2d6e10da Add German literature puzzle
셸에 독일 문학 탭을 더하고 site/german.html 을 추가했다. 9x9 41칸 14항목.

독일어 표기는 음절이 서로 겹치지 않아 격자가 성글게 나온다. 그래서 낱말 풀을
작품·작가에서 등장인물과 작품 속 핵심어까지 넓혀 교차 지점을 확보했다.
(로테, 헨젤, 카스토르프, 나르치스 같은 인물과 벌레·계약·향기 같은 핵심어)

격자는 기존 두 편과 같은 규약을 만족한다. 길이 2 이상 모든 구간이 단서가 붙은
항목과 일대일로 대응하고, 어떤 단서도 다른 항목의 정답을 그대로 담지 않는다.

탭이 셋이 되면서 아주 좁은 화면(560px 이하)에서는 상표를 접고 탭에 폭을 넘긴다.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-08 14:03:09 +09:00
plparkandClaude Opus 5 96262fc690 Add British literature puzzle and a two-tab shell
index.html 은 왼쪽 탭(러시아 문학 / 영국 문학)과 게임을 띄우는 iframe 만 갖는
셸로 바꾸고, 게임 본체는 편별 페이지로 분리했다. 탭 상태는 해시(#russian,
#british)에 남으므로 링크로 바로 들어갈 수 있고, 같은 탭을 다시 눌러도
프레임을 다시 읽어들이지 않아 풀던 내용이 유지된다.

두 편이 쓰는 화면 양식과 게임 엔진은 site/assets/ 로 빼내 한 벌만 둔다.
엔진에는 셸 안에서 열렸을 때 여백을 줄이는 표시와, 첫 렌더에서 단서 목록을
스크롤하지 않게 하는 처리(프레임 안에서 머리말이 밀려 올라감)를 더했다.

영국 문학 편은 9x9 39칸 12항목. 가로/세로로 길이 2 이상 이어지는 모든 구간이
단서가 붙은 항목과 일대일로 대응하는지 확인했다.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-07 16:32:30 +09:00
plparkandClaude Opus 5 65588c339c Add static crossword site with nginx image and k8s manifests
- site/index.html: Russian literature crossword page
- Dockerfile + nginx conf serving on 8080 with /healthz
- k8s Deployment + NodePort Service (31380) in plpark-int-ns
- Jenkinsfile: build/push to gitea registry, apply to rancher

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-07 16:01:48 +09:00