P1 — PLAYFIELD60 FPS
32 cyan blocks. One yellow ball, three lives, and a paddle that refuses to leave the canvas. Steer with a finger, a mouse, or the arrow keys — the bounce angle depends on where the ball meets the paddle.
400 × 600 canvas 2D
8 × 4 row·20 + col·50
Circle ↔ AABB side-resolved
rAF fixed 1/60 s step
Touch + pointer + keys
DPR-aware crisp buffer