# Falling Blocks

> Fit six mixed-size shapes, complete horizontal rows, and keep the board from filling up.

A falling-block puzzle built for this site. Rust handles the game rules in WebAssembly; a canvas draws the board. Each run stays in this tab, with no account, saved leaderboard, or game audio.

**Stack:** Rust, WebAssembly, TypeScript, Canvas 2D

**Playing requires JavaScript and WebAssembly. The rules and controls are available without them.**

## How to play

1. Fit six shapes of one to five cells into a 12×20 board. Move and rotate each falling piece; the shadow shows where it will land. Reserve a piece once per drop.
2. Fill all 12 cells in a horizontal row to clear it. Incomplete rows stay on the board.
3. After a clear, the rows above move down intact. Each cleared row earns 90 × level points.
4. Lowering earns 1 point per cell; dropping earns 2. Every six cleared rows increases the level and speed. The game ends when a new piece cannot enter or a piece lands above the board.

Use the touch buttons on your phone, or focus the board for keyboard shortcuts on your laptop. Fullscreen gives the game more room. Leaving the game pauses it.

Your best score is saved only in this browser when local storage is available. Clearing site data removes it.

This is a visual puzzle. The board does not have a screen-reader equivalent; the rules and controls are available as text.

## Keyboard shortcuts

- `Enter` — Start / resume
- `← / →` — Move
- `↓` — Lower
- `↑ / X` — Rotate clockwise
- `Z` — Rotate counterclockwise
- `Space` — Drop
- `C` — Reserve
- `P / Escape` — Pause / resume
- `R` — Restart

## Play

[Play Falling Blocks](/en-US/games/falling-blocks)

[Back to games](/en-US/games)
