oneshotlm
Compare all models on this prompt →

Tetris · step-3.7-flash

Build a playable Tetris on a canvas with all seven tetrominoes, rotation, line clears, increasing speed, a next-piece preview, and score.

⛨ sandboxed Open in new tab ↗
transcript · 6 messages
user

Build a playable Tetris on a canvas with all seven tetrominoes, rotation, line clears, increasing speed, a next-piece preview, and score.

assistant
thinking
The user wants me to build a playable Tetris game in a single HTML file. Let me create a complete, self-contained `index.html` with:

1. Canvas-based Tetris
2. All seven tetrominoes (I, O, T, L, J, S, Z)
3. Rotation
4. Line clears
5. Increasing speed
6. Next piece preview
7. Score tracking
8. No external resources, CDNs, or network requests

I'll create a full-featured Tetris game with:
- A main play area canvas
- A next piece preview canvas
- Side panel for next piece, score, level, controls
- Keyboard controls (arrow keys, space for hard drop, etc.)
- Progressive difficulty (speed increases with levels)
- Clean retro-styled UI with inline CSS
- Game over detection
- Start/pause functionality

Let me design this thoroughly:

**Game Details:**
- Board: 10 columns × 20 rows
- Classic Tetris colors for each piece
- 7-bag randomizer for fair piece distribution
- SRS-like rotation with wall kicks (simplified)
- Ghost piece showing where the piece will land

**Controls:**
- Left/Right arrows: Move piece
- Down arrow: Soft drop
- Up arrow: Rotate clockwise
- Z: Rotate counter-clockwise
- Space: Hard drop
- P: Pause/Resume
- R: Restart (when game over)

**Scoring:**
- Single line: 100 pts
- Double: 300 pts
- Triple: 500 pts
- Tetris (4 lines): 800 pts
- Soft drop: 1 pt per cell
- Hard drop: 2 pts per cell

**Speed:**
- Levels based on lines cleared
- Level 0: ~800ms per tick
- Decreasing interval as level increases

Let me write the complete file.
write index.html (17478 bytes)
toolResult

Successfully wrote 17478 bytes to index.html

assistant
thinking
The file has been written. Let me verify it's all there and the structure is correct. Let me do a quick read to confirm.

The file is written. Let me do a quick sanity check to confirm it's valid and complete.

bash {"command":"wc -l /workspace/index.html && head -n 5 /workspace/index.html && echo \"...\" && tail -n 5 /workspace/index.html"}
toolResult

621 /workspace/index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no"> ... updateStats(); })(); </script> </body> </html>

assistant
thinking
The file is complete and properly formed. Let me summarize what was built for the user.

`index.html` is ready (621 lines, fully self-contained). **What's included:** **Core Tetris mechanics** - All seven tetrominoes (I, O, T, L, J, S, Z) with classic colors - Rotation with basic wall kicks - Ghost piece preview showing landing position - Collision detection and piece locking - Line clears with single/double/triple/tetris scoring - Game over when a new piece collides on spawn - 7-bag randomizer for fair piece distribution **Game systems** - Increasing speed: starts at ~800ms/tick, decreases with each level - Level up every 10 lines cleared - Soft drop (+1 per cell) and hard drop (+2 per cell) - Next-piece preview panel - Persistent scoreboard: Score, Level, Lines **Controls** - **←/→** — move (with DAS/auto-repeat) - **↑** — rotate clockwise - **Z** — rotate counter-clockwise - **↓** — soft drop - **Space** — hard drop - **P** — pause/resume - **Enter** — start / restart **UI polish** - Dark retro theme with neon accents - Grid lines and beveled blocks - Start screen, pause overlay, game over dialog with final score - Keyboard-accurate DAS/ARR for responsive movement

TAKE IT TO CODE

A single self-contained HTML file — copy it and open in any browser, or reuse the prompt with your own pi-agent run.

RUN

modelstep-3.7-flash
vendorStepFun
harnesspi-agent
generated2026-07-22

EVALUATION

3/5 working

Tetris starts and pieces stack with score/next preview, but pieces pile haphazardly with gaps, no lines cleared.

Vision grade · anthropic/claude-sonnet-5

MEASUREMENTS

Raw readings from the capture, not a verdict — the grade above is the only judgement. Percentages are how much of the screen changed; the measure under-reports sparse motion on a dark background.

idle motion0.0%
on click0.0%
on drag0.0%
on wheel0.0%
on enter + space79.7%
on arrow keys2.1%
on w/a/s/d2.3%
frame spread18.2 / 255
console errors0
js errors none

METRICS

runtime46.7s
tokens in9.3k
tokens out6.3k
cached7.4k
cost / run$0.0094