What it does
createLetterWheel makes a level from a seed. It picks a base word of the length you ask for whose letters spell
enough words, finds every word they spell, and chooses the targets: the base word first, then one word of each length
in turn, longest first, so a level mixes long and short words. In a crossword, each target must cross one already
placed where they share a letter, no two words may sit side by side, and the whole must fit inside a size you set; a
word that cannot is passed over for the next. Every other word the letters spell is a bonus word.
Play is tracing round the wheel. spell says what a trace reads for the preview, and trace judges it: a target fills
its cells and the letters it shares with crossing words, a bonus word joins the bonus list, a word found already is
reported as a repeat, and anything else is refused with a reason. hint shows the first hidden letter of the shortest
unfound word, and a word whose letters are all shown by hints and crossings counts as found. shuffle puts the wheel's
letters in a new order.
wheelLevel turns a level number into options for a rising ladder: four letters and three targets at level 1, one more
target every three levels and one more letter every eight, each level always the same. Levels are a seed and a list of
moves on the kernel history, so undo and saves come free.
Features
- Base words that work — a seeded pick that spells at least
minWordswords, or a base word you choose. - Every word the letters make — targets for the level, and every other word as a bonus word.
- A mix of lengths — the base word, then one word of each length in turn.
- Crossword layout — targets crossing at shared letters, never side by side, inside
maxSizecells. - List layout — the targets by length, for a level that asks for every word.
- Shared letters — finding a word shows its letters in the words that cross it.
- Hints and shuffles — a letter at a time, and a new order for the wheel.
- A level ladder — more letters and more targets as levels rise, each level fixed by its number.
- Your own words — any word list, and words to leave out.
- Undo and saves — the kernel history of moves.
Good for
- Crossword-style word puzzles with hundreds of levels from one ladder.
- "Every word in seven letters" challenges, with a list layout and a high target count.
- Daily wheels, one seed for every player.
- Themed puzzles, from a word list of your own.
- Gentle word games for younger players, with four-letter wheels and a blocklist.
Make it yours
A level takes letters or a base word, the words that count, minLength, targets, minWords, layout,
maxSize and exclude. wheelLevel sets the ladder's top letters and targets and how fast it climbs, and extra
overrides anything per level. The pack draws nothing, so the wheel, the trace line and the crossword are yours.
Two materially different games: a crossword ladder that starts at four letters and three words and climbs to seven letters and ten words; and a list game with seven letters and forty targets, where the challenge is to find every word. A third uses four-letter words or longer only, from your own word list.
A quick look
A level from the ladder, a trace and its result:
const level = createLetterWheel(wheelLevel(12)); // or createLetterWheel({ seed, letters: 6, targets: 8 })
const view = level.observation(); // wheel letters, targets, crossword cells, bonus words
level.spell([2, 0, 4]); // what a trace spells, for the preview
const r = level.trace([2, 0, 4]); // positions on the wheel, each once
if (r.ok) r.result.kind; // 'target', 'bonus' or 'repeat'
level.hint(); level.shuffle();
Works with
letter-tiles— draws the wheel with an elastic trace, glides the letters on a shuffle and turns crossword cells over.english-words— required: the words, and the search that finds what the letters spell.typography— for the wheel's letters and the crossword.save— to keep a player's level and progress.letter-grid— when the letters should sit on a board and words be traced through touching tiles.
Good to know
- It is the rules only: the game draws the wheel and the crossword and turns pointer positions into wheel positions.
- There are no coins or prices; count
bonusandhintsfor an economy of your own. - The lexicon has some uncommon words, and a level may ask for one;
excludeor a filtered list keeps them out. - The crossword is laid out greedily, not searched, so a tight
maxSizemay place fewer targets than asked for.






