From 6daade952e952ba2ef78c796e2dfd48e95009a53 Mon Sep 17 00:00:00 2001 From: type-two Date: Thu, 16 Jul 2026 20:30:50 +1000 Subject: [PATCH] =?UTF-8?q?THREETRIS:=20POV=20matrix=20tetris=20=E2=80=94?= =?UTF-8?q?=20catch=20bricks,=20rotate=20mid-flight,=20fit=20the=20wall?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Single-file Three.js game, no build step. Bullet-time catch phase, 3D rotation vs 2D silhouette matching, digital rain, worker-driven loop so the sim survives hidden-tab throttling. Co-Authored-By: Claude Fable 5 --- .claude/launch.json | 11 ++ README.md | 16 +++ index.html | 322 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 349 insertions(+) create mode 100644 .claude/launch.json create mode 100644 README.md create mode 100644 index.html diff --git a/.claude/launch.json b/.claude/launch.json new file mode 100644 index 0000000..7886be9 --- /dev/null +++ b/.claude/launch.json @@ -0,0 +1,11 @@ +{ + "version": "0.0.1", + "configurations": [ + { + "name": "threetris", + "runtimeExecutable": "python3", + "runtimeArgs": ["-m", "http.server", "8123"], + "port": 8123 + } + ] +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..4b66791 --- /dev/null +++ b/README.md @@ -0,0 +1,16 @@ +# THREETRIS + +POV Matrix tetris. Bricks fly at your face in bullet time — dodge them or catch them, +then throw them back through the hole in the oncoming wall, rotating them mid-flight +so their silhouette fits exactly. Flat tetrominoes + full 3D rotation means pitching a +piece changes its silhouette (an I-piece end-on is a 1×1 hole). + +**Play:** open `index.html` over http (`python3 -m http.server`), any modern browser. +No build, no deps — single file, Three.js from CDN. + +- **Mouse** — move your head (dodge / reach) +- **Click** — catch an incoming brick when it's close, or throw the held brick +- **W/S · A/D · Q/E** — pitch / yaw / roll 90°, works while held and mid-flight +- Catch +25, fit +100, 3 lives. Speed ramps per fit. + +Cheats/debug in console: `_g` (state), `_auto()` (rotate held brick to fit), `_m(x,y)` (move head). diff --git a/index.html b/index.html new file mode 100644 index 0000000..d2552ec --- /dev/null +++ b/index.html @@ -0,0 +1,322 @@ + + + + +THREETRIS + + + + +
+
SCORE 0
+
+
+
MOUSE move  ·  CLICK catch / throw  ·  W/S pitch   A/D yaw   Q/E roll (mid-flight too)
+
+
+

SYSTEM FAILURE

CLICK TO RE-ENTER
+ + + + +