Difficulty
Balls fall slowly and there's less poop. Great for a first try.
Press "Open the door" and balls fall from the top. Move the basket left and right to catch them! Catch the poop (💩) and it's game over. Grab a star (⭐) and it auto-catches for a while.
The fall speed in Catch Drop is not fixed. Every time you catch a ball, the speed increases slightly. In other words, the better you play, the faster it gets — you are always playing near the edge of your own reaction time.
This design is sometimes called adaptive difficulty. A fixed speed bores experienced players and shuts beginners out entirely. Tying speed to the number of catches keeps the tension right for everyone.
The acceleration is not unlimited: each difficulty has a ceiling. Easy ramps gently with a low cap; Hard ramps steeply and tops out much faster. The three levels differ not just in starting speed but in the shape of this acceleration curve.
When balls are raining down and you keep swinging the basket toward them, you develop a reflex to chase every falling object. Then poop appears, and you have to stop the hand you have already started moving.
In psychology this is called a go/no-go task: switching between responding (go) and withholding a response (no-go) in the same context. It engages the inhibitory control handled by the prefrontal cortex. For children, it is direct practice at holding back an impulse — the same self-regulation used in waiting your turn or resisting an impulse purchase.
The proportion of poop changes with difficulty. On Easy it is roughly 10 percent of spawns; on Hard it climbs to nearly 25 percent, demanding no-go decisions far more often.
Grab a star (⭐) and auto-mode kicks in for a few seconds: the basket tracks balls automatically, and poop cannot end the game while it lasts.
This looks like a breather, but it has a strategic side. Catches still accumulate during auto-mode, so the speed keeps climbing. The moment auto-mode ends, you return to manual control at a higher speed than before. Depending on when you grab the star, the transition back can be the hardest moment in the run.
Star spawns are probability-controlled with a cooldown to prevent back-to-back appearances. There is also a floor that prevents a star-less drought from lasting too long.
Easy, Normal and Hard do not just change the speed. Four parameters shift at once.
You can move the basket by dragging with a mouse, swiping with a finger, or pressing the left/right arrow keys. Internally, all three inputs feed into the same requestAnimationFrame loop.
Pointer input (mouse or touch) captures coordinates from pointermove events; keyboard input sets a direction flag on keydown/keyup. Each frame reads both values and applies them to the basket's x position. This means there is no latency difference between input methods, and every device feels equally responsive.
Balls, the basket and the door are all rendered with CSS. Ball colors change randomly on each catch by swapping the CSS background-color. Poop and stars are Unicode emoji rendered as text.
Sound effects (catch chime, game-over tone, star pickup) are synthesized on the fly with the Web Audio API's OscillatorNode. That means no image files and no audio files are ever loaded, and the game makes no extra requests.
The only data saved is each difficulty's best score, stored exclusively in your device's localStorage. No name or age is collected, and nothing about your play session is sent anywhere.