Score0
Time20s
Best0
Twenty seconds. Sixteen squares. Catch the one that lights up.
Quick Signal is deliberately tiny. Most of the work is timing, fairness, and making every click feel immediate.
Idle, playing, and finished are the only phases. The interval exists only while playing, cleans itself up on restart, and lets React own the visible countdown.
A random signal is fun until it appears in the same square twice and looks broken. The picker retries that one case. Wrong taps remove a point, but the score never drops below zero.
let next = Math.floor(Math.random() * GRID_SIZE);
while (next === previous) {
next = Math.floor(Math.random() * GRID_SIZE);
}if (index === activeCell) {
setScore(value => value + 1);
setActiveCell(nextCell(activeCell));
} else {
setScore(value => Math.max(0, value - 1));
}