# Claustrowordia LD50 winner, UI tweens, audio juice, 56k-word dictionary scoring. ```{raw} html 📄 Docs only

Upstream: https://github.com/anttihaavikko/claustrowordia

``` **Tags:** `port` `tier-1` # Claustrowordia (SimVX port) SimVX port of [anttihaavikko/claustrowordia](https://github.com/anttihaavikko/claustrowordia) LD50 jam winner. Crossword-on-a-grid puzzle: place letter tiles on a 7×7 board, score per valid English word formed in any direction. ## Run ```bash # from /home/fezzik/dev/simvx uv run python ported_games/claustrowordia/simvx_port/main.py # interactive uv run python ported_games/claustrowordia/simvx_port/main.py --test # headless capture (3 frames) uv run python ported_games/claustrowordia/simvx_port/harness.py # scripted-input capture (5 stages) uv run simvx export web ported_games/claustrowordia/simvx_port/main.py \ -o ported_games/claustrowordia/simvx_port/web/index.html ``` ## Controls - **Click a letter in the hand** picks up the tile (it follows the cursor). - **Click on an empty grid cell** drops the tile there. Words formed in rows / columns (forward and reversed) are scored. - **Right-click while holding a tile** cancels and returns it to the hand. - **R** restarts after game-over. - **Escape** quits. ## Acceptance bar - [x] Source cloned to `source/` - [x] `main.py` launches the game with a fanned hand + 7×7 grid - [x] Tile placement, word validation, scoring, lose condition all wired - [x] UI tweens (damped-sine punch on place / score; bounce on hand layout) - [x] Audio juice: place sound, score note (per-letter ascending pitch), word-complete chime, game-over thunk: all procedural - [x] Running score in the HUD (Text2D) - [x] Headless screenshots at frame 30 / 60 / 120 in `screenshots/` - [x] Scripted harness covering 5 stages - [x] Web export to `web/index.html` - [x] NOTES.md with friction points + engine-gap candidates ## Source ```{literalinclude} ../../examples/ports/claustrowordia/main.py :language: python :linenos: ```