extremely claude-assisted go game based on atproto! working on cleaning up and giving a more unique design, still has a bit of a slop vibe to it.
1declare module 'tenuki' {
2 interface GameOptions {
3 element?: HTMLElement;
4 boardSize?: number;
5 handicapStones?: number;
6 freeHandicapPlacement?: boolean;
7 fuzzyStonePlacement?: boolean;
8 scoring?: 'area' | 'territory' | 'equivalence';
9 komi?: number;
10 koRule?: 'simple' | 'positional-superko' | 'situational-superko' | 'natural-situational-superko';
11 renderer?: 'svg' | 'dom';
12 }
13
14 interface Intersection {
15 value: 'empty' | 'black' | 'white';
16 y: number;
17 x: number;
18 }
19
20 interface GameState {
21 pass: boolean;
22 color: 'black' | 'white';
23 playedPoint: { y: number; x: number } | null;
24 }
25
26 interface Score {
27 black: number;
28 white: number;
29 }
30
31 class Game {
32 constructor(options?: GameOptions);
33 playAt(y: number, x: number): boolean;
34 pass(): void;
35 undo(): void;
36 currentPlayer(): 'black' | 'white';
37 intersectionAt(y: number, x: number): Intersection;
38 isOver(): boolean;
39 currentState(): GameState;
40 score(): Score;
41 markDeadAt(y: number, x: number): void;
42 unmarkDeadAt(y: number, x: number): void;
43 toggleDeadAt(y: number, x: number): void;
44 }
45
46 const tenuki: {
47 Game: typeof Game;
48 };
49
50 export default tenuki;
51 export { Game };
52}