shogiops 0.2.7 → 0.4.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.txt +0 -0
- package/README.md +0 -0
- package/attacks.d.ts +0 -0
- package/attacks.js +7 -7
- package/attacks.js.map +1 -1
- package/board.d.ts +3 -0
- package/board.js +31 -0
- package/board.js.map +1 -1
- package/compat.d.ts +6 -24
- package/compat.js +15 -171
- package/compat.js.map +1 -1
- package/csa.d.ts +4 -3
- package/csa.js +38 -33
- package/csa.js.map +1 -1
- package/csaUtil.d.ts +1 -1
- package/csaUtil.js +3 -3
- package/csaUtil.js.map +1 -1
- package/debug.d.ts +0 -0
- package/debug.js +29 -55
- package/debug.js.map +1 -1
- package/fen.d.ts +6 -5
- package/fen.js +53 -49
- package/fen.js.map +1 -1
- package/hand.d.ts +38 -0
- package/hand.js +74 -0
- package/hand.js.map +1 -0
- package/hash.d.ts +4 -3
- package/hash.js +9 -9
- package/hash.js.map +1 -1
- package/index.d.ts +4 -3
- package/index.js +3 -7
- package/index.js.map +1 -1
- package/kif.d.ts +5 -4
- package/kif.js +70 -65
- package/kif.js.map +1 -1
- package/kifHandicaps.d.ts +0 -0
- package/kifHandicaps.js +5 -0
- package/kifHandicaps.js.map +1 -1
- package/kifUtil.d.ts +0 -0
- package/kifUtil.js +4 -4
- package/kifUtil.js.map +1 -1
- package/package.json +9 -5
- package/setup.d.ts +2 -32
- package/setup.js +3 -74
- package/setup.js.map +1 -1
- package/shogi.d.ts +14 -7
- package/shogi.js +109 -106
- package/shogi.js.map +1 -1
- package/squareSet.d.ts +1 -5
- package/squareSet.js +0 -13
- package/squareSet.js.map +1 -1
- package/src/attacks.ts +0 -0
- package/src/board.ts +34 -0
- package/src/compat.ts +18 -197
- package/src/csa.ts +29 -21
- package/src/csaUtil.ts +3 -2
- package/src/debug.ts +25 -55
- package/src/fen.ts +42 -35
- package/src/hand.ts +94 -0
- package/src/hash.ts +8 -7
- package/src/index.ts +5 -5
- package/src/kif.ts +51 -43
- package/src/kifHandicaps.ts +5 -0
- package/src/kifUtil.ts +0 -0
- package/src/setup.ts +4 -91
- 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 +2 -68
- package/src/variant.ts +44 -3
- package/src/variantUtil.ts +160 -0
- package/transform.d.ts +0 -0
- package/transform.js +3 -1
- package/transform.js.map +1 -1
- package/types.d.ts +3 -7
- package/types.js +13 -14
- package/types.js.map +1 -1
- package/util.d.ts +1 -4
- package/util.js +2 -54
- package/util.js.map +1 -1
- package/variant.d.ts +12 -1
- package/variant.js +38 -3
- package/variant.js.map +1 -1
- package/variantUtil.d.ts +13 -0
- package/variantUtil.js +160 -0
- package/variantUtil.js.map +1 -0
- package/san.d.ts +0 -6
- package/san.js +0 -135
- package/san.js.map +0 -1
- 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.d.ts
CHANGED
|
File without changes
|
package/transform.js
CHANGED
|
@@ -25,6 +25,8 @@ function rotate180(s) {
|
|
|
25
25
|
exports.rotate180 = rotate180;
|
|
26
26
|
function transformBoard(board, f) {
|
|
27
27
|
const b = board_1.Board.empty();
|
|
28
|
+
b.numberOfFiles = board.numberOfFiles;
|
|
29
|
+
b.numberOfRanks = board.numberOfRanks;
|
|
28
30
|
b.occupied = f(board.occupied);
|
|
29
31
|
for (const color of types_1.COLORS)
|
|
30
32
|
b[color] = f(board[color]);
|
|
@@ -36,7 +38,7 @@ exports.transformBoard = transformBoard;
|
|
|
36
38
|
function transformSetup(setup, f) {
|
|
37
39
|
return {
|
|
38
40
|
board: transformBoard(setup.board, f),
|
|
39
|
-
|
|
41
|
+
hands: setup.hands.clone(),
|
|
40
42
|
turn: setup.turn,
|
|
41
43
|
fullmoves: setup.fullmoves,
|
|
42
44
|
};
|
package/transform.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transform.js","sourceRoot":"","sources":["src/transform.ts"],"names":[],"mappings":";;;AAAA,mCAAwC;AACxC,2CAAwC;AACxC,mCAAgC;AAGhC,SAAgB,YAAY,CAAC,CAAY;IACvC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;AACrB,CAAC;AAFD,oCAEC;AAED,SAAgB,cAAc,CAAC,CAAY;IACzC,MAAM,EAAE,GAAG,IAAI,qBAAS,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,aAAa;IACxE,MAAM,EAAE,GAAG,IAAI,qBAAS,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,oBAAoB;IAC/E,MAAM,EAAE,GAAG,IAAI,qBAAS,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,kBAAkB;IAC7E,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC,qBAAS,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;AATD,wCASC;AAED,SAAgB,SAAS,CAAC,CAAY;IACpC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;AACpB,CAAC;AAFD,8BAEC;AAED,SAAgB,cAAc,CAAC,KAAY,EAAE,CAA8B;IACzE,MAAM,CAAC,GAAG,aAAK,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC/B,KAAK,MAAM,KAAK,IAAI,cAAM;QAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACvD,KAAK,MAAM,IAAI,IAAI,aAAK;QAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACnD,OAAO,CAAC,CAAC;AACX,CAAC;
|
|
1
|
+
{"version":3,"file":"transform.js","sourceRoot":"","sources":["src/transform.ts"],"names":[],"mappings":";;;AAAA,mCAAwC;AACxC,2CAAwC;AACxC,mCAAgC;AAGhC,SAAgB,YAAY,CAAC,CAAY;IACvC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;AACrB,CAAC;AAFD,oCAEC;AAED,SAAgB,cAAc,CAAC,CAAY;IACzC,MAAM,EAAE,GAAG,IAAI,qBAAS,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,aAAa;IACxE,MAAM,EAAE,GAAG,IAAI,qBAAS,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,oBAAoB;IAC/E,MAAM,EAAE,GAAG,IAAI,qBAAS,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,kBAAkB;IAC7E,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC,qBAAS,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;AATD,wCASC;AAED,SAAgB,SAAS,CAAC,CAAY;IACpC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;AACpB,CAAC;AAFD,8BAEC;AAED,SAAgB,cAAc,CAAC,KAAY,EAAE,CAA8B;IACzE,MAAM,CAAC,GAAG,aAAK,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,cAAM;QAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACvD,KAAK,MAAM,IAAI,IAAI,aAAK;QAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACnD,OAAO,CAAC,CAAC;AACX,CAAC;AARD,wCAQC;AAED,SAAgB,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;AAPD,wCAOC"}
|
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,27 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RULES = exports.isNormal = exports.isDrop = exports.
|
|
3
|
+
exports.RULES = exports.isNormal = exports.isDrop = exports.ROLES = exports.COLORS = exports.RANK_NAMES = exports.FILE_NAMES = void 0;
|
|
4
4
|
exports.FILE_NAMES = ['9', '8', '7', '6', '5', '4', '3', '2', '1'];
|
|
5
5
|
exports.RANK_NAMES = ['i', 'h', 'g', 'f', 'e', 'd', 'c', 'b', 'a'];
|
|
6
6
|
exports.COLORS = ['sente', 'gote'];
|
|
7
|
+
// correct order for sfen hand exporting
|
|
7
8
|
exports.ROLES = [
|
|
8
|
-
'pawn',
|
|
9
|
-
'lance',
|
|
10
|
-
'knight',
|
|
11
|
-
'silver',
|
|
12
|
-
'gold',
|
|
13
|
-
'bishop',
|
|
14
9
|
'rook',
|
|
10
|
+
'bishop',
|
|
11
|
+
'gold',
|
|
12
|
+
'silver',
|
|
13
|
+
'knight',
|
|
14
|
+
'lance',
|
|
15
|
+
'pawn',
|
|
16
|
+
'dragon',
|
|
17
|
+
'horse',
|
|
15
18
|
'tokin',
|
|
16
|
-
'promotedlance',
|
|
17
|
-
'promotedknight',
|
|
18
19
|
'promotedsilver',
|
|
19
|
-
'
|
|
20
|
-
'
|
|
20
|
+
'promotedknight',
|
|
21
|
+
'promotedlance',
|
|
21
22
|
'king',
|
|
22
23
|
];
|
|
23
|
-
exports.POCKET_ROLES = ['rook', 'bishop', 'gold', 'silver', 'knight', 'lance', 'pawn'];
|
|
24
|
-
exports.PROMOTABLE_ROLES = ['pawn', 'lance', 'knight', 'silver', 'bishop', 'rook'];
|
|
25
24
|
function isDrop(v) {
|
|
26
25
|
return 'role' in v;
|
|
27
26
|
}
|
|
@@ -31,5 +30,5 @@ function isNormal(v) {
|
|
|
31
30
|
}
|
|
32
31
|
exports.isNormal = isNormal;
|
|
33
32
|
// variant will be added later, once lishogi supports them
|
|
34
|
-
exports.RULES = ['shogi'];
|
|
33
|
+
exports.RULES = ['shogi', 'minishogi'];
|
|
35
34
|
//# sourceMappingURL=types.js.map
|
package/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["src/types.ts"],"names":[],"mappings":";;;AAAa,QAAA,UAAU,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU,CAAC;AAGpE,QAAA,UAAU,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU,CAAC;AASpE,QAAA,MAAM,GAAG,CAAC,OAAO,EAAE,MAAM,CAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["src/types.ts"],"names":[],"mappings":";;;AAAa,QAAA,UAAU,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU,CAAC;AAGpE,QAAA,UAAU,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU,CAAC;AASpE,QAAA,MAAM,GAAG,CAAC,OAAO,EAAE,MAAM,CAAU,CAAC;AAQjD,wCAAwC;AAC3B,QAAA,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,SAAgB,MAAM,CAAC,CAAO;IAC5B,OAAO,MAAM,IAAI,CAAC,CAAC;AACrB,CAAC;AAFD,wBAEC;AAED,SAAgB,QAAQ,CAAC,CAAO;IAC9B,OAAO,MAAM,IAAI,CAAC,CAAC;AACrB,CAAC;AAFD,4BAEC;AAED,0DAA0D;AAC7C,QAAA,KAAK,GAAG,CAAC,OAAO,EAAE,WAAW,CAAU,CAAC"}
|
package/util.d.ts
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
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 unpromote(role: Role): PocketRole | 'king';
|
|
7
|
-
export declare function promote(role: Role): Role;
|
|
8
6
|
export declare function roleToChar(role: Role): string;
|
|
9
7
|
export declare function roleToCsa(role: Role): string;
|
|
10
8
|
export declare function csaToRole(str: string): Role | undefined;
|
|
@@ -18,7 +16,6 @@ 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,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.toColor = exports.toBlackWhite = exports.toBW = exports.
|
|
4
|
-
const squareSet_1 = require("./squareSet");
|
|
3
|
+
exports.toColor = exports.toBlackWhite = exports.toBW = exports.makeUsi = exports.parseUsi = exports.makeSquare = exports.parseSquare = exports.charToRole = exports.kanjiToRole = exports.roleTo2Kanji = exports.roleTo1Kanji = exports.csaToRole = exports.roleToCsa = exports.roleToChar = exports.squareFile = exports.squareRank = exports.opposite = exports.defined = void 0;
|
|
5
4
|
const types_1 = require("./types");
|
|
6
5
|
function defined(v) {
|
|
7
6
|
return v !== undefined;
|
|
@@ -19,52 +18,6 @@ function squareFile(square) {
|
|
|
19
18
|
return square % 9;
|
|
20
19
|
}
|
|
21
20
|
exports.squareFile = squareFile;
|
|
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
21
|
function roleToChar(role) {
|
|
69
22
|
switch (role) {
|
|
70
23
|
case 'pawn':
|
|
@@ -332,16 +285,11 @@ function parseUsi(str) {
|
|
|
332
285
|
}
|
|
333
286
|
exports.parseUsi = parseUsi;
|
|
334
287
|
function makeUsi(move) {
|
|
335
|
-
if (
|
|
288
|
+
if (types_1.isDrop(move))
|
|
336
289
|
return `${roleToChar(move.role).toUpperCase()}*${makeSquare(move.to)}`;
|
|
337
290
|
return makeSquare(move.from) + makeSquare(move.to) + (move.promotion ? '+' : '');
|
|
338
291
|
}
|
|
339
292
|
exports.makeUsi = makeUsi;
|
|
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
293
|
function toBW(color) {
|
|
346
294
|
// white, w, gote, g
|
|
347
295
|
if (color[0] === 'w' || color[0] === 'g')
|
package/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["src/util.ts"],"names":[],"mappings":";;;AAAA,
|
|
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
|
+
}
|
package/variant.js
CHANGED
|
@@ -1,23 +1,58 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.setupPosition = exports.defaultPosition = exports.Shogi = exports.IllegalSetup = exports.PositionError = exports.Position = void 0;
|
|
3
|
+
exports.Minishogi = exports.setupPosition = exports.defaultPosition = exports.Shogi = exports.IllegalSetup = exports.PositionError = exports.Position = void 0;
|
|
4
4
|
const shogi_1 = require("./shogi");
|
|
5
5
|
Object.defineProperty(exports, "PositionError", { enumerable: true, get: function () { return shogi_1.PositionError; } });
|
|
6
6
|
Object.defineProperty(exports, "Position", { enumerable: true, get: function () { return shogi_1.Position; } });
|
|
7
7
|
Object.defineProperty(exports, "IllegalSetup", { enumerable: true, get: function () { return shogi_1.IllegalSetup; } });
|
|
8
8
|
Object.defineProperty(exports, "Shogi", { enumerable: true, get: function () { return shogi_1.Shogi; } });
|
|
9
|
+
const squareSet_1 = require("./squareSet");
|
|
10
|
+
const board_1 = require("./board");
|
|
11
|
+
const hand_1 = require("./hand");
|
|
9
12
|
function defaultPosition(rules) {
|
|
10
13
|
switch (rules) {
|
|
11
|
-
case '
|
|
14
|
+
case 'minishogi':
|
|
15
|
+
return Minishogi.default();
|
|
16
|
+
default:
|
|
12
17
|
return shogi_1.Shogi.default();
|
|
13
18
|
}
|
|
14
19
|
}
|
|
15
20
|
exports.defaultPosition = defaultPosition;
|
|
16
21
|
function setupPosition(rules, setup, strict = true) {
|
|
17
22
|
switch (rules) {
|
|
18
|
-
case '
|
|
23
|
+
case 'minishogi':
|
|
24
|
+
return Minishogi.fromSetup(setup, strict);
|
|
25
|
+
default:
|
|
19
26
|
return shogi_1.Shogi.fromSetup(setup, strict);
|
|
20
27
|
}
|
|
21
28
|
}
|
|
22
29
|
exports.setupPosition = setupPosition;
|
|
30
|
+
class Minishogi extends shogi_1.Shogi {
|
|
31
|
+
constructor() {
|
|
32
|
+
super('minishogi');
|
|
33
|
+
this.numberOfRanks = 5;
|
|
34
|
+
this.numberOfFiles = 5;
|
|
35
|
+
}
|
|
36
|
+
static default() {
|
|
37
|
+
const pos = new this();
|
|
38
|
+
pos.board = board_1.Board.minishogi();
|
|
39
|
+
pos.hands = hand_1.Hands.empty();
|
|
40
|
+
pos.turn = 'sente';
|
|
41
|
+
pos.fullmoves = 1;
|
|
42
|
+
return pos;
|
|
43
|
+
}
|
|
44
|
+
static fromSetup(setup, strict) {
|
|
45
|
+
return super.fromSetup(setup, strict);
|
|
46
|
+
}
|
|
47
|
+
clone() {
|
|
48
|
+
return super.clone();
|
|
49
|
+
}
|
|
50
|
+
dests(square, ctx) {
|
|
51
|
+
return super.dests(square, ctx).intersect(new squareSet_1.SquareSet(0x0, 0x7c3e000, 0x7c3e1f0));
|
|
52
|
+
}
|
|
53
|
+
dropDests(role, ctx) {
|
|
54
|
+
return super.dropDests(role, ctx).intersect(new squareSet_1.SquareSet(0x0, 0x7c3e000, 0x7c3e1f0));
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
exports.Minishogi = Minishogi;
|
|
23
58
|
//# sourceMappingURL=variant.js.map
|
package/variant.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"variant.js","sourceRoot":"","sources":["src/variant.ts"],"names":[],"mappings":";;;AAGA,mCAAgF;
|
|
1
|
+
{"version":3,"file":"variant.js","sourceRoot":"","sources":["src/variant.ts"],"names":[],"mappings":";;;AAGA,mCAAgF;AAK7D,8FALV,qBAAa,OAKU;AAAvB,yFALe,gBAAQ,OAKf;AAAiB,6FALA,oBAAY,OAKA;AAAW,sFALA,aAAK,OAKA;AAJ9D,2CAAwC;AACxC,mCAAgC;AAChC,iCAA+B;AAI/B,SAAgB,eAAe,CAAC,KAAY;IAC1C,QAAQ,KAAK,EAAE;QACb,KAAK,WAAW;YACd,OAAO,SAAS,CAAC,OAAO,EAAE,CAAC;QAC7B;YACE,OAAO,aAAK,CAAC,OAAO,EAAE,CAAC;KAC1B;AACH,CAAC;AAPD,0CAOC;AAED,SAAgB,aAAa,CAAC,KAAY,EAAE,KAAY,EAAE,MAAM,GAAG,IAAI;IACrE,QAAQ,KAAK,EAAE;QACb,KAAK,WAAW;YACd,OAAO,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC5C;YACE,OAAO,aAAK,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;KACzC;AACH,CAAC;AAPD,sCAOC;AAED,MAAa,SAAU,SAAQ,aAAK;IAClC;QACE,KAAK,CAAC,WAAW,CAAC,CAAC;QAGrB,kBAAa,GAAG,CAAC,CAAC;QAClB,kBAAa,GAAG,CAAC,CAAC;IAHlB,CAAC;IAKD,MAAM,CAAC,OAAO;QACZ,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,GAAG,CAAC,KAAK,GAAG,aAAK,CAAC,SAAS,EAAE,CAAC;QAC9B,GAAG,CAAC,KAAK,GAAG,YAAK,CAAC,KAAK,EAAE,CAAC;QAC1B,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC;QACnB,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;QAClB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,KAAY,EAAE,MAAe;QAC5C,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAqC,CAAC;IAC5E,CAAC;IAED,KAAK;QACH,OAAO,KAAK,CAAC,KAAK,EAAe,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,MAAc,EAAE,GAAa;QACjC,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,IAAI,qBAAS,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IACtF,CAAC;IAED,SAAS,CAAC,IAAU,EAAE,GAAa;QACjC,OAAO,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,IAAI,qBAAS,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IACxF,CAAC;CACF;AAhCD,8BAgCC"}
|
package/variantUtil.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Piece, Square } from '.';
|
|
2
|
+
import { SquareSet } from './squareSet';
|
|
3
|
+
import { Color, Role, Rules } from './types';
|
|
4
|
+
export declare function pieceCanPromote(rules: Rules): (piece: Piece, from: Square, to: Square) => boolean;
|
|
5
|
+
export declare function pieceInDeadZone(rules: Rules): (piece: Piece, sq: Square) => boolean;
|
|
6
|
+
export declare function allRoles(rules: Rules): Role[];
|
|
7
|
+
export declare function handRoles(rules: Rules): Role[];
|
|
8
|
+
export declare function promotableRoles(rules: Rules): Role[];
|
|
9
|
+
export declare function promote(rules: Rules): (role: Role) => Role;
|
|
10
|
+
export declare function unpromote(rules: Rules): (role: Role) => Role;
|
|
11
|
+
export declare function promotionZone(rules: Rules): (color: Color) => SquareSet;
|
|
12
|
+
export declare function backrank(rules: Rules): (color: Color) => SquareSet;
|
|
13
|
+
export declare function secondBackrank(rules: Rules): (color: Color) => SquareSet;
|