Trace the numbers 1 to 20 with a finger, then fill the missing numbers into a grid of apples
A Year 1 homework sheet, Practice Numbers 1–20, turned into a game. The sheet has two parts, and so does the game — two halves, like a football match.
First half — trace. The numbers 1 to 20 appear one after another over school writing guides. A green dot and an arrow show where each stroke starts and which way it goes; the finger has to follow the line, and lifting it half way starts that stroke again. Two-digit numbers are written digit by digit, tens first.
Second half — apples. Twenty apples in four rows of five, in reading order. Some already carry their number, the rest are empty. The first empty apple pulses; four number tiles sit underneath, one of them right. Three grids per half, each with more gaps than the last. The first grid is the homework sheet exactly: 2, 3, 6, 9, 10, 12, 14, 16 and 20 are given.
Every number starts in one particular place. The arrow shows the direction.
Follow the grey line with one finger. Lift it and that stroke resets.
"What comes after nine?" — tap the right tile and the apple fills in. A wrong tile just wobbles and greys out; nothing is lost.
Every traced number and every finished grid earns a football. The whole row is counted out loud at the end of each grid.
- ✍️ Forming the digits 0–9 the way school teaches them (a plain 1, an open 4, a 7 without a bar)
- 🔢 The order of the numbers to 20, and what comes next from any starting point
- 👂 Hearing every number said aloud in English as it is written or chosen
Getting inside the tolerance is a pass; hugging the line is better than a pass. While the
finger moves, every sample is scored by how far it sits from the line of the stroke being
traced — full marks up to 3 board units, falling away to nothing at TOL — and the meter under
the board shows the running mean, red at 0% and green at 100%. Samples of a stroke that has to
be started again are thrown away; samples of finished strokes count.
| Accuracy | What happens |
|---|---|
| 95% or more | "Super neat! Bonus football!" — a bonus ⚽ on top of the usual one, so a neat number is worth two |
| 75–89% | "Nice and tidy!" |
| under 75% | "Good. Try to stay on the line." |
The best score per number is kept in localStorage (jackApplesBest), and a number with a best of
90% or more keeps a small ⭐ on its chip in the number strip. The reset button clears it along with
everything else.
Each digit is one to two SVG strokes in a 100 × 140 cell; a two-digit number is two cells side
by side on a 200 × 140 board. Checkpoints are sampled along each stroke with
SVGPathElement.getPointAtLength() and must be reached in order within a tolerance
radius. Ink is drawn on a <canvas> above the SVG using pointer events with
touch-action: none, so a finger draws instead of scrolling the page.
TOL (17 board units, near the top of the script) is the single knob to turn if it feels too
fussy or too forgiving for a particular child.
| Game | What it is | |
|---|---|---|
| 📖 Jack's Words | Hear a word, build it from letter tiles, then read it in a sentence | ▶ play |
| 🥅 Jack's Match | Tell real words from decodable nonsense words, then spell by ear | ▶ play |
| ✏️ Jack's Letters | Finger-trace all 26 lowercase letters in the correct stroke order | ▶ play |
| 🔢 Jack's Numbers | Count, add and subtract with footballs — to 10, then to 20 | ▶ play |
| 💯 Jack's Big Numbers | Tens and ones, adding and taking away all the way to 100 | ▶ play |
| 🍎 Jack's Apples | Trace 1–20, then fill the missing numbers into the apple grid | ▶ play 👈 this one |
| 👀 Jack's Sight Words | The twenty most common English words on big cards — tap one and hear it read out | ▶ play |
| ♟️ Jackies Schach | Full FIDE rules with a coach that marks the safe squares (German) | ▶ play |
All eight on one start page: jackbenn.ing — homework games first, chess always last.
Every game in this organisation is one self-contained index.html — no build step, no
framework, no package manager, no analytics, and no network calls once the page has loaded.
That is a deliberate constraint: a game a child depends on should still work in five years,
and a parent should be able to read the whole thing in one sitting.
- Speech — the browser's Web Speech API, preferring a British English voice. It always waits for a tap first, because Chrome and iOS block audio without user activation.
- Progress — kept in
localStorageon the device. Nothing is collected, sent or stored anywhere else. - Made for an iPad mini in either orientation: finger-sized targets, no hover-only
interactions,
prefers-reduced-motionrespected.
Run it locally:
python3 -m http.server 8000The start page at jackbenn.ing is built from
google814/Jack, which is the source of truth. The repos
in this organisation are copies kept in step by tools/sync-game-repos.sh in that repo, so
each game also has its own page and its own link.
