shogiops 0.2.8 → 0.5.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/attacks.js +32 -48
- package/attacks.js.map +1 -1
- package/board.d.ts +3 -0
- package/board.js +60 -33
- package/board.js.map +1 -1
- package/compat.d.ts +6 -24
- package/compat.js +20 -185
- package/compat.js.map +1 -1
- package/debug.js +37 -72
- package/debug.js.map +1 -1
- package/hand.d.ts +38 -0
- package/hand.js +69 -0
- package/hand.js.map +1 -0
- package/hash.d.ts +4 -3
- package/hash.js +12 -20
- package/hash.js.map +1 -1
- package/index.d.ts +13 -10
- package/index.js +22 -64
- package/index.js.map +1 -1
- package/{csa.d.ts → notation/csa/csa.d.ts} +9 -9
- package/notation/csa/csa.js +213 -0
- package/notation/csa/csa.js.map +1 -0
- package/notation/japanese.d.ts +3 -0
- package/notation/japanese.js +61 -0
- package/notation/japanese.js.map +1 -0
- package/{kif.d.ts → notation/kif/kif.d.ts} +10 -9
- package/notation/kif/kif.js +232 -0
- package/notation/kif/kif.js.map +1 -0
- package/{kifHandicaps.d.ts → notation/kif/kifHandicaps.d.ts} +0 -0
- package/{kifHandicaps.js → notation/kif/kifHandicaps.js} +7 -7
- package/notation/kif/kifHandicaps.js.map +1 -0
- package/notation/kitaoKawasaki.d.ts +3 -0
- package/notation/kitaoKawasaki.js +26 -0
- package/notation/kitaoKawasaki.js.map +1 -0
- package/notation/kitaokawasaki.d.ts +0 -0
- package/notation/kitaokawasaki.js +2 -0
- package/notation/kitaokawasaki.js.map +1 -0
- package/notation/notationUtil.d.ts +12 -0
- package/{kifUtil.js → notation/notationUtil.js} +39 -40
- package/notation/notationUtil.js.map +1 -0
- package/notation/western.d.ts +3 -0
- package/notation/western.js +23 -0
- package/notation/western.js.map +1 -0
- package/notation/westernEngine.d.ts +3 -0
- package/notation/westernEngine.js +23 -0
- package/notation/westernEngine.js.map +1 -0
- package/package.json +54 -37
- package/setup.d.ts +2 -32
- package/setup.js +5 -80
- package/setup.js.map +1 -1
- package/sfen.d.ts +33 -0
- package/sfen.js +188 -0
- package/sfen.js.map +1 -0
- package/shogi.d.ts +14 -7
- package/shogi.js +138 -141
- package/shogi.js.map +1 -1
- package/squareSet.d.ts +1 -5
- package/squareSet.js +1 -18
- package/squareSet.js.map +1 -1
- package/src/board.ts +34 -0
- package/src/compat.ts +18 -197
- package/src/debug.ts +26 -56
- package/src/hand.ts +94 -0
- package/src/hash.ts +8 -7
- package/src/index.ts +16 -12
- package/src/{csa.ts → notation/csa/csa.ts} +53 -52
- package/src/notation/japanese.ts +74 -0
- package/src/{kif.ts → notation/kif/kif.ts} +77 -78
- package/src/{kifHandicaps.ts → notation/kif/kifHandicaps.ts} +5 -0
- package/src/notation/kitaoKawasaki.ts +24 -0
- package/src/{kifUtil.ts → notation/notationUtil.ts} +37 -28
- package/src/notation/western.ts +21 -0
- package/src/notation/westernEngine.ts +21 -0
- package/src/setup.ts +4 -91
- package/src/sfen.ts +190 -0
- package/src/shogi.ts +75 -75
- package/src/squareSet.ts +1 -18
- package/src/transform.ts +3 -1
- package/src/types.ts +13 -16
- package/src/util.ts +8 -73
- package/src/variant.ts +44 -3
- package/src/variantUtil.ts +160 -0
- package/transform.js +18 -24
- package/transform.js.map +1 -1
- package/types.d.ts +3 -7
- package/types.js +18 -24
- package/types.js.map +1 -1
- package/util.d.ts +4 -7
- package/util.js +24 -96
- package/util.js.map +1 -1
- package/variant.d.ts +12 -1
- package/variant.js +42 -16
- package/variant.js.map +1 -1
- package/variantUtil.d.ts +13 -0
- package/variantUtil.js +147 -0
- package/variantUtil.js.map +1 -0
- package/csa.js +0 -229
- package/csa.js.map +0 -1
- package/csaUtil.d.ts +0 -3
- package/csaUtil.js +0 -21
- package/csaUtil.js.map +0 -1
- package/fen.d.ts +0 -32
- package/fen.js +0 -197
- package/fen.js.map +0 -1
- package/kif.js +0 -247
- package/kif.js.map +0 -1
- package/kifHandicaps.js.map +0 -1
- package/kifUtil.d.ts +0 -9
- package/kifUtil.js.map +0 -1
- package/san.d.ts +0 -6
- package/san.js +0 -135
- package/san.js.map +0 -1
- package/src/csaUtil.ts +0 -15
- package/src/fen.ts +0 -183
- package/src/san.ts +0 -136
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { Piece, Square } from '.';
|
|
2
|
+
import { SquareSet } from './squareSet';
|
|
3
|
+
import { Color, Role, Rules } from './types';
|
|
4
|
+
|
|
5
|
+
export function pieceCanPromote(rules: Rules): (piece: Piece, from: Square, to: Square) => boolean {
|
|
6
|
+
switch (rules) {
|
|
7
|
+
default:
|
|
8
|
+
return (piece: Piece, from: Square, to: Square) =>
|
|
9
|
+
promotableRoles(rules).includes(piece.role) &&
|
|
10
|
+
(promotionZone(rules)(piece.color).has(from) || promotionZone(rules)(piece.color).has(to));
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export function pieceInDeadZone(rules: Rules): (piece: Piece, sq: Square) => boolean {
|
|
14
|
+
switch (rules) {
|
|
15
|
+
default:
|
|
16
|
+
return (piece: Piece, sq: Square) => {
|
|
17
|
+
if (piece.role === 'lance' || piece.role === 'pawn')
|
|
18
|
+
return backrank(rules)(piece.color).intersect(SquareSet.fromSquare(sq)).nonEmpty();
|
|
19
|
+
if (piece.role === 'knight')
|
|
20
|
+
return secondBackrank(rules)(piece.color)
|
|
21
|
+
.union(backrank(rules)(piece.color))
|
|
22
|
+
.intersect(SquareSet.fromSquare(sq))
|
|
23
|
+
.nonEmpty();
|
|
24
|
+
return false;
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export function allRoles(rules: Rules): Role[] {
|
|
30
|
+
switch (rules) {
|
|
31
|
+
case 'minishogi':
|
|
32
|
+
return ['rook', 'bishop', 'gold', 'silver', 'pawn', 'king', 'dragon', 'horse', 'promotedsilver', 'tokin'];
|
|
33
|
+
default:
|
|
34
|
+
return [
|
|
35
|
+
'rook',
|
|
36
|
+
'bishop',
|
|
37
|
+
'gold',
|
|
38
|
+
'silver',
|
|
39
|
+
'knight',
|
|
40
|
+
'lance',
|
|
41
|
+
'pawn',
|
|
42
|
+
'dragon',
|
|
43
|
+
'horse',
|
|
44
|
+
'tokin',
|
|
45
|
+
'promotedsilver',
|
|
46
|
+
'promotedknight',
|
|
47
|
+
'promotedlance',
|
|
48
|
+
'king',
|
|
49
|
+
];
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export function handRoles(rules: Rules): Role[] {
|
|
54
|
+
switch (rules) {
|
|
55
|
+
case 'minishogi':
|
|
56
|
+
return ['rook', 'bishop', 'gold', 'silver', 'pawn'];
|
|
57
|
+
default:
|
|
58
|
+
return ['rook', 'bishop', 'gold', 'silver', 'knight', 'lance', 'pawn'];
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export function promotableRoles(rules: Rules): Role[] {
|
|
63
|
+
switch (rules) {
|
|
64
|
+
case 'minishogi':
|
|
65
|
+
return ['pawn', 'silver', 'bishop', 'rook'];
|
|
66
|
+
default:
|
|
67
|
+
return ['pawn', 'lance', 'knight', 'silver', 'bishop', 'rook'];
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export function promote(rules: Rules): (role: Role) => Role {
|
|
72
|
+
switch (rules) {
|
|
73
|
+
case 'minishogi':
|
|
74
|
+
return standardPromote;
|
|
75
|
+
default:
|
|
76
|
+
return standardPromote;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export function unpromote(rules: Rules): (role: Role) => Role {
|
|
81
|
+
switch (rules) {
|
|
82
|
+
case 'minishogi':
|
|
83
|
+
return standardUnpromote;
|
|
84
|
+
default:
|
|
85
|
+
return standardUnpromote;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export function promotionZone(rules: Rules): (color: Color) => SquareSet {
|
|
90
|
+
switch (rules) {
|
|
91
|
+
case 'minishogi':
|
|
92
|
+
return (color: Color) => (color === 'sente' ? SquareSet.fromRank(8) : SquareSet.fromRank(4));
|
|
93
|
+
default:
|
|
94
|
+
return (color: Color) => (color === 'sente' ? new SquareSet(0, 0, 0x07ffffff) : new SquareSet(0x07ffffff, 0, 0));
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
export function backrank(rules: Rules): (color: Color) => SquareSet {
|
|
99
|
+
switch (rules) {
|
|
100
|
+
case 'minishogi':
|
|
101
|
+
return promotionZone(rules);
|
|
102
|
+
default:
|
|
103
|
+
return (color: Color) => (color === 'sente' ? SquareSet.fromRank(8) : SquareSet.fromRank(0));
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export function secondBackrank(rules: Rules): (color: Color) => SquareSet {
|
|
108
|
+
switch (rules) {
|
|
109
|
+
case 'minishogi':
|
|
110
|
+
return (color: Color) => (color === 'sente' ? SquareSet.fromRank(7) : SquareSet.fromRank(5));
|
|
111
|
+
default:
|
|
112
|
+
return (color: Color) => (color === 'sente' ? SquareSet.fromRank(7) : SquareSet.fromRank(1));
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
function standardUnpromote(role: Role): Role {
|
|
117
|
+
switch (role) {
|
|
118
|
+
case 'pawn':
|
|
119
|
+
case 'tokin':
|
|
120
|
+
return 'pawn';
|
|
121
|
+
case 'lance':
|
|
122
|
+
case 'promotedlance':
|
|
123
|
+
return 'lance';
|
|
124
|
+
case 'knight':
|
|
125
|
+
case 'promotedknight':
|
|
126
|
+
return 'knight';
|
|
127
|
+
case 'silver':
|
|
128
|
+
case 'promotedsilver':
|
|
129
|
+
return 'silver';
|
|
130
|
+
case 'gold':
|
|
131
|
+
return 'gold';
|
|
132
|
+
case 'bishop':
|
|
133
|
+
case 'horse':
|
|
134
|
+
return 'bishop';
|
|
135
|
+
case 'rook':
|
|
136
|
+
case 'dragon':
|
|
137
|
+
return 'rook';
|
|
138
|
+
default:
|
|
139
|
+
return role;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
function standardPromote(role: Role): Role {
|
|
144
|
+
switch (role) {
|
|
145
|
+
case 'pawn':
|
|
146
|
+
return 'tokin';
|
|
147
|
+
case 'lance':
|
|
148
|
+
return 'promotedlance';
|
|
149
|
+
case 'knight':
|
|
150
|
+
return 'promotedknight';
|
|
151
|
+
case 'silver':
|
|
152
|
+
return 'promotedsilver';
|
|
153
|
+
case 'bishop':
|
|
154
|
+
return 'horse';
|
|
155
|
+
case 'rook':
|
|
156
|
+
return 'dragon';
|
|
157
|
+
default:
|
|
158
|
+
return role;
|
|
159
|
+
}
|
|
160
|
+
}
|
package/transform.js
CHANGED
|
@@ -1,45 +1,39 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const squareSet_1 = require("./squareSet");
|
|
6
|
-
const board_1 = require("./board");
|
|
7
|
-
function flipVertical(s) {
|
|
1
|
+
import { ROLES, COLORS } from './types';
|
|
2
|
+
import { SquareSet } from './squareSet';
|
|
3
|
+
import { Board } from './board';
|
|
4
|
+
export function flipVertical(s) {
|
|
8
5
|
return s.bswap81();
|
|
9
6
|
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
const middle = s.intersect(squareSet_1.SquareSet.fromFile(4));
|
|
7
|
+
export function flipHorizontal(s) {
|
|
8
|
+
const rh = new SquareSet(0x783c1e0, 0x783c1e0, 0x783c1e0); // Right half
|
|
9
|
+
const c2 = new SquareSet(0x633198c, 0x633198c, 0x633198c); // Right rows by two
|
|
10
|
+
const c1 = new SquareSet(0x52a954a, 0x52a954a, 0x52a954a); // Right rows by 1
|
|
11
|
+
const middle = s.intersect(SquareSet.fromFile(4));
|
|
16
12
|
s = s.shl81(1).intersect(c1).union(s.intersect(c1).shr81(1));
|
|
17
13
|
s = s.shl81(2).intersect(c2).union(s.intersect(c2).shr81(2));
|
|
18
14
|
s = s.shl81(5).intersect(rh).union(s.intersect(rh).shr81(5));
|
|
19
15
|
return s.union(middle);
|
|
20
16
|
}
|
|
21
|
-
|
|
22
|
-
function rotate180(s) {
|
|
17
|
+
export function rotate180(s) {
|
|
23
18
|
return s.rbit81();
|
|
24
19
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
20
|
+
export function transformBoard(board, f) {
|
|
21
|
+
const b = Board.empty();
|
|
22
|
+
b.numberOfFiles = board.numberOfFiles;
|
|
23
|
+
b.numberOfRanks = board.numberOfRanks;
|
|
28
24
|
b.occupied = f(board.occupied);
|
|
29
|
-
for (const color of
|
|
25
|
+
for (const color of COLORS)
|
|
30
26
|
b[color] = f(board[color]);
|
|
31
|
-
for (const role of
|
|
27
|
+
for (const role of ROLES)
|
|
32
28
|
b[role] = f(board[role]);
|
|
33
29
|
return b;
|
|
34
30
|
}
|
|
35
|
-
|
|
36
|
-
function transformSetup(setup, f) {
|
|
31
|
+
export function transformSetup(setup, f) {
|
|
37
32
|
return {
|
|
38
33
|
board: transformBoard(setup.board, f),
|
|
39
|
-
|
|
34
|
+
hands: setup.hands.clone(),
|
|
40
35
|
turn: setup.turn,
|
|
41
36
|
fullmoves: setup.fullmoves,
|
|
42
37
|
};
|
|
43
38
|
}
|
|
44
|
-
exports.transformSetup = transformSetup;
|
|
45
39
|
//# sourceMappingURL=transform.js.map
|
package/transform.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transform.js","sourceRoot":"","sources":["src/transform.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"transform.js","sourceRoot":"","sources":["src/transform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGhC,MAAM,UAAU,YAAY,CAAC,CAAY;IACvC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,CAAY;IACzC,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,aAAa;IACxE,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,oBAAoB;IAC/E,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,kBAAkB;IAC7E,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,CAAY;IACpC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAY,EAAE,CAA8B;IACzE,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;IACtC,CAAC,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;IACtC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC/B,KAAK,MAAM,KAAK,IAAI,MAAM;QAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACvD,KAAK,MAAM,IAAI,IAAI,KAAK;QAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACnD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAY,EAAE,CAA8B;IACzE,OAAO;QACL,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QACrC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;QAC1B,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,SAAS,EAAE,KAAK,CAAC,SAAS;KAC3B,CAAC;AACJ,CAAC"}
|
package/types.d.ts
CHANGED
|
@@ -10,12 +10,8 @@ export declare type Color = typeof COLORS[number];
|
|
|
10
10
|
export declare type ByColor<T> = {
|
|
11
11
|
[color in Color]: T;
|
|
12
12
|
};
|
|
13
|
-
export declare const ROLES: readonly ["
|
|
14
|
-
export declare const POCKET_ROLES: readonly ["rook", "bishop", "gold", "silver", "knight", "lance", "pawn"];
|
|
15
|
-
export declare const PROMOTABLE_ROLES: readonly ["pawn", "lance", "knight", "silver", "bishop", "rook"];
|
|
13
|
+
export declare const ROLES: readonly ["rook", "bishop", "gold", "silver", "knight", "lance", "pawn", "dragon", "horse", "tokin", "promotedsilver", "promotedknight", "promotedlance", "king"];
|
|
16
14
|
export declare type Role = typeof ROLES[number];
|
|
17
|
-
export declare type PocketRole = typeof POCKET_ROLES[number];
|
|
18
|
-
export declare type PromotableRole = typeof PROMOTABLE_ROLES[number];
|
|
19
15
|
export declare type ByRole<T> = {
|
|
20
16
|
[role in Role]: T;
|
|
21
17
|
};
|
|
@@ -29,13 +25,13 @@ export interface NormalMove {
|
|
|
29
25
|
promotion?: boolean;
|
|
30
26
|
}
|
|
31
27
|
export interface DropMove {
|
|
32
|
-
role:
|
|
28
|
+
role: Role;
|
|
33
29
|
to: Square;
|
|
34
30
|
}
|
|
35
31
|
export declare type Move = NormalMove | DropMove;
|
|
36
32
|
export declare function isDrop(v: Move): v is DropMove;
|
|
37
33
|
export declare function isNormal(v: Move): v is NormalMove;
|
|
38
|
-
export declare const RULES: readonly ["shogi"];
|
|
34
|
+
export declare const RULES: readonly ["shogi", "minishogi"];
|
|
39
35
|
export declare type Rules = typeof RULES[number];
|
|
40
36
|
export interface Outcome {
|
|
41
37
|
winner: Color | undefined;
|
package/types.js
CHANGED
|
@@ -1,35 +1,29 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
exports.COLORS = ['sente', 'gote'];
|
|
7
|
-
exports.ROLES = [
|
|
8
|
-
'pawn',
|
|
9
|
-
'lance',
|
|
10
|
-
'knight',
|
|
11
|
-
'silver',
|
|
12
|
-
'gold',
|
|
13
|
-
'bishop',
|
|
1
|
+
export const FILE_NAMES = ['9', '8', '7', '6', '5', '4', '3', '2', '1'];
|
|
2
|
+
export const RANK_NAMES = ['i', 'h', 'g', 'f', 'e', 'd', 'c', 'b', 'a'];
|
|
3
|
+
export const COLORS = ['sente', 'gote'];
|
|
4
|
+
// correct order for sfen hand exporting
|
|
5
|
+
export const ROLES = [
|
|
14
6
|
'rook',
|
|
7
|
+
'bishop',
|
|
8
|
+
'gold',
|
|
9
|
+
'silver',
|
|
10
|
+
'knight',
|
|
11
|
+
'lance',
|
|
12
|
+
'pawn',
|
|
13
|
+
'dragon',
|
|
14
|
+
'horse',
|
|
15
15
|
'tokin',
|
|
16
|
-
'promotedlance',
|
|
17
|
-
'promotedknight',
|
|
18
16
|
'promotedsilver',
|
|
19
|
-
'
|
|
20
|
-
'
|
|
17
|
+
'promotedknight',
|
|
18
|
+
'promotedlance',
|
|
21
19
|
'king',
|
|
22
20
|
];
|
|
23
|
-
|
|
24
|
-
exports.PROMOTABLE_ROLES = ['pawn', 'lance', 'knight', 'silver', 'bishop', 'rook'];
|
|
25
|
-
function isDrop(v) {
|
|
21
|
+
export function isDrop(v) {
|
|
26
22
|
return 'role' in v;
|
|
27
23
|
}
|
|
28
|
-
|
|
29
|
-
function isNormal(v) {
|
|
24
|
+
export function isNormal(v) {
|
|
30
25
|
return 'from' in v;
|
|
31
26
|
}
|
|
32
|
-
exports.isNormal = isNormal;
|
|
33
27
|
// variant will be added later, once lishogi supports them
|
|
34
|
-
|
|
28
|
+
export const RULES = ['shogi', 'minishogi'];
|
|
35
29
|
//# sourceMappingURL=types.js.map
|
package/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["src/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["src/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU,CAAC;AAGjF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU,CAAC;AASjF,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,OAAO,EAAE,MAAM,CAAU,CAAC;AAQjD,wCAAwC;AACxC,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,MAAM;IACN,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,MAAM;IACN,QAAQ;IACR,OAAO;IACP,OAAO;IACP,gBAAgB;IAChB,gBAAgB;IAChB,eAAe;IACf,MAAM;CACE,CAAC;AAyBX,MAAM,UAAU,MAAM,CAAC,CAAO;IAC5B,OAAO,MAAM,IAAI,CAAC,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,CAAO;IAC9B,OAAO,MAAM,IAAI,CAAC,CAAC;AACrB,CAAC;AAED,0DAA0D;AAC1D,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,WAAW,CAAU,CAAC"}
|
package/util.d.ts
CHANGED
|
@@ -1,24 +1,21 @@
|
|
|
1
|
-
import { Color, Square, Role,
|
|
1
|
+
import { Color, Square, Role, Move, SquareName } from './types';
|
|
2
2
|
export declare function defined<A>(v: A | undefined): v is A;
|
|
3
3
|
export declare function opposite(color: Color): Color;
|
|
4
4
|
export declare function squareRank(square: Square): number;
|
|
5
5
|
export declare function squareFile(square: Square): number;
|
|
6
|
-
export declare function
|
|
7
|
-
export declare function promote(role: Role): Role;
|
|
8
|
-
export declare function roleToChar(role: Role): string;
|
|
6
|
+
export declare function roleToString(role: Role): string;
|
|
9
7
|
export declare function roleToCsa(role: Role): string;
|
|
10
8
|
export declare function csaToRole(str: string): Role | undefined;
|
|
11
9
|
export declare function roleTo1Kanji(role: Role): string;
|
|
12
10
|
export declare function roleTo2Kanji(role: Role): string;
|
|
13
11
|
export declare function kanjiToRole(str: string): Role | undefined;
|
|
14
|
-
export declare function
|
|
15
|
-
export declare function
|
|
12
|
+
export declare function stringToRole(ch: 'p' | 'l' | 'n' | 's' | 'g' | 'b' | 'r' | '+p' | '+l' | '+n' | '+s' | '+b' | '+r' | 'P' | 'L' | 'N' | 'S' | 'G' | 'B' | 'R' | '+P' | '+L' | '+N' | '+S' | '+B' | '+R'): Role;
|
|
13
|
+
export declare function stringToRole(ch: string): Role | undefined;
|
|
16
14
|
export declare function parseSquare(str: SquareName): Square;
|
|
17
15
|
export declare function parseSquare(str: string): Square | undefined;
|
|
18
16
|
export declare function makeSquare(square: Square): SquareName;
|
|
19
17
|
export declare function parseUsi(str: string): Move | undefined;
|
|
20
18
|
export declare function makeUsi(move: Move): string;
|
|
21
|
-
export declare function canPiecePromote(piece: Piece, from: Square, to: Square): boolean;
|
|
22
19
|
export declare function toBW(color: string): 'b' | 'w';
|
|
23
20
|
export declare function toBlackWhite(color: string): 'black' | 'white';
|
|
24
21
|
export declare function toColor(color: string): Color;
|
package/util.js
CHANGED
|
@@ -1,71 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.toColor = exports.toBlackWhite = exports.toBW = exports.canPiecePromote = exports.makeUsi = exports.parseUsi = exports.makeSquare = exports.parseSquare = exports.charToRole = exports.kanjiToRole = exports.roleTo2Kanji = exports.roleTo1Kanji = exports.csaToRole = exports.roleToCsa = exports.roleToChar = exports.promote = exports.unpromote = exports.squareFile = exports.squareRank = exports.opposite = exports.defined = void 0;
|
|
4
|
-
const squareSet_1 = require("./squareSet");
|
|
5
|
-
const types_1 = require("./types");
|
|
6
|
-
function defined(v) {
|
|
1
|
+
import { FILE_NAMES, RANK_NAMES, isDrop } from './types';
|
|
2
|
+
export function defined(v) {
|
|
7
3
|
return v !== undefined;
|
|
8
4
|
}
|
|
9
|
-
|
|
10
|
-
function opposite(color) {
|
|
5
|
+
export function opposite(color) {
|
|
11
6
|
return color === 'gote' ? 'sente' : 'gote';
|
|
12
7
|
}
|
|
13
|
-
|
|
14
|
-
function squareRank(square) {
|
|
8
|
+
// coordinate system starts at bottom left
|
|
9
|
+
export function squareRank(square) {
|
|
15
10
|
return Math.floor(square / 9);
|
|
16
11
|
}
|
|
17
|
-
|
|
18
|
-
function squareFile(square) {
|
|
12
|
+
export function squareFile(square) {
|
|
19
13
|
return square % 9;
|
|
20
14
|
}
|
|
21
|
-
|
|
22
|
-
function unpromote(role) {
|
|
23
|
-
switch (role) {
|
|
24
|
-
case 'pawn':
|
|
25
|
-
case 'tokin':
|
|
26
|
-
return 'pawn';
|
|
27
|
-
case 'lance':
|
|
28
|
-
case 'promotedlance':
|
|
29
|
-
return 'lance';
|
|
30
|
-
case 'knight':
|
|
31
|
-
case 'promotedknight':
|
|
32
|
-
return 'knight';
|
|
33
|
-
case 'silver':
|
|
34
|
-
case 'promotedsilver':
|
|
35
|
-
return 'silver';
|
|
36
|
-
case 'gold':
|
|
37
|
-
return 'gold';
|
|
38
|
-
case 'bishop':
|
|
39
|
-
case 'horse':
|
|
40
|
-
return 'bishop';
|
|
41
|
-
case 'rook':
|
|
42
|
-
case 'dragon':
|
|
43
|
-
return 'rook';
|
|
44
|
-
default:
|
|
45
|
-
return role;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
exports.unpromote = unpromote;
|
|
49
|
-
function promote(role) {
|
|
50
|
-
switch (role) {
|
|
51
|
-
case 'pawn':
|
|
52
|
-
return 'tokin';
|
|
53
|
-
case 'lance':
|
|
54
|
-
return 'promotedlance';
|
|
55
|
-
case 'knight':
|
|
56
|
-
return 'promotedknight';
|
|
57
|
-
case 'silver':
|
|
58
|
-
return 'promotedsilver';
|
|
59
|
-
case 'bishop':
|
|
60
|
-
return 'horse';
|
|
61
|
-
case 'rook':
|
|
62
|
-
return 'dragon';
|
|
63
|
-
default:
|
|
64
|
-
return role;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
exports.promote = promote;
|
|
68
|
-
function roleToChar(role) {
|
|
15
|
+
export function roleToString(role) {
|
|
69
16
|
switch (role) {
|
|
70
17
|
case 'pawn':
|
|
71
18
|
return 'p';
|
|
@@ -97,8 +44,7 @@ function roleToChar(role) {
|
|
|
97
44
|
return 'k';
|
|
98
45
|
}
|
|
99
46
|
}
|
|
100
|
-
|
|
101
|
-
function roleToCsa(role) {
|
|
47
|
+
export function roleToCsa(role) {
|
|
102
48
|
switch (role) {
|
|
103
49
|
case 'pawn':
|
|
104
50
|
return 'FU';
|
|
@@ -130,8 +76,7 @@ function roleToCsa(role) {
|
|
|
130
76
|
return 'OU';
|
|
131
77
|
}
|
|
132
78
|
}
|
|
133
|
-
|
|
134
|
-
function csaToRole(str) {
|
|
79
|
+
export function csaToRole(str) {
|
|
135
80
|
switch (str) {
|
|
136
81
|
case 'FU':
|
|
137
82
|
return 'pawn';
|
|
@@ -165,8 +110,7 @@ function csaToRole(str) {
|
|
|
165
110
|
return undefined;
|
|
166
111
|
}
|
|
167
112
|
}
|
|
168
|
-
|
|
169
|
-
function roleTo1Kanji(role) {
|
|
113
|
+
export function roleTo1Kanji(role) {
|
|
170
114
|
switch (role) {
|
|
171
115
|
case 'pawn':
|
|
172
116
|
return '歩';
|
|
@@ -198,8 +142,7 @@ function roleTo1Kanji(role) {
|
|
|
198
142
|
return '玉';
|
|
199
143
|
}
|
|
200
144
|
}
|
|
201
|
-
|
|
202
|
-
function roleTo2Kanji(role) {
|
|
145
|
+
export function roleTo2Kanji(role) {
|
|
203
146
|
switch (role) {
|
|
204
147
|
case 'promotedlance':
|
|
205
148
|
return '成香';
|
|
@@ -211,8 +154,7 @@ function roleTo2Kanji(role) {
|
|
|
211
154
|
return roleTo1Kanji(role);
|
|
212
155
|
}
|
|
213
156
|
}
|
|
214
|
-
|
|
215
|
-
function kanjiToRole(str) {
|
|
157
|
+
export function kanjiToRole(str) {
|
|
216
158
|
switch (str) {
|
|
217
159
|
case '歩':
|
|
218
160
|
return 'pawn';
|
|
@@ -250,8 +192,7 @@ function kanjiToRole(str) {
|
|
|
250
192
|
return undefined;
|
|
251
193
|
}
|
|
252
194
|
}
|
|
253
|
-
|
|
254
|
-
function charToRole(ch) {
|
|
195
|
+
export function stringToRole(ch) {
|
|
255
196
|
switch (ch) {
|
|
256
197
|
case 'P':
|
|
257
198
|
case 'p':
|
|
@@ -299,8 +240,7 @@ function charToRole(ch) {
|
|
|
299
240
|
return;
|
|
300
241
|
}
|
|
301
242
|
}
|
|
302
|
-
|
|
303
|
-
function parseSquare(str) {
|
|
243
|
+
export function parseSquare(str) {
|
|
304
244
|
if (str.length !== 2)
|
|
305
245
|
return;
|
|
306
246
|
const file = Math.abs(str.charCodeAt(0) - '9'.charCodeAt(0));
|
|
@@ -309,14 +249,12 @@ function parseSquare(str) {
|
|
|
309
249
|
return;
|
|
310
250
|
return file + 9 * rank;
|
|
311
251
|
}
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
return (types_1.FILE_NAMES[squareFile(square)] + types_1.RANK_NAMES[squareRank(square)]);
|
|
252
|
+
export function makeSquare(square) {
|
|
253
|
+
return (FILE_NAMES[squareFile(square)] + RANK_NAMES[squareRank(square)]);
|
|
315
254
|
}
|
|
316
|
-
|
|
317
|
-
function parseUsi(str) {
|
|
255
|
+
export function parseUsi(str) {
|
|
318
256
|
if (str[1] === '*' && str.length === 4) {
|
|
319
|
-
const role =
|
|
257
|
+
const role = stringToRole(str[0]);
|
|
320
258
|
const to = parseSquare(str.slice(2));
|
|
321
259
|
if (defined(role) && defined(to))
|
|
322
260
|
return { role, to };
|
|
@@ -330,35 +268,25 @@ function parseUsi(str) {
|
|
|
330
268
|
}
|
|
331
269
|
return;
|
|
332
270
|
}
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
return `${roleToChar(move.role).toUpperCase()}*${makeSquare(move.to)}`;
|
|
271
|
+
export function makeUsi(move) {
|
|
272
|
+
if (isDrop(move))
|
|
273
|
+
return `${roleToString(move.role).toUpperCase()}*${makeSquare(move.to)}`;
|
|
337
274
|
return makeSquare(move.from) + makeSquare(move.to) + (move.promotion ? '+' : '');
|
|
338
275
|
}
|
|
339
|
-
|
|
340
|
-
function canPiecePromote(piece, from, to) {
|
|
341
|
-
return (types_1.PROMOTABLE_ROLES.includes(piece.role) &&
|
|
342
|
-
(squareSet_1.SquareSet.promotionZone(piece.color).has(from) || squareSet_1.SquareSet.promotionZone(piece.color).has(to)));
|
|
343
|
-
}
|
|
344
|
-
exports.canPiecePromote = canPiecePromote;
|
|
345
|
-
function toBW(color) {
|
|
276
|
+
export function toBW(color) {
|
|
346
277
|
// white, w, gote, g
|
|
347
278
|
if (color[0] === 'w' || color[0] === 'g')
|
|
348
279
|
return 'w';
|
|
349
280
|
return 'b';
|
|
350
281
|
}
|
|
351
|
-
|
|
352
|
-
function toBlackWhite(color) {
|
|
282
|
+
export function toBlackWhite(color) {
|
|
353
283
|
if (color[0] === 'w' || color[0] === 'g')
|
|
354
284
|
return 'white';
|
|
355
285
|
return 'black';
|
|
356
286
|
}
|
|
357
|
-
|
|
358
|
-
function toColor(color) {
|
|
287
|
+
export function toColor(color) {
|
|
359
288
|
if (color[0] === 'w' || color[0] === 'g')
|
|
360
289
|
return 'gote';
|
|
361
290
|
return 'sente';
|
|
362
291
|
}
|
|
363
|
-
exports.toColor = toColor;
|
|
364
292
|
//# sourceMappingURL=util.js.map
|
package/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["src/util.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["src/util.ts"],"names":[],"mappings":"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"}
|
package/variant.d.ts
CHANGED
|
@@ -1,7 +1,18 @@
|
|
|
1
1
|
import { Result } from '@badrap/result';
|
|
2
|
-
import { Rules } from './types';
|
|
2
|
+
import { Role, Rules, Square } from './types';
|
|
3
3
|
import { Setup } from './setup';
|
|
4
4
|
import { PositionError, Position, IllegalSetup, Context, Shogi } from './shogi';
|
|
5
|
+
import { SquareSet } from './squareSet';
|
|
5
6
|
export { Position, PositionError, IllegalSetup, Context, Shogi };
|
|
6
7
|
export declare function defaultPosition(rules: Rules): Position;
|
|
7
8
|
export declare function setupPosition(rules: Rules, setup: Setup, strict?: boolean): Result<Position, PositionError>;
|
|
9
|
+
export declare class Minishogi extends Shogi {
|
|
10
|
+
protected constructor();
|
|
11
|
+
numberOfRanks: number;
|
|
12
|
+
numberOfFiles: number;
|
|
13
|
+
static default(): Minishogi;
|
|
14
|
+
static fromSetup(setup: Setup, strict: boolean): Result<Minishogi, PositionError>;
|
|
15
|
+
clone(): Minishogi;
|
|
16
|
+
dests(square: Square, ctx?: Context): SquareSet;
|
|
17
|
+
dropDests(role: Role, ctx?: Context): SquareSet;
|
|
18
|
+
}
|