@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,104 @@
|
|
|
1
|
+
import { type Point } from "@journey-to-code/physics";
|
|
2
|
+
import { type GolfHole, type PlacedBall } from "./minigolfcourse.js";
|
|
3
|
+
import { type ShotMove, type SportGame, type SportShot } from "./sport.js";
|
|
4
|
+
import { type BaseRules } from "./table.js";
|
|
5
|
+
export interface MiniGolfRules extends BaseRules {
|
|
6
|
+
/** Which course (see COURSES). */
|
|
7
|
+
course: string;
|
|
8
|
+
/** How many of its holes to play, from the first. */
|
|
9
|
+
holes: number;
|
|
10
|
+
/** In turn, or everyone at once. */
|
|
11
|
+
order: "turns" | "together";
|
|
12
|
+
/** Strokes allowed on a hole. Not in by then: pick up, and write down one more than this. */
|
|
13
|
+
limit: number;
|
|
14
|
+
/** Strokes added for a ball in the water or off the course. It is played again from where it was struck. */
|
|
15
|
+
penalty: number;
|
|
16
|
+
/** In turn: balls knock into each other. (Everyone at once, they never do.) */
|
|
17
|
+
collide: boolean;
|
|
18
|
+
/** A ball knocked into the cup by someone else's counts as holed. Off: it is put back where it lay. */
|
|
19
|
+
knockIn: boolean;
|
|
20
|
+
}
|
|
21
|
+
export declare const nineHoles: MiniGolfRules;
|
|
22
|
+
export declare const nineTogether: MiniGolfRules;
|
|
23
|
+
export declare const quickThree: MiniGolfRules;
|
|
24
|
+
export declare const quickTogether: MiniGolfRules;
|
|
25
|
+
/** The gentlest and hardest a ball may be struck. A putt of nothing would be a stroke that moves nothing. */
|
|
26
|
+
export declare const MIN_POWER = 20;
|
|
27
|
+
export declare const MAX_POWER = 1000;
|
|
28
|
+
export interface GolfBall {
|
|
29
|
+
x: number;
|
|
30
|
+
y: number;
|
|
31
|
+
/** Strokes on this hole so far, penalties included. */
|
|
32
|
+
strokes: number;
|
|
33
|
+
/** Has left the tee on this hole. */
|
|
34
|
+
teed: boolean;
|
|
35
|
+
done: "holed" | "pickup" | null;
|
|
36
|
+
}
|
|
37
|
+
export interface MiniGolfState {
|
|
38
|
+
game: "minigolf";
|
|
39
|
+
rules: MiniGolfRules;
|
|
40
|
+
seats: number;
|
|
41
|
+
rng: number;
|
|
42
|
+
/** The physics that plays this table's shots. */
|
|
43
|
+
physics: number;
|
|
44
|
+
/** Which hole, from 0. */
|
|
45
|
+
hole: number;
|
|
46
|
+
/** Who tees off first on this hole. */
|
|
47
|
+
first: number;
|
|
48
|
+
/** In turn: whose shot it is. Everyone at once: always null. */
|
|
49
|
+
turn: number | null;
|
|
50
|
+
balls: GolfBall[];
|
|
51
|
+
/** What each seat wrote down for each hole: card[seat][hole]; null until the hole is finished. */
|
|
52
|
+
card: (number | null)[][];
|
|
53
|
+
/** Shots taken in the whole round. */
|
|
54
|
+
shots: number;
|
|
55
|
+
/** Each seat's last shot on this hole. */
|
|
56
|
+
lasts: (SportShot | null)[];
|
|
57
|
+
phase: "playing" | "holed" | "finished";
|
|
58
|
+
ready: boolean[];
|
|
59
|
+
narration: string | null;
|
|
60
|
+
}
|
|
61
|
+
export type MiniGolfMove = ShotMove | {
|
|
62
|
+
type: "next";
|
|
63
|
+
};
|
|
64
|
+
export declare const ballId: (seat: number) => string;
|
|
65
|
+
/** Whether this table's balls knock into each other: in turn, unless the house says no. */
|
|
66
|
+
export declare const ballsCollide: (rules: MiniGolfRules) => boolean;
|
|
67
|
+
/** A ball lying this close to the tee (centre to centre) is lifted while someone tees off. */
|
|
68
|
+
export declare const TEE_CLEAR: number;
|
|
69
|
+
export declare function newMiniGolf(rules: MiniGolfRules, seats: number, seed: number): MiniGolfState;
|
|
70
|
+
/** What golfers call a score on a hole. */
|
|
71
|
+
export declare function scoreName(strokes: number, par: number): string;
|
|
72
|
+
interface Field {
|
|
73
|
+
x: number;
|
|
74
|
+
y: number;
|
|
75
|
+
cols: number;
|
|
76
|
+
rows: number;
|
|
77
|
+
/** Distance to the cup along the green from each cell, in world units; Infinity where no ball can be. */
|
|
78
|
+
dist: Float64Array;
|
|
79
|
+
/** The pieces of the hole's ledges. */
|
|
80
|
+
ledges: [Point, Point][];
|
|
81
|
+
}
|
|
82
|
+
/** How far each spot on a hole is from the cup by the shortest way a ball could roll there. */
|
|
83
|
+
export declare function greenDistances(h: GolfHole): Field;
|
|
84
|
+
/** How far a ball lying here is from the cup, along the green. */
|
|
85
|
+
export declare function distanceToCup(h: GolfHole, x: number, y: number): number;
|
|
86
|
+
export interface Putt {
|
|
87
|
+
angle: number;
|
|
88
|
+
power: number;
|
|
89
|
+
/** What the search made of it: under zero means it expects to hole out. */
|
|
90
|
+
score: number;
|
|
91
|
+
/** How many putts were simulated to find it. */
|
|
92
|
+
tried: number;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* The best putt from here that a search can find: what a player with a perfect stroke would hit.
|
|
96
|
+
* The work is bounded (at most 286 simulated putts) and remembered, since a table asks more than once.
|
|
97
|
+
* `others` are the balls lying on the hole that this one can knock into.
|
|
98
|
+
*/
|
|
99
|
+
export declare function bestPutt(h: GolfHole, x: number, y: number, penalty?: number, others?: PlacedBall[]): Putt;
|
|
100
|
+
/** The most a computer player's aim (hundredths of a degree) and strength (a share of it) can be off: at full skill, and how much more at none. */
|
|
101
|
+
export declare const AIM_SLIP: readonly [300, 1100];
|
|
102
|
+
export declare const POWER_SLIP: readonly [0.2, 0.45];
|
|
103
|
+
export declare const miniGolf: SportGame<MiniGolfRules, MiniGolfState, MiniGolfMove>;
|
|
104
|
+
export {};
|