1114 lines
47 KiB
Org Mode
1114 lines
47 KiB
Org Mode
|
|
#+TITLE: Known Games — research collation for card-games.el
|
|||
|
|
#+AUTHOR: Corwin Brust (research compiled with Mentat)
|
|||
|
|
#+OPTIONS: toc:2 num:nil
|
|||
|
|
#+STARTUP: showall
|
|||
|
|
|
|||
|
|
* About this file
|
|||
|
|
|
|||
|
|
This is a *research collation*, not an order list. It records card games
|
|||
|
|
we have looked into, what we learned about their rules, a rough level-of-
|
|||
|
|
effort (LoE) guess as a T-shirt size, and links to authoritative rules.
|
|||
|
|
|
|||
|
|
We only consider *building* a game once its Rules section is filled in well
|
|||
|
|
enough that we believe we could implement it. People will suggest games
|
|||
|
|
over time; before researching a new one, search this file for its ~name~ to
|
|||
|
|
see whether we have already looked at it and what we found.
|
|||
|
|
|
|||
|
|
** Meta-table fields
|
|||
|
|
|
|||
|
|
Each game is a top-level section containing a left-header table with:
|
|||
|
|
|
|||
|
|
- *name* :: common name (section heading matches).
|
|||
|
|
- *package* :: ~NA~ if unbuilt, otherwise the launch command in
|
|||
|
|
=card-games= (e.g. ~M-x cg-klondike~).
|
|||
|
|
- *players* :: supported player counts.
|
|||
|
|
- *LoE* :: T-shirt size — *S* easier · *M* normal · *H* clearly more work.
|
|||
|
|
- *engine* :: which shared engine/cluster it belongs to (see end).
|
|||
|
|
- *links* :: authoritative rules.
|
|||
|
|
- *added* / *updated* :: ISO dates.
|
|||
|
|
|
|||
|
|
** T-shirt sizing key
|
|||
|
|
|
|||
|
|
- *S* :: small — little new logic; mostly reuses an existing engine.
|
|||
|
|
- *M* :: medium — a normal game's worth of new rules/UI.
|
|||
|
|
- *H* :: hard — multi-deck, melding, or heavy scoring; clearly more work.
|
|||
|
|
|
|||
|
|
* Beggar-My-Neighbour
|
|||
|
|
|
|||
|
|
| name | Beggar-My-Neighbour |
|
|||
|
|
| package | NA |
|
|||
|
|
| players | 2 (3-4 variants) |
|
|||
|
|
| LoE | S |
|
|||
|
|
| engine | shedding/auto |
|
|||
|
|
| links | https://en.wikipedia.org/wiki/Beggar-my-neighbour |
|
|||
|
|
| added | 2026-06-24 |
|
|||
|
|
| updated | 2026-06-24 |
|
|||
|
|
|
|||
|
|
** Rules
|
|||
|
|
|
|||
|
|
Deal the whole 52-card deck out evenly, face down, one stack per player.
|
|||
|
|
Players do not look at their cards. In turn, each player plays the top
|
|||
|
|
card of their stack face up to a central pile. Play passes until someone
|
|||
|
|
plays a "penalty card" (an honour): Ace, King, Queen, or Jack. The *next*
|
|||
|
|
player must then pay a forfeit by playing cards to the pile: 4 for an Ace,
|
|||
|
|
3 for a King, 2 for a Queen, 1 for a Jack. If during a forfeit another
|
|||
|
|
honour appears, the forfeit cancels and the obligation flips to the
|
|||
|
|
following player. If a forfeit is paid out with only number cards, the
|
|||
|
|
player who laid the last honour takes the whole central pile and places it
|
|||
|
|
face down under their stack, then leads again. A player who runs out of
|
|||
|
|
cards is out; last player holding cards wins.
|
|||
|
|
|
|||
|
|
** Notes
|
|||
|
|
|
|||
|
|
Fully deterministic once dealt — *zero decisions*. Ideal first "auto-play"
|
|||
|
|
demo: the engine just animates. Famous for sometimes never terminating.
|
|||
|
|
|
|||
|
|
* Briscola
|
|||
|
|
|
|||
|
|
| name | Briscola |
|
|||
|
|
| package | NA |
|
|||
|
|
| players | 2, 4 (partnership) |
|
|||
|
|
| LoE | M |
|
|||
|
|
| engine | trick (no follow-suit) |
|
|||
|
|
| links | https://en.wikipedia.org/wiki/Briscola · https://www.pagat.com/aceten/briscola.html |
|
|||
|
|
| added | 2026-06-24 |
|
|||
|
|
| updated | 2026-06-24 |
|
|||
|
|
|
|||
|
|
** Rules
|
|||
|
|
|
|||
|
|
40-card Italian deck (or strip 8/9/10... — actually strip the 8s,9s,10s
|
|||
|
|
from a French deck to get 40, ranks A,3,K,Q,J,7,6,5,4,2). Card-point
|
|||
|
|
values: Ace 11, Three 10, King 4, Queen/Horse 3, Jack/Knave 2, others 0
|
|||
|
|
(total 120). Deal 3 cards each; turn the next card face up — its suit is
|
|||
|
|
the *briscola* (trump) for the hand — and place it half-under the stock.
|
|||
|
|
No requirement to follow suit. Highest briscola wins; else highest card
|
|||
|
|
of the led suit. Winner of each trick draws first from stock, then others,
|
|||
|
|
restoring hands to 3. The last face-up trump is the final card drawn.
|
|||
|
|
Continue until the deck and hands are exhausted (20 tricks total in 2p).
|
|||
|
|
Score the card points captured; 61+ wins.
|
|||
|
|
|
|||
|
|
** Notes
|
|||
|
|
|
|||
|
|
No-follow-suit makes the trick resolver simpler than 500/Spades. Shares
|
|||
|
|
the deck/trick/AI scaffolding of the trick cluster; good companion to Scopa
|
|||
|
|
for an "Italian games" set.
|
|||
|
|
|
|||
|
|
* Canasta
|
|||
|
|
|
|||
|
|
| name | Canasta |
|
|||
|
|
| package | NA |
|
|||
|
|
| players | 4 (partnership); 2-3 variants |
|
|||
|
|
| LoE | H |
|
|||
|
|
| engine | rummy/meld (multi-deck) |
|
|||
|
|
| links | https://en.wikipedia.org/wiki/Canasta · https://www.pagat.com/rummy/canasta.html |
|
|||
|
|
| added | 2026-06-24 |
|
|||
|
|
| updated | 2026-06-24 |
|
|||
|
|
|
|||
|
|
** Rules
|
|||
|
|
|
|||
|
|
Two 52-card decks + 4 jokers (108). Deal 11 each. Jokers and 2s are
|
|||
|
|
wild. Players draw and discard, melding sets of 3+ equal ranks (no runs).
|
|||
|
|
A *canasta* is a meld of 7: *natural/clean* (no wilds, 500 bonus) or
|
|||
|
|
*mixed/dirty* (1-3 wilds, 300 bonus). Red 3s are bonus cards laid aside
|
|||
|
|
(100 each; all four = 800). Black 3s block the discard pile and can only
|
|||
|
|
be melded when going out. Minimum first-meld point count rises with your
|
|||
|
|
team's cumulative score (e.g. 50/90/120). The discard pile can be "frozen"
|
|||
|
|
and taken wholesale if you can meld its top card. Going out requires at
|
|||
|
|
least one canasta; +100 bonus (+200 concealed). Card values: jokers 50,
|
|||
|
|
2s & aces 20, K-8 10, 7-4 & black 3 5.
|
|||
|
|
|
|||
|
|
** Notes
|
|||
|
|
|
|||
|
|
The heavyweight of the meld family: wilds, frozen pile, escalating minimums,
|
|||
|
|
multi-deck. Build *Hand and Foot* first (simpler cousin) to prove the meld
|
|||
|
|
engine, then extend.
|
|||
|
|
|
|||
|
|
* Canfield
|
|||
|
|
|
|||
|
|
| name | Canfield |
|
|||
|
|
| package | ~M-x cg-canfield~ |
|
|||
|
|
| players | 1 (solitaire) |
|
|||
|
|
| LoE | M |
|
|||
|
|
| engine | tableau-solitaire |
|
|||
|
|
| links | https://en.wikipedia.org/wiki/Canfield_(solitaire) |
|
|||
|
|
| added | 2026-06-24 |
|
|||
|
|
| updated | 2026-06-24 |
|
|||
|
|
|
|||
|
|
** Rules
|
|||
|
|
|
|||
|
|
Standard 52. Deal 13 cards to a face-down *reserve* (demon) with the top
|
|||
|
|
turned up. Deal one card to the first *foundation*; its rank sets the base
|
|||
|
|
rank for all four foundations (they build up in suit, wrapping K→A). Deal
|
|||
|
|
4 cards face up as the *tableau*. Remaining cards form the stock, dealt to
|
|||
|
|
waste 3 at a time with unlimited redeals. Tableau builds down in alter-
|
|||
|
|
nating colour, wrapping A→K; groups move as units. Empty tableau columns
|
|||
|
|
are filled from the reserve (when the reserve empties, from the waste).
|
|||
|
|
Win by building all four foundations up 13 cards.
|
|||
|
|
|
|||
|
|
** Notes
|
|||
|
|
|
|||
|
|
Same engine as Klondike/FreeCell plus a *reserve* pile and a *variable
|
|||
|
|
foundation base rank*. Build Klondike first; Canfield is then mostly the
|
|||
|
|
reserve + base-rank wrinkle. Famously hard (~8% win).
|
|||
|
|
|
|||
|
|
* Casino
|
|||
|
|
|
|||
|
|
| name | Casino |
|
|||
|
|
| package | NA |
|
|||
|
|
| players | 2-4 |
|
|||
|
|
| LoE | M |
|
|||
|
|
| engine | fishing |
|
|||
|
|
| links | https://en.wikipedia.org/wiki/Cassino_(card_game) · https://www.pagat.com/fishing/casino.html |
|
|||
|
|
| added | 2026-06-24 |
|
|||
|
|
| updated | 2026-06-24 |
|
|||
|
|
|
|||
|
|
** Rules
|
|||
|
|
|
|||
|
|
Standard 52. Deal 2 to each player and 4 face up to the table (then 2 more
|
|||
|
|
to players, repeating until the deck is gone, 2 at a time). On your turn
|
|||
|
|
play one card to: *capture* table cards of equal rank (face cards by rank
|
|||
|
|
only) or sets of number cards summing to your card's value (A=1); *build* a
|
|||
|
|
combination you can later capture; or *trail* (place a card on the table).
|
|||
|
|
A capture that clears the table is a *sweep* (+1). Number cards count
|
|||
|
|
their pips for building. Scoring at deck's end: most cards 3, most spades
|
|||
|
|
1, the 10♦ ("big casino") 2, the 2♠ ("little casino") 1, each Ace 1, each
|
|||
|
|
sweep 1. Play to 21 over hands.
|
|||
|
|
|
|||
|
|
** Notes
|
|||
|
|
|
|||
|
|
Fishing engine, shared with Scopa. Builds are the tricky part (track build
|
|||
|
|
value + owner). Pair with Scopa for the capture-engine cluster.
|
|||
|
|
|
|||
|
|
* Clock (solitaire)
|
|||
|
|
|
|||
|
|
| name | Clock |
|
|||
|
|
| package | NA |
|
|||
|
|
| players | 1 (solitaire) |
|
|||
|
|
| LoE | S |
|
|||
|
|
| engine | pile-solitaire |
|
|||
|
|
| links | https://en.wikipedia.org/wiki/Clock_(card_game) |
|
|||
|
|
| added | 2026-06-24 |
|
|||
|
|
| updated | 2026-06-24 |
|
|||
|
|
|
|||
|
|
** Rules
|
|||
|
|
|
|||
|
|
Deal all 52 into 13 piles of 4 (12 in a clock-face ring + 1 in the centre
|
|||
|
|
= Kings). Turn up the centre's top card, slide it face up under the pile
|
|||
|
|
of its rank (Ace=1 … J=11, Q=12, K=centre), and turn up that pile's top
|
|||
|
|
card; continue. You win if all 13 piles are turned face up before the 4th
|
|||
|
|
King surfaces (which ends the game). Pure chance — no decisions.
|
|||
|
|
|
|||
|
|
** Notes
|
|||
|
|
|
|||
|
|
Another zero-decision auto-demo, like Beggar-My-Neighbour. Trivial state
|
|||
|
|
machine; nice for testing the renderer's "ring" layout.
|
|||
|
|
|
|||
|
|
* Concentration (Memory)
|
|||
|
|
|
|||
|
|
| name | Concentration (Memory / Pairs) |
|
|||
|
|
| package | NA |
|
|||
|
|
| players | 1+ |
|
|||
|
|
| LoE | S |
|
|||
|
|
| engine | grid-flip |
|
|||
|
|
| links | https://en.wikipedia.org/wiki/Concentration_(card_game) |
|
|||
|
|
| added | 2026-06-24 |
|
|||
|
|
| updated | 2026-06-24 |
|
|||
|
|
|
|||
|
|
** Rules
|
|||
|
|
|
|||
|
|
Shuffle 52 face down in a grid. On a turn, flip two cards; if they match
|
|||
|
|
in rank, keep them and go again; otherwise flip them back. Most pairs
|
|||
|
|
wins. Solo: minimise turns.
|
|||
|
|
|
|||
|
|
** Notes
|
|||
|
|
|
|||
|
|
Reuses the Gaps grid + cursor directly; only "face-down + reveal memory"
|
|||
|
|
is new. Good cheap win that exercises the existing board renderer.
|
|||
|
|
|
|||
|
|
* Crazy Eights
|
|||
|
|
|
|||
|
|
| name | Crazy Eights |
|
|||
|
|
| package | ~M-x cg-eights~ |
|
|||
|
|
| players | 2-5 |
|
|||
|
|
| LoE | M |
|
|||
|
|
| engine | shedding |
|
|||
|
|
| links | https://en.wikipedia.org/wiki/Crazy_Eights · https://www.pagat.com/eights/crazy8s.html |
|
|||
|
|
| added | 2026-06-24 |
|
|||
|
|
| updated | 2026-06-24 |
|
|||
|
|
|
|||
|
|
** Rules
|
|||
|
|
|
|||
|
|
Standard 52. Deal 5-7 each; flip one to start the discard pile; rest is
|
|||
|
|
stock. On your turn play a card matching the top card's *rank or suit*.
|
|||
|
|
*Eights are wild* — play any time and name the next suit. If you can't
|
|||
|
|
play, draw from stock (until playable or stock empty, per variant). First
|
|||
|
|
to shed all cards wins; score opponents' remaining cards (8=50, faces 10,
|
|||
|
|
ace 1, else pip). The ancestor of UNO.
|
|||
|
|
|
|||
|
|
** Notes
|
|||
|
|
|
|||
|
|
The canonical shedding game; AI is easy (play matching, save eights).
|
|||
|
|
Engine generalises to President-style climbing later. Very popular.
|
|||
|
|
|
|||
|
|
* Cribbage
|
|||
|
|
|
|||
|
|
| name | Cribbage |
|
|||
|
|
| package | NA |
|
|||
|
|
| players | 2 (3-4 variants) |
|
|||
|
|
| LoE | M |
|
|||
|
|
| engine | cribbage (own scorer) |
|
|||
|
|
| links | https://en.wikipedia.org/wiki/Rules_of_cribbage · https://www.pagat.com/adders/crib6.html |
|
|||
|
|
| added | 2026-06-24 |
|
|||
|
|
| updated | 2026-06-24 |
|
|||
|
|
|
|||
|
|
** Rules
|
|||
|
|
|
|||
|
|
Standard 52 + a cribbage board (121 holes). Deal 6 each (2p); each player
|
|||
|
|
discards 2 to the dealer's *crib*. Cut a *starter*; if it's a Jack, dealer
|
|||
|
|
pegs 2 ("his heels"). *The Play (pegging):* alternate laying cards, calling
|
|||
|
|
the running total (face=10, ace=1); never exceed 31. Score during play:
|
|||
|
|
total 15 = 2; 31 = 2; pair = 2, pair-royal = 6, double-pair-royal = 12;
|
|||
|
|
runs of 3+ = length; last card ("go"/last) = 1. Reset to 0 after 31 or a
|
|||
|
|
go. *The Show:* count each hand then the crib (dealer last), with the
|
|||
|
|
starter, for: every combo summing to 15 = 2; pairs = 2; runs = length;
|
|||
|
|
flush = 4 (5 with starter; crib flush needs all 5); Jack of starter's suit
|
|||
|
|
in hand ("his nobs") = 1. First to 121 wins.
|
|||
|
|
|
|||
|
|
** Notes
|
|||
|
|
|
|||
|
|
Unique scoring engine (the 15s/pairs/runs/flush counter is the whole game).
|
|||
|
|
No trump, no melds — its own cluster. The combinatorial hand-scorer is the
|
|||
|
|
fun, testable core. High wishlist value.
|
|||
|
|
|
|||
|
|
* Euchre
|
|||
|
|
|
|||
|
|
| name | Euchre |
|
|||
|
|
| package | NA |
|
|||
|
|
| players | 4 (partnership); 2-3 variants |
|
|||
|
|
| LoE | M |
|
|||
|
|
| engine | trick (trump + bowers) |
|
|||
|
|
| links | https://en.wikipedia.org/wiki/Euchre · https://www.pagat.com/euchre/euchre.html |
|
|||
|
|
| added | 2026-06-24 |
|
|||
|
|
| updated | 2026-06-24 |
|
|||
|
|
|
|||
|
|
** Rules
|
|||
|
|
|
|||
|
|
24-card deck (9-A in four suits). Deal 5 each; turn the next card up.
|
|||
|
|
Bidding: in turn, *order up* (accept the turned suit as trump, dealer takes
|
|||
|
|
the card) or pass; if all pass, a second round lets players *name* a
|
|||
|
|
different trump. *Bowers:* Jack of trump = highest (right bower); Jack of
|
|||
|
|
same colour = second highest (left bower, counts as trump). The maker's
|
|||
|
|
team must take 3+ of 5 tricks: 3-4 = 1 point, all 5 (march) = 2; *going
|
|||
|
|
alone* and taking all 5 = 4. If the makers fail (*euchred*), defenders get
|
|||
|
|
2. First to 10 points wins.
|
|||
|
|
|
|||
|
|
** Notes
|
|||
|
|
|
|||
|
|
Best second trick game after 500: small hand, the bower mechanic is the
|
|||
|
|
only real novelty over the 500/Spades trick resolver. Hugely popular in
|
|||
|
|
the US Midwest.
|
|||
|
|
|
|||
|
|
* Forty Thieves
|
|||
|
|
|
|||
|
|
| name | Forty Thieves |
|
|||
|
|
| package | ~M-x cg-forty-thieves~ |
|
|||
|
|
| players | 1 (solitaire) |
|
|||
|
|
| LoE | M |
|
|||
|
|
| engine | tableau-solitaire (2 decks) |
|
|||
|
|
| links | https://en.wikipedia.org/wiki/Forty_Thieves_(solitaire) |
|
|||
|
|
| added | 2026-06-24 |
|
|||
|
|
| updated | 2026-06-24 |
|
|||
|
|
|
|||
|
|
** Rules
|
|||
|
|
|
|||
|
|
Two decks (104). Deal 10 columns of 4 cards, all face up. Eight
|
|||
|
|
foundations build up by suit A→K. Tableau builds *down by suit*; move one
|
|||
|
|
card at a time (no group moves in the strict rules). Stock dealt one at a
|
|||
|
|
time to a single waste, no redeal. Empty columns take any card. Win by
|
|||
|
|
filling all eight foundations.
|
|||
|
|
|
|||
|
|
** Notes
|
|||
|
|
|
|||
|
|
Two-deck tableau game — proves the engine scales to 104 cards and 8
|
|||
|
|
foundations. Strict (down-by-suit, single-card) so move logic is simpler
|
|||
|
|
than Klondike, but very hard to win.
|
|||
|
|
|
|||
|
|
* FreeCell
|
|||
|
|
|
|||
|
|
| name | FreeCell |
|
|||
|
|
| package | ~M-x cg-freecell~ |
|
|||
|
|
| players | 1 (solitaire) |
|
|||
|
|
| LoE | M |
|
|||
|
|
| engine | tableau-solitaire |
|
|||
|
|
| links | https://en.wikipedia.org/wiki/FreeCell · https://www.pagat.com/patience/freecell.html |
|
|||
|
|
| added | 2026-06-24 |
|
|||
|
|
| updated | 2026-06-24 |
|
|||
|
|
|
|||
|
|
** Rules
|
|||
|
|
|
|||
|
|
Standard 52, *all dealt face up*: 8 columns (first four of 7, last four of
|
|||
|
|
6). Four *free cells* hold one card each. Four foundations build up by
|
|||
|
|
suit A→K. Tableau builds down in alternating colour. Move one card at a
|
|||
|
|
time, but a "supermove" of N cards is allowed when (free cells + 1) ×
|
|||
|
|
2^(empty columns) ≥ N. Nearly every deal is winnable.
|
|||
|
|
|
|||
|
|
** Notes
|
|||
|
|
|
|||
|
|
Same tableau/foundation engine as Klondike, minus the stock/waste, plus
|
|||
|
|
free cells and the supermove count. No hidden cards → pure skill; great
|
|||
|
|
for a deterministic, fully testable solver-friendly game. Very popular.
|
|||
|
|
|
|||
|
|
* Gin Rummy
|
|||
|
|
|
|||
|
|
| name | Gin Rummy |
|
|||
|
|
| package | NA |
|
|||
|
|
| players | 2 |
|
|||
|
|
| LoE | M |
|
|||
|
|
| engine | rummy/meld |
|
|||
|
|
| links | https://en.wikipedia.org/wiki/Gin_rummy · https://www.pagat.com/rummy/gin.html |
|
|||
|
|
| added | 2026-06-24 |
|
|||
|
|
| updated | 2026-06-24 |
|
|||
|
|
|
|||
|
|
** Rules
|
|||
|
|
|
|||
|
|
Standard 52. Deal 10 each; flip one to start the discard. Draw (stock or
|
|||
|
|
discard top) then discard. Form melds: runs (3+ same suit in sequence) and
|
|||
|
|
sets (3-4 same rank). *Knock* when unmatched ("deadwood") ≤ 10; *gin* when
|
|||
|
|
deadwood = 0 (+25 bonus). After a knock, the opponent lays off cards onto
|
|||
|
|
the knocker's melds; difference in deadwood scores; if the opponent has ≤
|
|||
|
|
the knocker (*undercut*), they score the difference + 25. Game to 100.
|
|||
|
|
|
|||
|
|
** Notes
|
|||
|
|
|
|||
|
|
The two-hand meld game. The deadwood/meld-optimiser (find the best meld
|
|||
|
|
partition to minimise deadwood) is the reusable core for the whole rummy
|
|||
|
|
family. Strong wishlist item.
|
|||
|
|
|
|||
|
|
* Go Fish
|
|||
|
|
|
|||
|
|
| name | Go Fish |
|
|||
|
|
| package | NA |
|
|||
|
|
| players | 2-6 |
|
|||
|
|
| LoE | S |
|
|||
|
|
| engine | ask/match |
|
|||
|
|
| links | https://en.wikipedia.org/wiki/Go_Fish · https://www.pagat.com/quartet/gofish.html |
|
|||
|
|
| added | 2026-06-24 |
|
|||
|
|
| updated | 2026-06-24 |
|
|||
|
|
|
|||
|
|
** Rules
|
|||
|
|
|
|||
|
|
Standard 52. Deal 5-7 each; rest is the "pool". On your turn ask a named
|
|||
|
|
player for a rank you hold; if they have any, they give all of them and you
|
|||
|
|
ask again; else "Go Fish" — draw from the pool (extra turn if you drew the
|
|||
|
|
rank asked). Complete *books* (all 4 of a rank), lay them down; most books
|
|||
|
|
when cards run out wins.
|
|||
|
|
|
|||
|
|
** Notes
|
|||
|
|
|
|||
|
|
Simple AI (track who asked for what = basic memory). Hidden-hand info game;
|
|||
|
|
the "ask a player" interaction is new but small. Good kid-friendly title.
|
|||
|
|
|
|||
|
|
* Golf (solitaire)
|
|||
|
|
|
|||
|
|
| name | Golf |
|
|||
|
|
| package | ~M-x cg-golf~ |
|
|||
|
|
| players | 1 (solitaire) |
|
|||
|
|
| LoE | S |
|
|||
|
|
| engine | pile-solitaire (waste-build) |
|
|||
|
|
| links | https://en.wikipedia.org/wiki/Golf_(patience) |
|
|||
|
|
| added | 2026-06-24 |
|
|||
|
|
| updated | 2026-06-24 |
|
|||
|
|
|
|||
|
|
** Rules
|
|||
|
|
|
|||
|
|
Standard 52. Deal 7 columns of 5 face up (35). One card to the waste; the
|
|||
|
|
rest is stock. Move an *exposed* tableau card to the waste if it is one
|
|||
|
|
rank higher or lower than the waste top (no wrap unless variant; suit
|
|||
|
|
ignored). When stuck, deal the next stock card to the waste. Clear all
|
|||
|
|
tableau cards to win; score = cards left when stock is exhausted.
|
|||
|
|
|
|||
|
|
** Notes
|
|||
|
|
|
|||
|
|
Tiny rule set, one legal-move test (±1 rank). Shares its waste-build core
|
|||
|
|
with TriPeaks. Fast, satisfying, very testable.
|
|||
|
|
|
|||
|
|
* Hand and Foot
|
|||
|
|
|
|||
|
|
| name | Hand and Foot |
|
|||
|
|
| package | NA |
|
|||
|
|
| players | 4 (partnership); 2-6 variants |
|
|||
|
|
| LoE | H |
|
|||
|
|
| engine | rummy/meld (multi-deck) |
|
|||
|
|
| links | https://en.wikipedia.org/wiki/Hand_and_Foot_(card_game) · https://www.pagat.com/rummy/handfoot.html |
|
|||
|
|
| added | 2026-06-24 |
|
|||
|
|
| updated | 2026-06-24 |
|
|||
|
|
|
|||
|
|
** Rules
|
|||
|
|
|
|||
|
|
Typically 5-6 decks incl. jokers; deal each player a *hand* (11) and a
|
|||
|
|
*foot* (11) — you play the hand first, then pick up the foot. Draw 2,
|
|||
|
|
discard 1. Meld sets of same rank (no runs). *Clean/red* canasta = 7 with
|
|||
|
|
no wilds (500); *dirty/black* = 7 with wilds (300). 2s and jokers wild;
|
|||
|
|
red 3s are bonus. Going out needs a minimum number of clean + dirty
|
|||
|
|
canastas and you must finish the foot. Per-round minimum first-meld counts
|
|||
|
|
rise each round.
|
|||
|
|
|
|||
|
|
** Notes
|
|||
|
|
|
|||
|
|
Simpler than full Canasta (sets only, no frozen-pile finesse) so it is the
|
|||
|
|
right *first* multi-deck meld build; Canasta then extends it. On the
|
|||
|
|
original wishlist (3-player Hand and Foot).
|
|||
|
|
|
|||
|
|
* Hearts
|
|||
|
|
|
|||
|
|
| name | Hearts |
|
|||
|
|
| package | ~M-x cg-hearts~ |
|
|||
|
|
| players | 3-4 (4 classic) |
|
|||
|
|
| LoE | M |
|
|||
|
|
| engine | trick (avoidance) |
|
|||
|
|
| links | https://en.wikipedia.org/wiki/Hearts_(card_game) · https://www.pagat.com/reverse/hearts.html |
|
|||
|
|
| added | 2026-06-24 |
|
|||
|
|
| updated | 2026-06-24 |
|
|||
|
|
|
|||
|
|
** Rules
|
|||
|
|
|
|||
|
|
Standard 52, 4 players, deal 13 each. Pass 3 cards (left/right/across/none
|
|||
|
|
rotating). Holder of 2♣ leads it. Follow suit if able; cannot lead hearts
|
|||
|
|
until "broken" (a heart or Q♠ discarded off-suit). No trump. Each heart =
|
|||
|
|
1 penalty, Q♠ = 13. *Shooting the moon:* take all hearts + Q♠ → 0 to self,
|
|||
|
|
26 to everyone else. Play until someone hits 100; lowest score wins.
|
|||
|
|
|
|||
|
|
** Notes
|
|||
|
|
|
|||
|
|
Same trick resolver as Spades/500 but *no trump* and *penalty* scoring
|
|||
|
|
(avoidance) + the passing phase + "hearts broken" lead rule. Very popular;
|
|||
|
|
3-handed too (drop 2♦, deal 17). Strong build target this wave.
|
|||
|
|
|
|||
|
|
* Hell's Half-Acre
|
|||
|
|
|
|||
|
|
| name | Hell's Half-Acre (Gaps variant) |
|
|||
|
|
| package | card-games (~M-x cg-hells-half-acre~) |
|
|||
|
|
| players | 1 (solitaire) |
|
|||
|
|
| LoE | S (done) |
|
|||
|
|
| engine | gaps-grid |
|
|||
|
|
| links | https://en.wikipedia.org/wiki/Gaps |
|
|||
|
|
| added | 2026-06-23 |
|
|||
|
|
| updated | 2026-06-24 |
|
|||
|
|
|
|||
|
|
** Rules
|
|||
|
|
|
|||
|
|
A Gaps/Montana variant built *downward* from Kings (anchor rank K, step
|
|||
|
|
-1). Lay out 52 in a 4×13 grid, remove the four 2s leaving gaps; fill a
|
|||
|
|
gap with the card one rank lower than its left neighbour in the same suit.
|
|||
|
|
Limited redeals. See Montana for the shared machinery.
|
|||
|
|
|
|||
|
|
** Notes
|
|||
|
|
|
|||
|
|
*Already implemented* as a subclass of ~cg-gaps-game~ (proves deriving a
|
|||
|
|
game from a shared base). Differs from Montana only by head/step.
|
|||
|
|
|
|||
|
|
* Klondike
|
|||
|
|
|
|||
|
|
| name | Klondike |
|
|||
|
|
| package | ~M-x cg-klondike~ |
|
|||
|
|
| players | 1 (solitaire) |
|
|||
|
|
| LoE | M |
|
|||
|
|
| engine | tableau-solitaire |
|
|||
|
|
| links | https://en.wikipedia.org/wiki/Klondike_(solitaire) · https://www.pagat.com/patience/klondike.html |
|
|||
|
|
| added | 2026-06-24 |
|
|||
|
|
| updated | 2026-06-24 |
|
|||
|
|
|
|||
|
|
** Rules
|
|||
|
|
|
|||
|
|
Standard 52. Seven columns of 1..7 cards, only the last of each face up.
|
|||
|
|
Four foundations build up by suit A→K. Tableau builds down in alternating
|
|||
|
|
colour; only a King (or group headed by one) moves to an empty column.
|
|||
|
|
Turn a hidden card when it becomes the column's last. Stock dealt to waste
|
|||
|
|
1 (or 3) at a time; redeals per variant. Win by sending all 52 to
|
|||
|
|
foundations. This is "Solitaire" as most people know it.
|
|||
|
|
|
|||
|
|
** Notes
|
|||
|
|
|
|||
|
|
*The* keystone solitaire — build first; FreeCell, Canfield, Yukon, Forty
|
|||
|
|
Thieves all reuse its tableau/foundation/stock-waste engine. Top priority.
|
|||
|
|
|
|||
|
|
* Knock Rummy
|
|||
|
|
|
|||
|
|
| name | Knock Rummy (Poker Rum) |
|
|||
|
|
| package | NA |
|
|||
|
|
| players | 2-5 |
|
|||
|
|
| LoE | M |
|
|||
|
|
| engine | rummy/meld |
|
|||
|
|
| links | https://en.wikipedia.org/wiki/Knock_rummy · https://www.pagat.com/rummy/knockrummy.html |
|
|||
|
|
| added | 2026-06-24 |
|
|||
|
|
| updated | 2026-06-24 |
|
|||
|
|
|
|||
|
|
** Rules
|
|||
|
|
|
|||
|
|
Like basic Rummy (draw/discard, melds of sets and runs) but a player may
|
|||
|
|
*knock* on any turn instead of melding as they go: lay down all cards
|
|||
|
|
grouped into melds + deadwood; lowest deadwood wins the difference from
|
|||
|
|
each opponent; knocking with 0 deadwood = rummy bonus.
|
|||
|
|
|
|||
|
|
** Notes
|
|||
|
|
|
|||
|
|
Essentially Gin generalised to 2-5 players; if Gin's meld-optimiser exists,
|
|||
|
|
this is an S add-on. Listed M standalone.
|
|||
|
|
|
|||
|
|
* Montana (Gaps)
|
|||
|
|
|
|||
|
|
| name | Montana (Gaps) |
|
|||
|
|
| package | card-games (~M-x cg-montana~, ~cg-gaps~) |
|
|||
|
|
| players | 1 (solitaire) |
|
|||
|
|
| LoE | S (done) |
|
|||
|
|
| engine | gaps-grid |
|
|||
|
|
| links | https://en.wikipedia.org/wiki/Gaps |
|
|||
|
|
| added | 2026-06-23 |
|
|||
|
|
| updated | 2026-06-24 |
|
|||
|
|
|
|||
|
|
** Rules
|
|||
|
|
|
|||
|
|
Lay out 52 in a 4×13 grid; remove the four Aces leaving gaps. Build each
|
|||
|
|
row upward in a single suit starting at 2 (anchor rank 2, step +1): a gap is
|
|||
|
|
filled by the card one rank higher than its left neighbour, same suit; a gap
|
|||
|
|
to the right of a King (or at row start) is dead. Reshuffle stuck cards a
|
|||
|
|
limited number of times. Win when each row is a single suit 2→K.
|
|||
|
|
|
|||
|
|
** Notes
|
|||
|
|
|
|||
|
|
*Already implemented* (~cg-gaps.el~) as the base ~cg-gaps-game~ with the
|
|||
|
|
Hell's-Half-Acre subclass. The project's first solitaire.
|
|||
|
|
|
|||
|
|
* Napoleon (Nap)
|
|||
|
|
|
|||
|
|
| name | Napoleon (Nap) |
|
|||
|
|
| package | NA |
|
|||
|
|
| players | 2-6 (best 4-5) |
|
|||
|
|
| LoE | M |
|
|||
|
|
| engine | trick (trump, bidding) |
|
|||
|
|
| links | https://en.wikipedia.org/wiki/Napoleon_(card_game) · https://www.pagat.com/napoleon/nap.html |
|
|||
|
|
| added | 2026-06-24 |
|
|||
|
|
| updated | 2026-06-24 |
|
|||
|
|
|
|||
|
|
** Rules
|
|||
|
|
|
|||
|
|
Standard 52, deal 5 each. One round of bidding: declare how many of 5
|
|||
|
|
tricks you will take (2, 3, 4, or "nap" = all 5); highest bid plays alone
|
|||
|
|
vs the rest, the bid suit's first led card... actually trump = the suit the
|
|||
|
|
declarer leads to the first trick. Make your bid to score; fail and you
|
|||
|
|
are set. Simple, fast gambling-style trick game.
|
|||
|
|
|
|||
|
|
** Notes
|
|||
|
|
|
|||
|
|
A compact solo-vs-field trick game; reuses the trick resolver with a tiny
|
|||
|
|
bidding layer. Good "lightweight Euchre".
|
|||
|
|
|
|||
|
|
* Oh Hell
|
|||
|
|
|
|||
|
|
| name | Oh Hell (Oh Pshaw / Blackout) |
|
|||
|
|
| package | ~M-x cg-ohhell~ |
|
|||
|
|
| players | 3-7 |
|
|||
|
|
| LoE | M |
|
|||
|
|
| engine | trick (exact-bid) |
|
|||
|
|
| links | https://en.wikipedia.org/wiki/Oh_Hell · https://www.pagat.com/exact/ohhell.html |
|
|||
|
|
| added | 2026-06-24 |
|
|||
|
|
| updated | 2026-06-24 |
|
|||
|
|
|
|||
|
|
** Rules
|
|||
|
|
|
|||
|
|
Standard 52. Hand size changes each round (1,2,3,… up and/or back down).
|
|||
|
|
Deal that many; turn the next card for trump (none in the max round). Each
|
|||
|
|
player bids exactly how many tricks they will take; the *hook* rule forbids
|
|||
|
|
the dealer from making total bids equal the number of tricks. Follow suit;
|
|||
|
|
trump wins. Score: making your bid exactly = 10 + bid (common variant);
|
|||
|
|
missing = 0 (or minus the miss). Most points after all rounds wins.
|
|||
|
|
|
|||
|
|
** Notes
|
|||
|
|
|
|||
|
|
Exact-bid scoring is the twist on the trick engine; variable hand size needs
|
|||
|
|
a round driver. Excellent with AI; scales 3-7 players.
|
|||
|
|
|
|||
|
|
* Old Maid
|
|||
|
|
|
|||
|
|
| name | Old Maid |
|
|||
|
|
| package | NA |
|
|||
|
|
| players | 2-8 |
|
|||
|
|
| LoE | S |
|
|||
|
|
| engine | pair-discard |
|
|||
|
|
| links | https://en.wikipedia.org/wiki/Old_Maid · https://www.pagat.com/quartet/oldmaid.html |
|
|||
|
|
| added | 2026-06-24 |
|
|||
|
|
| updated | 2026-06-24 |
|
|||
|
|
|
|||
|
|
** Rules
|
|||
|
|
|
|||
|
|
Remove one Queen (leaving 51; three Queens form the "old maid"). Deal all
|
|||
|
|
out (uneven OK). Everyone discards pairs from hand. In turn, draw one
|
|||
|
|
(unseen) from the player on your left and discard any new pair. Play until
|
|||
|
|
all pairs are down; whoever holds the odd Queen loses.
|
|||
|
|
|
|||
|
|
** Notes
|
|||
|
|
|
|||
|
|
On the original wishlist. Pure mechanism, easy AI; the only state is hands
|
|||
|
|
+ "draw from neighbour". Quick, kid-friendly.
|
|||
|
|
|
|||
|
|
* Pinochle
|
|||
|
|
|
|||
|
|
| name | Pinochle (single deck) |
|
|||
|
|
| package | NA |
|
|||
|
|
| players | 2 (4 partnership) |
|
|||
|
|
| LoE | H |
|
|||
|
|
| engine | trick + meld |
|
|||
|
|
| links | https://en.wikipedia.org/wiki/Pinochle · https://www.pagat.com/marriage/pinmain.html |
|
|||
|
|
| added | 2026-06-24 |
|
|||
|
|
| updated | 2026-06-24 |
|
|||
|
|
|
|||
|
|
** Rules
|
|||
|
|
|
|||
|
|
48-card pinochle deck (two each of 9,J,Q,K,10,A in four suits; ranking
|
|||
|
|
A,10,K,Q,J,9). Phases: *bid*, *meld*, *trick*. Deal 12 each (2p). Bidding
|
|||
|
|
sets trump and a target. *Meld* (declared, scored before play): run A-10-K-
|
|||
|
|
Q-J of trump 150; royal marriage (K-Q trump) 40, common marriage 20;
|
|||
|
|
pinochle (Q♠+J♦) 40, double 300; dix (9 of trump) 10; sets like four aces
|
|||
|
|
100, etc. *Trick play:* must follow suit *and* head the trick if able
|
|||
|
|
(win if you can); trump if void. Counters: each Ace/Ten/King = ... (A 11,
|
|||
|
|
10 10, K 4, Q 3, J 2 in common scoring; or the 4/3/2 simplified) plus 1 for
|
|||
|
|
last trick. Add meld + trick points; reaching the target scores, else set.
|
|||
|
|
|
|||
|
|
** Notes
|
|||
|
|
|
|||
|
|
The hard trick game: requires both a meld scorer *and* the strict
|
|||
|
|
"must-win-if-able" trick rule + the special 48-card deck. Defer until the
|
|||
|
|
trick engine and a meld scorer (from rummy) both exist.
|
|||
|
|
|
|||
|
|
* Pitch (Setback)
|
|||
|
|
|
|||
|
|
| name | Pitch (Auction Pitch / Setback) |
|
|||
|
|
| package | NA |
|
|||
|
|
| players | 2-7 (best 4 partnership) |
|
|||
|
|
| LoE | M |
|
|||
|
|
| engine | trick (point-trump) |
|
|||
|
|
| links | https://en.wikipedia.org/wiki/Pitch_(card_game) · https://www.pagat.com/allfours/pitch.html |
|
|||
|
|
| added | 2026-06-24 |
|
|||
|
|
| updated | 2026-06-24 |
|
|||
|
|
|
|||
|
|
** Rules
|
|||
|
|
|
|||
|
|
Standard 52, deal 6 each (in 3+3). Bid 1-4 (or pass); high bidder is the
|
|||
|
|
*pitcher* and leads — the suit led to the first trick becomes trump.
|
|||
|
|
Follow suit or trump (you may always trump; off-trump you must follow).
|
|||
|
|
Four points available: *High* (highest trump in play), *Low* (lowest trump
|
|||
|
|
in play, to whoever takes it), *Jack* (of trump, if in play, to its taker),
|
|||
|
|
*Game* (most card-points by value A=4,K=3,Q=2,J=1,10=10). Pitcher must
|
|||
|
|
make the bid or be *set back* (subtract the bid). First to 7 (or 11) wins.
|
|||
|
|
|
|||
|
|
** Notes
|
|||
|
|
|
|||
|
|
"Led suit becomes trump" + the High/Low/Jack/Game point tally are the new
|
|||
|
|
bits over the trick engine. Classic Americana; partnership variant fits the
|
|||
|
|
4-seat scaffold.
|
|||
|
|
|
|||
|
|
* President
|
|||
|
|
|
|||
|
|
| name | President (Scum) |
|
|||
|
|
| package | ~M-x cg-president~ |
|
|||
|
|
| players | 3-8 (best 4-6) |
|
|||
|
|
| LoE | M |
|
|||
|
|
| engine | climbing/shedding |
|
|||
|
|
| links | https://en.wikipedia.org/wiki/President_(card_game) · https://www.pagat.com/climbing/president.html |
|
|||
|
|
| added | 2026-06-24 |
|
|||
|
|
| updated | 2026-06-24 |
|
|||
|
|
|
|||
|
|
** Rules
|
|||
|
|
|
|||
|
|
Standard 52. Deal all out. Rank high→low: 2,A,K,Q,J,10,…,3. Leader plays
|
|||
|
|
1-4 of a kind; each player in turn must play the *same count* of a strictly
|
|||
|
|
higher rank or pass; once all but one pass (or someone matches a "complete"
|
|||
|
|
set per variant), the pile clears and the last player leads. First out =
|
|||
|
|
President, last = Scum. Next deal, Scum gives the President their two best
|
|||
|
|
cards and gets two free choices back (Vice ranks trade one).
|
|||
|
|
|
|||
|
|
** Notes
|
|||
|
|
|
|||
|
|
The climbing-game archetype (extends the Crazy-Eights shedding core with a
|
|||
|
|
"must beat the last play" comparator + role/exchange meta). Lively with
|
|||
|
|
AI; build Crazy Eights first.
|
|||
|
|
|
|||
|
|
* Pyramid
|
|||
|
|
|
|||
|
|
| name | Pyramid |
|
|||
|
|
| package | ~M-x cg-pyramid~ |
|
|||
|
|
| players | 1 (solitaire) |
|
|||
|
|
| LoE | M |
|
|||
|
|
| engine | pile-solitaire (sum-13) |
|
|||
|
|
| links | https://en.wikipedia.org/wiki/Pyramid_(solitaire) |
|
|||
|
|
| added | 2026-06-24 |
|
|||
|
|
| updated | 2026-06-24 |
|
|||
|
|
|
|||
|
|
** Rules
|
|||
|
|
|
|||
|
|
Standard 52. Deal 28 in a 7-row triangle (each card half-covered by two
|
|||
|
|
below). Remove pairs of *exposed* cards summing to 13 (A=1, J=11, Q=12, K=
|
|||
|
|
13 removed alone). Deal stock to waste; pair waste/exposed cards. Redeals
|
|||
|
|
per variant. Clear the pyramid to win.
|
|||
|
|
|
|||
|
|
** Notes
|
|||
|
|
|
|||
|
|
The "sum to N" matcher (cf. Gaps' rank logic) over a triangular exposure
|
|||
|
|
graph. Distinct exposure model from Klondike; share the "sum-13" rule with
|
|||
|
|
nothing else, but the renderer's triangle is reusable for TriPeaks.
|
|||
|
|
|
|||
|
|
* Rummy (Basic / 500 Rum)
|
|||
|
|
|
|||
|
|
| name | Rummy (Basic / 500 Rum) |
|
|||
|
|
| package | NA |
|
|||
|
|
| players | 2-6 |
|
|||
|
|
| LoE | M |
|
|||
|
|
| engine | rummy/meld |
|
|||
|
|
| links | https://en.wikipedia.org/wiki/Rummy · https://www.pagat.com/rummy/500rum.html |
|
|||
|
|
| added | 2026-06-24 |
|
|||
|
|
| updated | 2026-06-24 |
|
|||
|
|
|
|||
|
|
** Rules
|
|||
|
|
|
|||
|
|
Standard 52. Deal 7 (2p) / 10 etc. Draw (stock or discard) then discard.
|
|||
|
|
Meld runs (3+ same-suit sequence) and sets (3-4 same rank) to the table;
|
|||
|
|
*lay off* onto existing melds. Basic: first to shed all wins, score
|
|||
|
|
opponents' cards. *500 Rum:* melds score their card values (A=15 or 1, face
|
|||
|
|
10, pip face value); you may take *any* card from the discard pile if you
|
|||
|
|
immediately meld it (and everything above it joins your hand); play to 500.
|
|||
|
|
|
|||
|
|
** Notes
|
|||
|
|
|
|||
|
|
On the original wishlist (rummy 500). Shares the meld model with Gin; 500
|
|||
|
|
Rum adds melds-score-points + deep-discard-take. Core rummy build.
|
|||
|
|
|
|||
|
|
* Scopa
|
|||
|
|
|
|||
|
|
| name | Scopa |
|
|||
|
|
| package | NA |
|
|||
|
|
| players | 2, 4 (partnership) |
|
|||
|
|
| LoE | M |
|
|||
|
|
| engine | fishing |
|
|||
|
|
| links | https://en.wikipedia.org/wiki/Scopa · https://www.pagat.com/fishing/scopa.html |
|
|||
|
|
| added | 2026-06-24 |
|
|||
|
|
| updated | 2026-06-24 |
|
|||
|
|
|
|||
|
|
** Rules
|
|||
|
|
|
|||
|
|
40-card deck (strip 8/9/10 from French deck; ranks A=1..7,J=8,Horse/Q=9,
|
|||
|
|
K=10 for capture). Deal 3 each, 4 to the table. Play a card to *capture*
|
|||
|
|
a table card of equal value, or a set summing to it; if both a single and a
|
|||
|
|
combo are possible, the single is forced. Capturing all table cards = a
|
|||
|
|
*scopa* (+1). Refill hands 3 at a time from stock. End scoring: most cards
|
|||
|
|
1, most coins/diamonds 1, the *settebello* (7♦) 1, best *primiera* 1
|
|||
|
|
(per-suit best card: 7=21,6=18,A=16,5=15,4=14,3=13,2=12,face=10), plus each
|
|||
|
|
scopa. Play to 11.
|
|||
|
|
|
|||
|
|
** Notes
|
|||
|
|
|
|||
|
|
Fishing engine shared with Casino; primiera scoring is the fiddly part.
|
|||
|
|
Pairs with Briscola for an Italian set. Uses a 40-card deck — the engine
|
|||
|
|
already abstracts the deck.
|
|||
|
|
|
|||
|
|
* Scorpion
|
|||
|
|
|
|||
|
|
| name | Scorpion |
|
|||
|
|
| package | ~M-x cg-scorpion~ |
|
|||
|
|
| players | 1 (solitaire) |
|
|||
|
|
| LoE | M |
|
|||
|
|
| engine | tableau-solitaire |
|
|||
|
|
| links | https://en.wikipedia.org/wiki/Scorpion_(solitaire) |
|
|||
|
|
| added | 2026-06-24 |
|
|||
|
|
| updated | 2026-06-24 |
|
|||
|
|
|
|||
|
|
** Rules
|
|||
|
|
|
|||
|
|
Standard 52. Seven columns of 7 (top three rows of the first four columns
|
|||
|
|
face down). Build *down by suit*; unlike Spider you may move a card *with
|
|||
|
|
everything on top of it* regardless of order. Stock of 3 cards dealt to
|
|||
|
|
the column bottoms when stuck. Goal: four K→A suit sequences.
|
|||
|
|
|
|||
|
|
** Notes
|
|||
|
|
|
|||
|
|
A "move the buried pile" twist on the tableau engine, kin to Spider but
|
|||
|
|
single-deck. Good once Spider exists.
|
|||
|
|
|
|||
|
|
* Snap
|
|||
|
|
|
|||
|
|
| name | Snap |
|
|||
|
|
| package | NA |
|
|||
|
|
| players | 2-4 |
|
|||
|
|
| LoE | S |
|
|||
|
|
| engine | reflex/match |
|
|||
|
|
| links | https://en.wikipedia.org/wiki/Snap_(card_game) |
|
|||
|
|
| added | 2026-06-24 |
|
|||
|
|
| updated | 2026-06-24 |
|
|||
|
|
|
|||
|
|
** Rules
|
|||
|
|
|
|||
|
|
Deal all out face down. Players in turn flip their top card to a personal
|
|||
|
|
face-up pile. When two face-up tops show the same rank, the first to call
|
|||
|
|
"Snap!" takes both piles. Collect all cards to win.
|
|||
|
|
|
|||
|
|
** Notes
|
|||
|
|
|
|||
|
|
Reflex game — needs a *timed* input (press key fastest). AI "reaction
|
|||
|
|
time" is a tunable delay. Tests the engine's real-time input path; small.
|
|||
|
|
|
|||
|
|
* Spades
|
|||
|
|
|
|||
|
|
| name | Spades |
|
|||
|
|
| package | ~M-x cg-spades~ |
|
|||
|
|
| players | 4 (partnership) |
|
|||
|
|
| LoE | M |
|
|||
|
|
| engine | trick (trump, bid, partnership) |
|
|||
|
|
| links | https://en.wikipedia.org/wiki/Spades · https://www.pagat.com/auctionwhist/spades.html |
|
|||
|
|
| added | 2026-06-24 |
|
|||
|
|
| updated | 2026-06-24 |
|
|||
|
|
|
|||
|
|
** Rules
|
|||
|
|
|
|||
|
|
Standard 52, 4 players in 2 partnerships, deal 13 each. Spades are *always
|
|||
|
|
trump*. Each player bids the tricks they expect (0 = *nil*, with bonus/
|
|||
|
|
penalty). Follow suit; cannot lead spades until "broken" (a spade played
|
|||
|
|
off-suit) unless only spades remain. Score: making the team's combined bid
|
|||
|
|
= 10 × bid + 1 per overtrick ("bag"); 10 bags = -100; missing the bid = -10
|
|||
|
|
× bid; nil made = +100 (failed -100). First to 500 wins.
|
|||
|
|
|
|||
|
|
** Notes
|
|||
|
|
|
|||
|
|
*Closest game to the already-built 500*: bidding + partnership + tricks +
|
|||
|
|
spades-always-trump (simpler than 500's complex trump/joker). The cg-bid
|
|||
|
|
trick/partnership machinery is the most directly reusable here. Top
|
|||
|
|
trick-game target this wave. On the original wishlist (four-player spades).
|
|||
|
|
|
|||
|
|
* Spider
|
|||
|
|
|
|||
|
|
| name | Spider |
|
|||
|
|
| package | ~M-x cg-spider~ |
|
|||
|
|
| players | 1 (solitaire) |
|
|||
|
|
| LoE | M |
|
|||
|
|
| engine | tableau-solitaire (2 decks) |
|
|||
|
|
| links | https://en.wikipedia.org/wiki/Spider_(solitaire) · https://www.pagat.com/patience/spider.html |
|
|||
|
|
| added | 2026-06-24 |
|
|||
|
|
| updated | 2026-06-24 |
|
|||
|
|
|
|||
|
|
** Rules
|
|||
|
|
|
|||
|
|
Two decks (104). Ten columns (four of 6, six of 5; only the bottom card
|
|||
|
|
of each face up). Build *down regardless of suit*, but you may only move a
|
|||
|
|
*run of the same suit* as a unit. Complete a K→A same-suit run and it is
|
|||
|
|
removed. Stock deals one card to every column at once (no empty columns
|
|||
|
|
allowed when dealing). 1/2/4-suit difficulty variants. Win by removing
|
|||
|
|
all eight suit-runs.
|
|||
|
|
|
|||
|
|
** Notes
|
|||
|
|
|
|||
|
|
On the wishlist. Two-deck tableau; the "same-suit run moves/clears" rule is
|
|||
|
|
the novelty. Difficulty knob (suits) is a nice defcustom. Build after
|
|||
|
|
Klondike; shares the column/foundation-removal engine.
|
|||
|
|
|
|||
|
|
* Spit (Speed)
|
|||
|
|
|
|||
|
|
| name | Spit (Speed) |
|
|||
|
|
| package | NA |
|
|||
|
|
| players | 2 |
|
|||
|
|
| LoE | M |
|
|||
|
|
| engine | real-time tableau |
|
|||
|
|
| links | https://en.wikipedia.org/wiki/Spit_(card_game) |
|
|||
|
|
| added | 2026-06-24 |
|
|||
|
|
| updated | 2026-06-24 |
|
|||
|
|
|
|||
|
|
** Rules
|
|||
|
|
|
|||
|
|
Split the deck between two players. Each lays a personal tableau (5
|
|||
|
|
stockpiles) and keeps a "spit" pile. On "spit", both flip a centre card
|
|||
|
|
simultaneously; players *race* (no turns) to play tableau cards onto either
|
|||
|
|
centre pile, building up or down by one (wrapping). When both stuck, spit
|
|||
|
|
again. First to empty their cards wins the round; loser takes the smaller
|
|||
|
|
centre pile.
|
|||
|
|
|
|||
|
|
** Notes
|
|||
|
|
|
|||
|
|
Real-time, two-pile build ±1 with wrap. Needs the timed-input loop (like
|
|||
|
|
Snap) plus a reactive AI. Hardest of the "fast" games to make feel fair vs
|
|||
|
|
AI; M.
|
|||
|
|
|
|||
|
|
* Spite and Malice
|
|||
|
|
|
|||
|
|
| name | Spite and Malice (Cat and Mouse) |
|
|||
|
|
| package | NA |
|
|||
|
|
| players | 2 (3+ variants) |
|
|||
|
|
| LoE | M |
|
|||
|
|
| engine | stock-race / shedding |
|
|||
|
|
| links | https://en.wikipedia.org/wiki/Spite_and_Malice · https://www.pagat.com/eights/spite.html |
|
|||
|
|
| added | 2026-06-24 |
|
|||
|
|
| updated | 2026-06-24 |
|
|||
|
|
|
|||
|
|
** Rules
|
|||
|
|
|
|||
|
|
Two decks + jokers. Each player has a face-down *pay-off* (goal) pile;
|
|||
|
|
race to empty it. Shared centre *build* piles go up A→Q (Kings wild);
|
|||
|
|
complete a pile (Q) and it is recycled. On your turn play from hand,
|
|||
|
|
pay-off top, or four personal discard piles onto the centre; you must start
|
|||
|
|
each centre pile with an Ace. End your turn by discarding to one of your
|
|||
|
|
four discard piles. First to exhaust the pay-off pile wins.
|
|||
|
|
|
|||
|
|
** Notes
|
|||
|
|
|
|||
|
|
Solitaire-flavoured competitive build game; reuses foundation "build up"
|
|||
|
|
logic with wild Kings. Good 2-player title that isn't a trick or rummy
|
|||
|
|
game.
|
|||
|
|
|
|||
|
|
* TriPeaks
|
|||
|
|
|
|||
|
|
| name | TriPeaks |
|
|||
|
|
| package | ~M-x cg-tripeaks~ |
|
|||
|
|
| players | 1 (solitaire) |
|
|||
|
|
| LoE | S |
|
|||
|
|
| engine | pile-solitaire (waste-build) |
|
|||
|
|
| links | https://en.wikipedia.org/wiki/Tri_Peaks_(card_game) |
|
|||
|
|
| added | 2026-06-24 |
|
|||
|
|
| updated | 2026-06-24 |
|
|||
|
|
|
|||
|
|
** Rules
|
|||
|
|
|
|||
|
|
Standard 52. Deal 18 cards as three overlapping peaks over a row of 10
|
|||
|
|
(28 on the board), rest is stock. Move an *exposed* board card to the waste
|
|||
|
|
if it is ±1 rank from the waste top (wrap A-K-A); chain as far as you can.
|
|||
|
|
Deal from stock when stuck. Clear the board to win; longer chains score
|
|||
|
|
more.
|
|||
|
|
|
|||
|
|
** Notes
|
|||
|
|
|
|||
|
|
Same ±1 waste-build as Golf, on a peaks layout (renderer shares Pyramid's
|
|||
|
|
triangle). Combine Golf + TriPeaks behind one engine.
|
|||
|
|
|
|||
|
|
* War
|
|||
|
|
|
|||
|
|
| name | War |
|
|||
|
|
| package | NA |
|
|||
|
|
| players | 2 |
|
|||
|
|
| LoE | S |
|
|||
|
|
| engine | auto/compare |
|
|||
|
|
| links | https://en.wikipedia.org/wiki/War_(card_game) |
|
|||
|
|
| added | 2026-06-24 |
|
|||
|
|
| updated | 2026-06-24 |
|
|||
|
|
|
|||
|
|
** Rules
|
|||
|
|
|
|||
|
|
Split the deck in two face-down stacks. Both flip the top card; higher
|
|||
|
|
rank takes both. Tie = "war": each lays 3 face down + 1 up; higher up-card
|
|||
|
|
takes all (recurse on further ties). Collect all 52 to win.
|
|||
|
|
|
|||
|
|
** Notes
|
|||
|
|
|
|||
|
|
Zero-decision auto-demo (like Beggar/Clock). Trivial; nice for animation
|
|||
|
|
and as the very first "two-player" engine smoke test.
|
|||
|
|
|
|||
|
|
* Whist
|
|||
|
|
|
|||
|
|
| name | Whist |
|
|||
|
|
| package | ~M-x cg-whist~ |
|
|||
|
|
| players | 4 (partnership) |
|
|||
|
|
| LoE | M |
|
|||
|
|
| engine | trick (trump, no bid) |
|
|||
|
|
| links | https://en.wikipedia.org/wiki/Whist · https://www.pagat.com/whist/whist.html |
|
|||
|
|
| added | 2026-06-24 |
|
|||
|
|
| updated | 2026-06-24 |
|
|||
|
|
|
|||
|
|
** Rules
|
|||
|
|
|
|||
|
|
Standard 52, 4 players in 2 partnerships, deal 13 each; turn the dealer's
|
|||
|
|
last card up for trump (it joins their hand). No bidding. Follow suit;
|
|||
|
|
trump wins; highest of led suit otherwise. Score 1 point per trick over 6
|
|||
|
|
("the book"); honours variants optional. Game to 5 (short) or 9 (long).
|
|||
|
|
|
|||
|
|
** Notes
|
|||
|
|
|
|||
|
|
The purest trick game — the trick engine with *no bidding* and a fixed
|
|||
|
|
trump. Easiest trick-game build; a good first proof of the shared trick
|
|||
|
|
resolver before Spades/Hearts add their twists.
|
|||
|
|
|
|||
|
|
* Yukon
|
|||
|
|
|
|||
|
|
| name | Yukon |
|
|||
|
|
| package | ~M-x cg-yukon~ |
|
|||
|
|
| players | 1 (solitaire) |
|
|||
|
|
| LoE | S |
|
|||
|
|
| engine | tableau-solitaire |
|
|||
|
|
| links | https://en.wikipedia.org/wiki/Yukon_(solitaire) |
|
|||
|
|
| added | 2026-06-24 |
|
|||
|
|
| updated | 2026-06-24 |
|
|||
|
|
|
|||
|
|
** Rules
|
|||
|
|
|
|||
|
|
Standard 52. Like Klondike's seven columns, but *all* remaining cards are
|
|||
|
|
dealt face up onto the columns (no stock/waste). Build foundations up by
|
|||
|
|
suit A→K. Tableau builds down in alternating colour, but you may move *any*
|
|||
|
|
face-up card together with every card on top of it (the group need not be
|
|||
|
|
ordered). Empty columns take Kings (+ their pile).
|
|||
|
|
|
|||
|
|
** Notes
|
|||
|
|
|
|||
|
|
Klondike layout with "grab-any-buried-group" moves and no stock — an *S*
|
|||
|
|
add-on once the Klondike tableau engine exists.
|
|||
|
|
|
|||
|
|
* 500 (Bid)
|
|||
|
|
|
|||
|
|
| name | 500 (Bid) |
|
|||
|
|
| package | card-games (~M-x cg-bid~) |
|
|||
|
|
| players | 4 (partnership); + live multiplayer |
|
|||
|
|
| LoE | H (done) |
|
|||
|
|
| engine | trick (trump+joker, bid, kitty) |
|
|||
|
|
| links | https://en.wikipedia.org/wiki/500_(card_game) · https://www.pagat.com/euchre/500.html |
|
|||
|
|
| added | 2026-06-23 |
|
|||
|
|
| updated | 2026-06-24 |
|
|||
|
|
|
|||
|
|
** Rules
|
|||
|
|
|
|||
|
|
Implemented: 43/45-card variant, 5-card kitty, Avondale bidding (suits +
|
|||
|
|
NT + misère/open misère), joker > right/left bower trump order, 10 tricks,
|
|||
|
|
front-door win at 500 on a made contract, back-door loss at -500. Networked
|
|||
|
|
host-authoritative live play (~M-x cg-bid-host~ / ~cg-bid-join~).
|
|||
|
|
|
|||
|
|
** Notes
|
|||
|
|
|
|||
|
|
*Already implemented* (~cg-bid.el~, ~cg-bid-ui.el~, ~cg-bid-net.el~) with
|
|||
|
|
smart AI and SVG table UI. The reference trick implementation that Spades/
|
|||
|
|
Hearts/Euchre/Whist will factor a shared engine out of.
|
|||
|
|
|
|||
|
|
* Shared engines / clusters (build-planning view)
|
|||
|
|
|
|||
|
|
Games group by the engine they want, which drives the build order:
|
|||
|
|
|
|||
|
|
- *gaps-grid* (DONE) :: Montana, Hell's Half-Acre. Reusable for
|
|||
|
|
Concentration (face-down grid).
|
|||
|
|
- *tableau-solitaire* :: Klondike → FreeCell, Canfield, Yukon, Forty
|
|||
|
|
Thieves, Scorpion, Spider (2-deck). One stock/waste/foundation/column
|
|||
|
|
engine; biggest single payoff (≥7 games, all solo, no user input).
|
|||
|
|
- *pile-solitaire* :: Golf, TriPeaks (shared ±1 waste-build), Pyramid
|
|||
|
|
(sum-13), Clock (auto).
|
|||
|
|
- *trick* :: 500 (DONE, reference) → Whist (no bid) → Spades, Hearts (bid/
|
|||
|
|
penalty + partnership) → Euchre, Oh Hell, Pitch, Napoleon, Briscola →
|
|||
|
|
Pinochle (adds meld). Factor a ~cg-trick~ base from cg-bid.
|
|||
|
|
- *shedding/climbing* :: Crazy Eights → President.
|
|||
|
|
- *rummy/meld* :: Gin → Rummy/500 Rum, Knock Rummy → Hand and Foot →
|
|||
|
|
Canasta. One meld-finder/scorer reused throughout.
|
|||
|
|
- *fishing* :: Scopa, Casino (shared capture-by-value engine).
|
|||
|
|
- *auto (zero-decision)* :: War, Beggar-My-Neighbour, Clock, Snap (Snap
|
|||
|
|
adds timed input).
|
|||
|
|
- *own scorer* :: Cribbage (15s/pairs/runs/flush counter).
|
|||
|
|
- *stock-race* :: Spite and Malice.
|
|||
|
|
|
|||
|
|
** Build priorities (no user input needed · unlocks others · popular)
|
|||
|
|
|
|||
|
|
1. *tableau-solitaire engine + Klondike, FreeCell, Spider* — solo, no
|
|||
|
|
input, hugely popular, unlocks Canfield/Yukon/Forty Thieves/Scorpion.
|
|||
|
|
2. *trick engine + Spades and Hearts* — most popular trick games, reuse the
|
|||
|
|
500 machinery, unlock Euchre/Whist/Oh Hell/Pitch.
|
|||
|
|
3. *Crazy Eights* — popular, self-contained, unlocks President.
|
|||
|
|
4. *pile-solitaire + Golf/TriPeaks*; *Cribbage*; then the rummy and fishing
|
|||
|
|
clusters.
|
|||
|
|
|