Everyone has a house rule for Uno. Ours changes the one moment the real game wastes: the turn where you draw a card, it does not help, and you just pass. Last Card takes that dead beat and turns it into a decision.
What It Is
Single-player, house-rules Uno against one to three AI opponents, built as a React game module inside the Wanessa Labs Games Hub. It shares the hub’s GameProps contract and design language. No accounts, no backend, no network calls during play, fully offline. First player to 500 points wins the match.
The House Rule
When you have nothing to play, you do not just draw one and pass. You draw up to two, and you play from what you draw:
- Draw the first card. If it is playable, play it, or decline and draw again.
- Draw the second card. If it is playable, play it. If not, keep both and pass.
Only the cards you drew this turn can go down this way. The rest of your hand is already known to be unplayable, so the game never lets you hide behind it. Every step is an explicit choice on the table, not an auto-play. It is the smallest change to the rules that makes a stuck turn worth thinking about.
Calling Last Card
You have to call “Last Card” the moment you are down to one card. Forget, and any opponent can catch you before the next turn finishes, and you draw two as a penalty. It works both ways: the bots forget too, at a rate that scales with difficulty, so catching them is a real button and real points.
Tuning this fairly was the hard part. The catch window has to be short enough to matter and long enough that a human can actually react and hit the call, on a phone, one-handed. The call button floats and pulses so it is impossible to miss inside that window.
The Coach
Like the Poker Trainer, Last Card ships a coach that reuses the exact heuristic the bots use, so the advice and the AI can never disagree. It names the play it would make, gives a one-line reason, and adds situational tips: you are about to be on your last card, an opponent is down to one, that wild is worth saving. Collapsible, on by default.
The Opponents
The bots are a pure function over game state, deterministic given a seed, so the whole match is testable with no interface at all. Three difficulty tiers scale a small table of knobs: how long they hold their action cards, whether they aim a Draw Two or Skip at a player who is almost out, how often they forget to call, and how alert they are to catch you.
They also talk. Evie, Saylor, and Madison have their own lines for every moment that matters: a Draw Four dropped, a catch landed, someone drawing two and still finding nothing, someone one good round from 500. The table talk is throttled and never repeats itself into the ground.
Features
- One to three bots, three difficulty tiers, seats you choose
- The draw-up-to-two house rule as an explicit, on-table decision
- Call and catch “Last Card” in both directions, scaled by difficulty
- A live coach that shares the bots’ brain
- Wild color picker, direction and current-color indicators, live card counts
- Optional strict Wild Draw Four; no Draw-card stacking by default
- Match-to-500 scoring with per-round results, and mid-match resume on reload
- Reduced-motion path, fully offline, and a spot in the kid-friendly hub
Stack
| Tool | Role |
|---|---|
| React + TypeScript | Game module inside wanessalabs-games |
| Pure engine | Deterministic rules, headless-testable, seed-driven |
| Tailwind | Hub-consistent styling |
| Cloudflare Pages | Hosted inside the wanessalabs-games hub |

