BREAKOUT

Cabinet 04 · Canvas 400×600 · 8×4 block field · 3 lives

INSERT COIN
CRT · 60 FPS · FIXED STEP
Move←→or mouse / drag
LaunchSPACE
PausePRestartR

OPERATOR'S NOTES

One ball, thirty-two blocks, no mercy. Every bounce resolves on a single axis so the ball never tunnels, never sticks, and never loses speed.

Field
400 × 600 px · HUD strip 60 px · paddle deck at y = 580
Block grid
8 × 4 · 50 × 20 px · x = col·50, y = 60 + row·20 · 32 alive
Ball
r = 3 px · launch (2, −2.8) normalized · magnitude 3.44 → 4.00
Paddle
60 × 10 px · clamp 0 → 340 · angle from hit offset, up to ±62°
Collision
AABB on ball bounding box · closest block wins · flip on the shallower penetration axis, push out, renormalize
Timing
requestAnimationFrame + fixed 16.67 ms accumulator · 4 steps max per frame · delta-independent
Input
touchstart / touchmove / touchend + mousemove + keyboard · touch routes to the paddle only, taps launch
Palette
#1a1a1a field · #00ffff blocks · white paddle · #ffe14d ball · white type

★ BREAKOUT ★ 32 BLOCKS ★ 320 POINTS PERFECT ★ 3 LIVES ★ KEEP THE BALL ABOVE THE HATCHED ZONE ★ DRAG ANYWHERE ON THE SCREEN TO STEER ★ INSERT COIN ★