knightstour 1.0.0 → 1.0.2

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.
Files changed (3) hide show
  1. package/index.d.ts +65 -0
  2. package/index.js +1 -1
  3. package/package.json +2 -1
package/index.d.ts ADDED
@@ -0,0 +1,65 @@
1
+ export interface KnightPlayer {
2
+ name: string;
3
+ color: string;
4
+ moveIndexes: number[];
5
+ CPU?: boolean; // optional, since you reference it in hint()
6
+ }
7
+
8
+ export interface KnightsTourConfig {
9
+ rows?: number;
10
+ cols?: number;
11
+ players?: KnightPlayer[];
12
+ gameMode?: string;
13
+ disabledIndexes?: number[];
14
+ }
15
+
16
+ export interface Cell {
17
+ index: number;
18
+ isDisabled: boolean;
19
+ isHighlighted: boolean;
20
+ isClosed: boolean;
21
+ value: number | null;
22
+ }
23
+
24
+ export default class KnightsTour {
25
+ static KNIGHT_OFFSETS: number[][];
26
+
27
+ rows: number;
28
+ cols: number;
29
+ players: KnightPlayer[];
30
+ gameMode: string;
31
+ disabledIndexes: number[];
32
+ initialConfig: KnightsTourConfig;
33
+ cells: Cell[];
34
+ solved: boolean;
35
+ generated: boolean;
36
+ turnIndex: number;
37
+ state: string;
38
+ matrix: Cell[][];
39
+ allMoveIndexes: number[];
40
+ solving?: boolean;
41
+ generating?: boolean;
42
+
43
+ constructor(config?: KnightsTourConfig);
44
+
45
+ init(config: KnightsTourConfig): void;
46
+ reset(): void;
47
+ createBoard(): void;
48
+ getCell(index: number): Cell | null;
49
+ getAvailableMovesFor(playerIndex: number): number[];
50
+ move(index: number): boolean;
51
+ undo(): void;
52
+ getNextMoves(startIndex: number, increment?: number): number[];
53
+ updateBoard(autoMove?: boolean): void;
54
+ clear(): void;
55
+ determineWinner(): string;
56
+ isComplete(): boolean;
57
+ isClosed(lastMove?: number): boolean;
58
+ getKnightMovesAt(index: number, context?: boolean): number[];
59
+ isAvailable(index: number): boolean;
60
+ isVisited(index: number): boolean;
61
+ isValid(index: number): boolean;
62
+ hint(): void;
63
+ solve(increment?: number): void;
64
+ generate(increment?: number): void;
65
+ }
package/index.js CHANGED
@@ -362,7 +362,7 @@ class KnightsTour {
362
362
  const c = index % this.cols;
363
363
  const moves = [];
364
364
 
365
- for (const [dr, dc] of Game.KNIGHT_OFFSETS) {
365
+ for (const [dr, dc] of KnightsTour.KNIGHT_OFFSETS) {
366
366
  const nR = r + dr,
367
367
  nC = c + dc;
368
368
  const nIdx = nR * this.cols + nC;
package/package.json CHANGED
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "name": "knightstour",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "",
5
5
  "main": "index.js",
6
+ "types": "index.d.ts",
6
7
  "type": "module",
7
8
  "scripts": {
8
9
  "test": "echo \"Error: no test specified\" && exit 1"