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.
- package/index.d.ts +65 -0
- package/index.js +1 -1
- 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
|
|
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;
|