A block stacking game is a timing-and-alignment puzzle in which a moving horizontal block is dropped onto a tower and any overhanging portion is clipped away, leaving only the overlapping span as the next level. Tower Stack is a deterministic browser implementation of that mechanic built for clarity rather than reflex: the playfield is a fixed 100-unit track, the base sits at x 35 through x 65 with a width of 30 units, and each successful drop awards exactly 200 points until the fifth lands and the run finishes at the locked score of 1,000. Every drop is computed from pure interval arithmetic rather than pixel sampling or canvas collision, so the same input always produces the same new block width and the same score. The first moving block starts at x 0, which means an immediate drop on the base (x 35 to x 65) misses the tower completely, a fact that doubles as a built-in browser test for the miss path before chasing a perfect run.

block stacking game
Block Stacking Game: Stack Five Drops, Score 1,000

What the Playfield Looks Like

The tower, the moving block, and the score each live on the same 100-unit coordinate system. The base is permanent and never moves: it spans x 35 through x 65, which is 30 units wide and centered on the playfield. The first moving block also has width 30, but it starts at x 0, the far-left edge of the track. As soon as a block drops and becomes the new top level, the next moving block resets at x 0 with the exact clipped width of that new level, so the track, base, and respawn behavior are predictable on every run.

Movement is also deterministic. Each tick advances the moving block by direction times speed, and when the candidate x position crosses either track boundary, the engine reflects the excess distance back into the legal interval and reverses direction. A 500-tick bound check confirms that x never becomes negative and x plus width never exceeds 100. Speed increases after successful drops, raising the timing challenge while preserving the same tested reflection rule. None of this depends on animation frames, CSS bounding boxes, or hidden answers: the pure logic layer is the source of truth, and the timer only requests the next tick.

How to Play Tower Stack

  1. Open Tower Stack in your browser and let the moving block appear at the left edge of the track.
  2. Watch the moving block slide back and forth above the current top of the tower.
  3. Drop the block while its span overlaps the top block by pressing Space, Enter, clicking the playfield, or choosing the Drop block button.
  4. Read the new top block: its x becomes the overlap's left edge, its width equals the positive overlap interval, and every overhanging unit has been clipped away.
  5. Continue until five successful drops above the base are stacked, at which point the score locks at exactly 1,000 points.
  6. If you ever need to start over, press Restart to recreate the base, moving block, direction, speed, progress, score, pause state, and mistake count.

Pause and Step Alignment for Precision Drops

Speed increases after every successful drop, but the game is designed so you never have to depend on reflex. Press P (or choose Pause) to stop the automatic ticks entirely. While paused, the Step left and Step right buttons and the horizontal Arrow keys move the moving block exactly one unit per action within the same bounds, so you can position it relative to the current top with full visibility before committing. Resume restarts interval-driven motion on the next tick.

This pause-and-step path is what makes the run browser-verifiable. You can pause at any time, check the predicted width against the next move, and confirm that the production transition produces the same width before pressing Space. Repeated keyboard events are ignored, so holding a key cannot create several blocks from one intended action, and one call to the drop transition creates at most one permanent block and increments successful progress at most once. The result is a deterministic alignment mechanic that anyone can audit by stepping through the same moves.

A Reproducible Path to Five Drops

One clean way to confirm the rules is to pause the game and place each moving block exactly one unit to the right of the current top before dropping. With the base at x 35 (right edge x 65) and the first moving block starting at x 0, that path produces a known sequence of widths:

DropPosition Before DropOverlap LeftOverlap RightNew WidthScore After Drop
1 (on base x 35, w 30)x = 36max(35, 36) = 36min(65, 66) = 6529200
2 (on x 36, w 29)x = 37max(36, 37) = 37min(65, 66) = 6528400
3 (on x 37, w 28)x = 38max(37, 38) = 38min(65, 66) = 6527600
4 (on x 38, w 27)x = 39max(38, 39) = 39min(65, 66) = 6526800
5 (on x 39, w 26)x = 40max(39, 40) = 40min(65, 66) = 65251000

The same widths (29, 28, 27, 26, 25) are reproduced by the production transition, each new x equals the overlap's left edge, and the score locks at 1,000 on the fifth successful drop. This is the one worked example to keep in mind; once you understand the overlap arithmetic, every placement you make can be predicted the same way.

Scoring, Misses, and Recovery

Scoring is fixed and explicit: each successful drop adds 200 points, so the intermediate readings are 200, 400, 600, and 800, and the fifth successful drop finalizes the run at 1,000. A block whose right edge is not greater than its left edge has zero positive overlap with the current top and counts as a complete miss; an edge-touching drop, where the moving block's right edge equals the top's left edge, also has width zero and is treated as a miss.

The first miss is recoverable. The tower remains unchanged, and a fresh moving block with the current top width returns to x 0, so you can pause, realign, and continue building without losing the levels you have already stacked. The second miss is not recoverable: it records the second mistake and deadlocks the run until you press Restart. Because the initial moving block starts at x 0 and the base starts at x 35, dropping immediately twice is a simple deterministic browser path for verifying the second-miss deadlock behavior without building any partial tower.

Completion (1,000 points) and deadlock (two misses) are both terminal states. Once either is reached, ticks, drops, pause toggles, and manual nudges return the unchanged state, which means the game cannot be saved by a lucky late input. The Boss Key and double-Escape spreadsheet-style screen are handled by the shared GameShell, and the best score is kept only in local browser storage.

Controls at a Glance

ActionKeyboardPointer / TouchOn-Screen Control
Drop blockSpace or EnterClick or tap the playfieldDrop block
Pause / ResumePPause / Resume
Step one unitLeft or Right ArrowStep left, Step right
RestartRestart
Boss screenEscape twice

What Makes the Run Deterministic

The moving block is represented by x position, width, direction, and speed. Every permanent block stores x, width, and level. Overlap is calculated as the larger left edge and the smaller right edge of the moving and top spans, and the overlap interval becomes the next block only when its width is positive. No pixel sampling, canvas collision, CSS bounding box, animation frame time, or hidden answer decides the outcome, so the same sequence of moves always reproduces the same tower, the same score, and the same miss history.

The interface uses ordinary HTML buttons and positioned elements rather than a canvas library. Dynamic inline styles specify only geometric left, width, height, and bottom values; colors, borders, typography, focus outlines, and surfaces all come from site design tokens. The playfield, the two-column mobile control grid, the wrapping status text, and the large actions all fit a 390-pixel viewport without horizontal scrolling. Everything runs locally in the browser using disclosed game logic, and stable test identifiers expose the stage, the moving block, each permanent block, the top geometry, the direction, the controls, the feedback, completion, and deadlock for anyone who wants to audit the run.

Tower Stack is recreational rather than an intelligence, reflex, medical, educational, or employment assessment, and timing only affects how easy alignment feels, since scoring depends entirely on reaching five valid drops. For a relaxed run, pause before each placement and nudge carefully along the reproducible 29-to-25 path; for a timing challenge, leave the motion running and try to land a centered drop without ever pressing Pause.