@journey-to-code/games 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/dist/backgammon.d.ts +146 -0
- package/dist/backgammon.js +1221 -0
- package/dist/backgammon.js.map +1 -0
- package/dist/blackjack.d.ts +66 -0
- package/dist/blackjack.js +452 -0
- package/dist/blackjack.js.map +1 -0
- package/dist/bluff.d.ts +60 -0
- package/dist/bluff.js +239 -0
- package/dist/bluff.js.map +1 -0
- package/dist/board.d.ts +387 -0
- package/dist/board.js +105 -0
- package/dist/board.js.map +1 -0
- package/dist/bridge.d.ts +86 -0
- package/dist/bridge.js +494 -0
- package/dist/bridge.js.map +1 -0
- package/dist/canasta.d.ts +88 -0
- package/dist/canasta.js +646 -0
- package/dist/canasta.js.map +1 -0
- package/dist/checkers.d.ts +108 -0
- package/dist/checkers.js +756 -0
- package/dist/checkers.js.map +1 -0
- package/dist/chess.d.ts +162 -0
- package/dist/chess.js +904 -0
- package/dist/chess.js.map +1 -0
- package/dist/chesscore.d.ts +136 -0
- package/dist/chesscore.js +1121 -0
- package/dist/chesscore.js.map +1 -0
- package/dist/combat.d.ts +102 -0
- package/dist/combat.js +772 -0
- package/dist/combat.js.map +1 -0
- package/dist/contractrummy.d.ts +77 -0
- package/dist/contractrummy.js +430 -0
- package/dist/contractrummy.js.map +1 -0
- package/dist/crazy8.d.ts +65 -0
- package/dist/crazy8.js +366 -0
- package/dist/crazy8.js.map +1 -0
- package/dist/cribbage.d.ts +75 -0
- package/dist/cribbage.js +428 -0
- package/dist/cribbage.js.map +1 -0
- package/dist/cuckoo.d.ts +43 -0
- package/dist/cuckoo.js +216 -0
- package/dist/cuckoo.js.map +1 -0
- package/dist/drinkingpyramid.d.ts +54 -0
- package/dist/drinkingpyramid.js +213 -0
- package/dist/drinkingpyramid.js.map +1 -0
- package/dist/drinks.d.ts +25 -0
- package/dist/drinks.js +40 -0
- package/dist/drinks.js.map +1 -0
- package/dist/dropfour.d.ts +103 -0
- package/dist/dropfour.js +577 -0
- package/dist/dropfour.js.map +1 -0
- package/dist/durak.d.ts +58 -0
- package/dist/durak.js +332 -0
- package/dist/durak.js.map +1 -0
- package/dist/euchre.d.ts +80 -0
- package/dist/euchre.js +453 -0
- package/dist/euchre.js.map +1 -0
- package/dist/fivedraw.d.ts +50 -0
- package/dist/fivedraw.js +289 -0
- package/dist/fivedraw.js.map +1 -0
- package/dist/fivehundred.d.ts +90 -0
- package/dist/fivehundred.js +504 -0
- package/dist/fivehundred.js.map +1 -0
- package/dist/freecell.d.ts +50 -0
- package/dist/freecell.js +327 -0
- package/dist/freecell.js.map +1 -0
- package/dist/fruitsalad.d.ts +69 -0
- package/dist/fruitsalad.js +427 -0
- package/dist/fruitsalad.js.map +1 -0
- package/dist/gin.d.ts +72 -0
- package/dist/gin.js +393 -0
- package/dist/gin.js.map +1 -0
- package/dist/go.d.ts +132 -0
- package/dist/go.js +659 -0
- package/dist/go.js.map +1 -0
- package/dist/goboard.d.ts +218 -0
- package/dist/goboard.js +880 -0
- package/dist/goboard.js.map +1 -0
- package/dist/gofish.d.ts +37 -0
- package/dist/gofish.js +235 -0
- package/dist/gofish.js.map +1 -0
- package/dist/golf.d.ts +64 -0
- package/dist/golf.js +343 -0
- package/dist/golf.js.map +1 -0
- package/dist/handfoot.d.ts +86 -0
- package/dist/handfoot.js +515 -0
- package/dist/handfoot.js.map +1 -0
- package/dist/hearts.d.ts +65 -0
- package/dist/hearts.js +390 -0
- package/dist/hearts.js.map +1 -0
- package/dist/holdem.d.ts +45 -0
- package/dist/holdem.js +286 -0
- package/dist/holdem.js.map +1 -0
- package/dist/horserace.d.ts +49 -0
- package/dist/horserace.js +207 -0
- package/dist/horserace.js.map +1 -0
- package/dist/index.d.ts +65 -0
- package/dist/index.js +66 -0
- package/dist/index.js.map +1 -0
- package/dist/kingscorner.d.ts +59 -0
- package/dist/kingscorner.js +374 -0
- package/dist/kingscorner.js.map +1 -0
- package/dist/kingscup.d.ts +44 -0
- package/dist/kingscup.js +185 -0
- package/dist/kingscup.js.map +1 -0
- package/dist/kit.d.ts +283 -0
- package/dist/kit.js +73 -0
- package/dist/kit.js.map +1 -0
- package/dist/klondike.d.ts +57 -0
- package/dist/klondike.js +314 -0
- package/dist/klondike.js.map +1 -0
- package/dist/liarspoker.d.ts +61 -0
- package/dist/liarspoker.js +298 -0
- package/dist/liarspoker.js.map +1 -0
- package/dist/memory.d.ts +36 -0
- package/dist/memory.js +181 -0
- package/dist/memory.js.map +1 -0
- package/dist/minigolf.d.ts +104 -0
- package/dist/minigolf.js +724 -0
- package/dist/minigolf.js.map +1 -0
- package/dist/minigolfcourse.d.ts +127 -0
- package/dist/minigolfcourse.js +470 -0
- package/dist/minigolfcourse.js.map +1 -0
- package/dist/offers.d.ts +136 -0
- package/dist/offers.js +279 -0
- package/dist/offers.js.map +1 -0
- package/dist/ohhell.d.ts +66 -0
- package/dist/ohhell.js +331 -0
- package/dist/ohhell.js.map +1 -0
- package/dist/oldmaid.d.ts +40 -0
- package/dist/oldmaid.js +186 -0
- package/dist/oldmaid.js.map +1 -0
- package/dist/pinochle.d.ts +94 -0
- package/dist/pinochle.js +466 -0
- package/dist/pinochle.js.map +1 -0
- package/dist/pitch.d.ts +77 -0
- package/dist/pitch.js +362 -0
- package/dist/pitch.js.map +1 -0
- package/dist/poker.d.ts +79 -0
- package/dist/poker.js +268 -0
- package/dist/poker.js.map +1 -0
- package/dist/president.d.ts +56 -0
- package/dist/president.js +339 -0
- package/dist/president.js.map +1 -0
- package/dist/pyramid.d.ts +39 -0
- package/dist/pyramid.js +200 -0
- package/dist/pyramid.js.map +1 -0
- package/dist/registry.d.ts +17 -0
- package/dist/registry.js +70 -0
- package/dist/registry.js.map +1 -0
- package/dist/reversi.d.ts +69 -0
- package/dist/reversi.js +584 -0
- package/dist/reversi.js.map +1 -0
- package/dist/ridethebus.d.ts +48 -0
- package/dist/ridethebus.js +257 -0
- package/dist/ridethebus.js.map +1 -0
- package/dist/rummy500.d.ts +89 -0
- package/dist/rummy500.js +474 -0
- package/dist/rummy500.js.map +1 -0
- package/dist/sevens.d.ts +48 -0
- package/dist/sevens.js +221 -0
- package/dist/sevens.js.map +1 -0
- package/dist/slapjack.d.ts +42 -0
- package/dist/slapjack.js +224 -0
- package/dist/slapjack.js.map +1 -0
- package/dist/speed.d.ts +44 -0
- package/dist/speed.js +201 -0
- package/dist/speed.js.map +1 -0
- package/dist/spider.d.ts +51 -0
- package/dist/spider.js +320 -0
- package/dist/spider.js.map +1 -0
- package/dist/spite.d.ts +75 -0
- package/dist/spite.js +372 -0
- package/dist/spite.js.map +1 -0
- package/dist/sport.d.ts +266 -0
- package/dist/sport.js +48 -0
- package/dist/sport.js.map +1 -0
- package/dist/switch.d.ts +69 -0
- package/dist/switch.js +393 -0
- package/dist/switch.js.map +1 -0
- package/dist/table.d.ts +284 -0
- package/dist/table.js +67 -0
- package/dist/table.js.map +1 -0
- package/dist/talk.d.ts +17 -0
- package/dist/talk.js +44 -0
- package/dist/talk.js.map +1 -0
- package/dist/thirtyone.d.ts +66 -0
- package/dist/thirtyone.js +372 -0
- package/dist/thirtyone.js.map +1 -0
- package/dist/tictactoe.d.ts +68 -0
- package/dist/tictactoe.js +541 -0
- package/dist/tictactoe.js.map +1 -0
- package/dist/tricks.d.ts +21 -0
- package/dist/tricks.js +48 -0
- package/dist/tricks.js.map +1 -0
- package/dist/war.d.ts +44 -0
- package/dist/war.js +185 -0
- package/dist/war.js.map +1 -0
- package/dist/whist.d.ts +52 -0
- package/dist/whist.js +218 -0
- package/dist/whist.js.map +1 -0
- package/dist/yacht.d.ts +96 -0
- package/dist/yacht.js +653 -0
- package/dist/yacht.js.map +1 -0
- package/package.json +41 -4
- package/README.md +0 -3
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { BoardGame } from "./board.js";
|
|
2
|
+
import type { SportGame } from "./sport.js";
|
|
3
|
+
import type { CardGame } from "./kit.js";
|
|
4
|
+
import type { BoardGameId, CardGameId, KitGameId, SportGameId, TableGame } from "./table.js";
|
|
5
|
+
export declare const CARD_GAMES: CardGame<any, any, any>[];
|
|
6
|
+
export declare const BOARD_GAMES: BoardGame<any, any, any>[];
|
|
7
|
+
export declare const SPORT_GAMES: SportGame<any, any, any>[];
|
|
8
|
+
/**
|
|
9
|
+
* Every game on the kit, cards, boards and table sports alike. Rooms, houses, challenges, tournaments, the setup
|
|
10
|
+
* screen and practice go by this list: none of them care what the table looks like.
|
|
11
|
+
*/
|
|
12
|
+
export declare const KIT_GAMES: TableGame<any, any, any, any>[];
|
|
13
|
+
export declare const kitGame: (id: unknown) => TableGame<any, any, any, any> | undefined;
|
|
14
|
+
export declare const isKitGame: (id: unknown) => id is KitGameId;
|
|
15
|
+
export declare const isCardGame: (id: unknown) => id is CardGameId;
|
|
16
|
+
export declare const isBoardGame: (id: unknown) => id is BoardGameId;
|
|
17
|
+
export declare const isSportGame: (id: unknown) => id is SportGameId;
|
package/dist/registry.js
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
// Every game on the kit, by id. Adding a game: write its engine and list it here, with the card
|
|
2
|
+
// games, the board games or the table sports.
|
|
3
|
+
import { hearts } from "./hearts.js";
|
|
4
|
+
import { ohHell } from "./ohhell.js";
|
|
5
|
+
import { euchre } from "./euchre.js";
|
|
6
|
+
import { crazy8 } from "./crazy8.js";
|
|
7
|
+
import { gin } from "./gin.js";
|
|
8
|
+
import { pinochle } from "./pinochle.js";
|
|
9
|
+
import { canasta } from "./canasta.js";
|
|
10
|
+
import { goFish } from "./gofish.js";
|
|
11
|
+
import { oldMaid } from "./oldmaid.js";
|
|
12
|
+
import { war } from "./war.js";
|
|
13
|
+
import { whist } from "./whist.js";
|
|
14
|
+
import { golf } from "./golf.js";
|
|
15
|
+
import { rummy500 } from "./rummy500.js";
|
|
16
|
+
import { president } from "./president.js";
|
|
17
|
+
import { klondike } from "./klondike.js";
|
|
18
|
+
import { freeCell } from "./freecell.js";
|
|
19
|
+
import { handFoot } from "./handfoot.js";
|
|
20
|
+
import { cribbage } from "./cribbage.js";
|
|
21
|
+
import { fiveDraw } from "./fivedraw.js";
|
|
22
|
+
import { holdem } from "./holdem.js";
|
|
23
|
+
import { bluff } from "./bluff.js";
|
|
24
|
+
import { liarsPoker } from "./liarspoker.js";
|
|
25
|
+
import { switchGame } from "./switch.js";
|
|
26
|
+
import { thirtyOne } from "./thirtyone.js";
|
|
27
|
+
import { kingsCorner } from "./kingscorner.js";
|
|
28
|
+
import { blackjack } from "./blackjack.js";
|
|
29
|
+
import { spite } from "./spite.js";
|
|
30
|
+
import { pitch } from "./pitch.js";
|
|
31
|
+
import { fiveHundred } from "./fivehundred.js";
|
|
32
|
+
import { durak } from "./durak.js";
|
|
33
|
+
import { bridge } from "./bridge.js";
|
|
34
|
+
import { fruitSalad } from "./fruitsalad.js";
|
|
35
|
+
import { slapjack } from "./slapjack.js";
|
|
36
|
+
import { speed } from "./speed.js";
|
|
37
|
+
import { memory } from "./memory.js";
|
|
38
|
+
import { sevens } from "./sevens.js";
|
|
39
|
+
import { cuckoo } from "./cuckoo.js";
|
|
40
|
+
import { contractRummy } from "./contractrummy.js";
|
|
41
|
+
import { spider } from "./spider.js";
|
|
42
|
+
import { pyramid } from "./pyramid.js";
|
|
43
|
+
import { rideTheBus } from "./ridethebus.js";
|
|
44
|
+
import { kingsCup } from "./kingscup.js";
|
|
45
|
+
import { horseRace } from "./horserace.js";
|
|
46
|
+
import { drinkingPyramid } from "./drinkingpyramid.js";
|
|
47
|
+
import { ticTacToe } from "./tictactoe.js";
|
|
48
|
+
import { dropFour } from "./dropfour.js";
|
|
49
|
+
import { combat } from "./combat.js";
|
|
50
|
+
import { reversi } from "./reversi.js";
|
|
51
|
+
import { checkers } from "./checkers.js";
|
|
52
|
+
import { go } from "./go.js";
|
|
53
|
+
import { chess } from "./chess.js";
|
|
54
|
+
import { yacht } from "./yacht.js";
|
|
55
|
+
import { backgammon } from "./backgammon.js";
|
|
56
|
+
import { miniGolf } from "./minigolf.js";
|
|
57
|
+
export const CARD_GAMES = [hearts, ohHell, euchre, crazy8, gin, pinochle, canasta, goFish, oldMaid, war, whist, golf, rummy500, president, klondike, freeCell, handFoot, cribbage, fiveDraw, holdem, bluff, liarsPoker, switchGame, thirtyOne, kingsCorner, blackjack, spite, pitch, fiveHundred, durak, bridge, fruitSalad, slapjack, speed, memory, sevens, cuckoo, contractRummy, spider, pyramid, rideTheBus, kingsCup, horseRace, drinkingPyramid];
|
|
58
|
+
export const BOARD_GAMES = [ticTacToe, dropFour, combat, reversi, checkers, go, chess, yacht, backgammon];
|
|
59
|
+
export const SPORT_GAMES = [miniGolf];
|
|
60
|
+
/**
|
|
61
|
+
* Every game on the kit, cards, boards and table sports alike. Rooms, houses, challenges, tournaments, the setup
|
|
62
|
+
* screen and practice go by this list: none of them care what the table looks like.
|
|
63
|
+
*/
|
|
64
|
+
export const KIT_GAMES = [...CARD_GAMES, ...BOARD_GAMES, ...SPORT_GAMES];
|
|
65
|
+
export const kitGame = (id) => KIT_GAMES.find((g) => g.id === id);
|
|
66
|
+
export const isKitGame = (id) => KIT_GAMES.some((g) => g.id === id);
|
|
67
|
+
export const isCardGame = (id) => CARD_GAMES.some((g) => g.id === id);
|
|
68
|
+
export const isBoardGame = (id) => BOARD_GAMES.some((g) => g.id === id);
|
|
69
|
+
export const isSportGame = (id) => SPORT_GAMES.some((g) => g.id === id);
|
|
70
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { type BoardGame } from "./board.js";
|
|
2
|
+
import { type BaseRules } from "./table.js";
|
|
3
|
+
export interface ReversiRules extends BaseRules {
|
|
4
|
+
/** The board is size × size. */
|
|
5
|
+
size: number;
|
|
6
|
+
/** Who plays dark (and so goes first) in the first game. */
|
|
7
|
+
first: "random" | "seat1" | "seat2";
|
|
8
|
+
/** Show where you can move. Off is the purist's game: you find the moves yourself. */
|
|
9
|
+
hints: boolean;
|
|
10
|
+
/** Games in a match: most wins takes it. */
|
|
11
|
+
games: number;
|
|
12
|
+
}
|
|
13
|
+
export declare const classicReversi: ReversiRules;
|
|
14
|
+
export declare const smallReversi: ReversiRules;
|
|
15
|
+
export declare const bigReversi: ReversiRules;
|
|
16
|
+
/** A cell: the seat whose disc is there, or null. */
|
|
17
|
+
type Disc = number | null;
|
|
18
|
+
export interface ReversiState {
|
|
19
|
+
game: "reversi";
|
|
20
|
+
rules: ReversiRules;
|
|
21
|
+
seats: number;
|
|
22
|
+
rng: number;
|
|
23
|
+
/** Which game of the match, from 1. */
|
|
24
|
+
round: number;
|
|
25
|
+
/** Who plays dark (and so goes first) in this game. */
|
|
26
|
+
first: number;
|
|
27
|
+
/** Row by row from the top left, size × size. */
|
|
28
|
+
cells: Disc[];
|
|
29
|
+
turn: number;
|
|
30
|
+
/** Where the last disc went down, and the discs it turned over. */
|
|
31
|
+
last: number | null;
|
|
32
|
+
flipped: number[];
|
|
33
|
+
/** The seat that had no move after the last one and sat its turn out; null when play just passed across. */
|
|
34
|
+
passed: number | null;
|
|
35
|
+
/** Who won the game just played; null for a draw (or while playing). */
|
|
36
|
+
roundWinner: number | null;
|
|
37
|
+
wins: number[];
|
|
38
|
+
draws: number;
|
|
39
|
+
phase: "playing" | "scored" | "finished";
|
|
40
|
+
ready: boolean[];
|
|
41
|
+
narration: string | null;
|
|
42
|
+
}
|
|
43
|
+
export type ReversiMove = {
|
|
44
|
+
type: "place";
|
|
45
|
+
cell: number;
|
|
46
|
+
} | {
|
|
47
|
+
type: "next";
|
|
48
|
+
};
|
|
49
|
+
/** The discs a disc of `seat`'s in `cell` would turn over: empty when the move isn't allowed. */
|
|
50
|
+
export declare function flipsFor(cells: readonly Disc[], n: number, cell: number, seat: number): number[];
|
|
51
|
+
/** Every cell `seat` could play in. */
|
|
52
|
+
export declare function legalMoves(cells: readonly Disc[], n: number, seat: number): number[];
|
|
53
|
+
/** How many discs each seat has on the board. */
|
|
54
|
+
export declare function discCount(cells: readonly Disc[]): [number, number];
|
|
55
|
+
export declare function newReversi(rules: ReversiRules, seats: number, seed: number): ReversiState;
|
|
56
|
+
/** How hard a computer player thinks: moves ahead, how many empty squares it can play out exactly, and how much work it may do. */
|
|
57
|
+
export interface ReversiEffort {
|
|
58
|
+
depth: number;
|
|
59
|
+
exact: number;
|
|
60
|
+
limit: number;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* The move the search likes best for `seat`. It looks one move further each time round, trying the
|
|
64
|
+
* best move so far first, so if the work runs out the last finished look still stands.
|
|
65
|
+
*/
|
|
66
|
+
export declare function bestReversiMove(cells: readonly Disc[], n: number, seat: number, effort: ReversiEffort, rand?: () => number): number | null;
|
|
67
|
+
/** Reversi, with resigning, draw offers and taking a move back (see offers.ts). */
|
|
68
|
+
export declare const reversi: BoardGame<ReversiRules & import("./offers.js").OfferRules, import("./offers.js").WithOffers<ReversiState>, import("./offers.js").OfferMove | ReversiMove>;
|
|
69
|
+
export {};
|