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
package/kif.js
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.makeKifVariation = exports.makeKifMove = exports.parseKifMoves = exports.parseKifMove = exports.parseTags = exports.parseKifHand = exports.parseKifBoard = exports.parseKifPositionHeader = exports.parseKifHeader = exports.
|
|
3
|
+
exports.makeKifVariation = exports.makeKifMove = exports.parseKifMoves = exports.parseKifMove = exports.parseTags = exports.parseKifHand = exports.parseKifBoard = exports.parseKifPositionHeader = exports.parseKifHeader = exports.makeKifHand = exports.makeKifBoard = exports.makeKifPositionHeader = exports.makeKifHeader = exports.KifError = exports.InvalidKif = void 0;
|
|
4
4
|
const result_1 = require("@badrap/result");
|
|
5
5
|
const board_1 = require("./board");
|
|
6
6
|
const fen_1 = require("./fen");
|
|
7
7
|
const kifHandicaps_1 = require("./kifHandicaps");
|
|
8
|
-
const setup_1 = require("./setup");
|
|
9
8
|
const types_1 = require("./types");
|
|
10
9
|
const util_1 = require("./util");
|
|
11
10
|
const kifUtil_1 = require("./kifUtil");
|
|
11
|
+
const hand_1 = require("./hand");
|
|
12
|
+
const variantUtil_1 = require("./variantUtil");
|
|
12
13
|
//
|
|
13
14
|
// KIF HEADER
|
|
14
15
|
//
|
|
@@ -17,94 +18,94 @@ var InvalidKif;
|
|
|
17
18
|
InvalidKif["Kif"] = "ERR_KIF";
|
|
18
19
|
InvalidKif["Board"] = "ERR_BOARD";
|
|
19
20
|
InvalidKif["Handicap"] = "ERR_HANDICAP";
|
|
20
|
-
InvalidKif["
|
|
21
|
+
InvalidKif["Hands"] = "ERR_HANDS";
|
|
21
22
|
})(InvalidKif = exports.InvalidKif || (exports.InvalidKif = {}));
|
|
22
23
|
class KifError extends Error {
|
|
23
24
|
}
|
|
24
25
|
exports.KifError = KifError;
|
|
25
26
|
// Export
|
|
26
27
|
function makeKifHeader(setup) {
|
|
27
|
-
const handicap =
|
|
28
|
-
if (
|
|
28
|
+
const handicap = kifHandicaps_1.sfenToHandicapName(fen_1.makeFen(setup, { epd: true }));
|
|
29
|
+
if (util_1.defined(handicap))
|
|
29
30
|
return '手合割:' + handicap;
|
|
30
31
|
return makeKifPositionHeader(setup);
|
|
31
32
|
}
|
|
32
33
|
exports.makeKifHeader = makeKifHeader;
|
|
33
34
|
function makeKifPositionHeader(setup) {
|
|
34
35
|
return [
|
|
35
|
-
'後手の持駒:' +
|
|
36
|
+
'後手の持駒:' + makeKifHand(setup.hands.gote),
|
|
36
37
|
makeKifBoard(setup.board),
|
|
37
|
-
'先手の持駒:' +
|
|
38
|
+
'先手の持駒:' + makeKifHand(setup.hands.sente),
|
|
38
39
|
...(setup.turn === 'gote' ? ['後手番'] : []),
|
|
39
40
|
].join('\n');
|
|
40
41
|
}
|
|
41
42
|
exports.makeKifPositionHeader = makeKifPositionHeader;
|
|
42
43
|
function makeKifBoard(board) {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
const kifFiles = ' 9 8 7 6 5 4 3 2 1'.slice(-(board.numberOfFiles * 2));
|
|
45
|
+
const separator = '+' + '-'.repeat(board.numberOfFiles * 3) + '+';
|
|
46
|
+
const offset = 9 - board.numberOfFiles;
|
|
47
|
+
let kifBoard = ' ' + kifFiles + `\n${separator}\n`;
|
|
48
|
+
for (let rank = 8; rank >= 9 - board.numberOfRanks; rank--) {
|
|
49
|
+
for (let file = offset; file < 9; file++) {
|
|
46
50
|
const square = file + rank * 9;
|
|
47
51
|
const piece = board.get(square);
|
|
48
|
-
if (file ===
|
|
52
|
+
if (file === offset) {
|
|
49
53
|
kifBoard += '|';
|
|
50
54
|
}
|
|
51
55
|
if (!piece)
|
|
52
56
|
kifBoard += ' ・';
|
|
53
57
|
else {
|
|
54
58
|
if (piece.color === 'gote')
|
|
55
|
-
kifBoard += 'v' +
|
|
59
|
+
kifBoard += 'v' + util_1.roleTo1Kanji(piece.role);
|
|
56
60
|
else
|
|
57
|
-
kifBoard += ' ' +
|
|
61
|
+
kifBoard += ' ' + util_1.roleTo1Kanji(piece.role);
|
|
58
62
|
}
|
|
59
63
|
if (file === 8) {
|
|
60
|
-
kifBoard += '|' +
|
|
64
|
+
kifBoard += '|' + kifUtil_1.numberToKanji(9 - rank) + '\n';
|
|
61
65
|
}
|
|
62
66
|
}
|
|
63
67
|
}
|
|
64
|
-
kifBoard +=
|
|
68
|
+
kifBoard += separator;
|
|
65
69
|
return kifBoard;
|
|
66
70
|
}
|
|
67
71
|
exports.makeKifBoard = makeKifBoard;
|
|
68
|
-
function
|
|
69
|
-
if (
|
|
72
|
+
function makeKifHand(hand) {
|
|
73
|
+
if (hand.isEmpty())
|
|
70
74
|
return 'なし';
|
|
71
|
-
return
|
|
72
|
-
|
|
73
|
-
const
|
|
74
|
-
|
|
75
|
+
return variantUtil_1.handRoles('shogi')
|
|
76
|
+
.map(role => {
|
|
77
|
+
const r = util_1.roleTo1Kanji(role);
|
|
78
|
+
const n = hand[role];
|
|
79
|
+
return n > 1 ? r + kifUtil_1.numberToKanji(n) : n === 1 ? r : '';
|
|
75
80
|
})
|
|
76
81
|
.filter(p => p.length > 0)
|
|
77
82
|
.join(' ');
|
|
78
83
|
}
|
|
79
|
-
exports.
|
|
84
|
+
exports.makeKifHand = makeKifHand;
|
|
80
85
|
// Import
|
|
81
86
|
function parseKifHeader(kif) {
|
|
82
|
-
const lines =
|
|
87
|
+
const lines = kifUtil_1.normalizedKifLines(kif);
|
|
83
88
|
const handicap = lines.find(l => l.startsWith('手合割:'));
|
|
84
|
-
const hSfen =
|
|
89
|
+
const hSfen = util_1.defined(handicap) ? kifHandicaps_1.handicapNameToSfen(handicap.split(':')[1]) : fen_1.INITIAL_FEN;
|
|
85
90
|
return parseKifPositionHeader(kif).unwrap(kifBoard => result_1.Result.ok(kifBoard), () => {
|
|
86
|
-
if (!
|
|
91
|
+
if (!util_1.defined(hSfen))
|
|
87
92
|
return result_1.Result.err(new KifError(InvalidKif.Handicap));
|
|
88
|
-
return
|
|
93
|
+
return fen_1.parseFen(hSfen);
|
|
89
94
|
});
|
|
90
95
|
}
|
|
91
96
|
exports.parseKifHeader = parseKifHeader;
|
|
92
97
|
function parseKifPositionHeader(kif) {
|
|
93
|
-
const lines =
|
|
94
|
-
const
|
|
95
|
-
const
|
|
98
|
+
const lines = kifUtil_1.normalizedKifLines(kif);
|
|
99
|
+
const goteHandStr = lines.find(l => l.startsWith('後手の持駒:'));
|
|
100
|
+
const senteHandStr = lines.find(l => l.startsWith('先手の持駒:'));
|
|
96
101
|
const turn = lines.some(l => l.startsWith('後手番')) ? 'gote' : 'sente';
|
|
97
102
|
const board = parseKifBoard(kif);
|
|
98
|
-
const
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
const sentePocket = (0, util_1.defined)(sentePocketStr)
|
|
102
|
-
? parseKifHand(sentePocketStr.split(':')[1])
|
|
103
|
-
: result_1.Result.ok(setup_1.MaterialSide.empty());
|
|
104
|
-
return board.chain(board => gotePocket.chain(gPocket => sentePocket.map(sPocket => {
|
|
103
|
+
const goteHand = util_1.defined(goteHandStr) ? parseKifHand(goteHandStr.split(':')[1]) : result_1.Result.ok(hand_1.Hand.empty());
|
|
104
|
+
const senteHand = util_1.defined(senteHandStr) ? parseKifHand(senteHandStr.split(':')[1]) : result_1.Result.ok(hand_1.Hand.empty());
|
|
105
|
+
return board.chain(board => goteHand.chain(gHand => senteHand.map(sHand => {
|
|
105
106
|
return {
|
|
106
107
|
board,
|
|
107
|
-
|
|
108
|
+
hands: new hand_1.Hands(gHand, sHand),
|
|
108
109
|
turn,
|
|
109
110
|
fullmoves: 1,
|
|
110
111
|
};
|
|
@@ -112,14 +113,18 @@ function parseKifPositionHeader(kif) {
|
|
|
112
113
|
}
|
|
113
114
|
exports.parseKifPositionHeader = parseKifPositionHeader;
|
|
114
115
|
function parseKifBoard(kifBoard) {
|
|
115
|
-
const lines =
|
|
116
|
-
if (lines.length
|
|
116
|
+
const lines = kifUtil_1.normalizedKifLines(kifBoard).filter(l => l.startsWith('|'));
|
|
117
|
+
if (lines.length === 0)
|
|
117
118
|
return result_1.Result.err(new KifError(InvalidKif.Board));
|
|
118
119
|
const board = board_1.Board.empty();
|
|
119
|
-
|
|
120
|
+
// assuming square board
|
|
121
|
+
board.numberOfRanks = lines.length;
|
|
122
|
+
board.numberOfFiles = lines.length;
|
|
123
|
+
const offset = 9 - lines.length;
|
|
124
|
+
let file = offset;
|
|
120
125
|
let rank = 9;
|
|
121
126
|
for (const l of lines) {
|
|
122
|
-
file =
|
|
127
|
+
file = offset;
|
|
123
128
|
rank--;
|
|
124
129
|
let gote = false;
|
|
125
130
|
let prom = false;
|
|
@@ -137,10 +142,10 @@ function parseKifBoard(kifBoard) {
|
|
|
137
142
|
default:
|
|
138
143
|
if (file > 9 || rank < 0)
|
|
139
144
|
return result_1.Result.err(new KifError(InvalidKif.Board));
|
|
140
|
-
const role =
|
|
141
|
-
if (
|
|
145
|
+
const role = util_1.kanjiToRole(c);
|
|
146
|
+
if (util_1.defined(role) && variantUtil_1.allRoles('shogi').includes(role)) {
|
|
142
147
|
const square = file + rank * 9;
|
|
143
|
-
const piece = { role: prom ?
|
|
148
|
+
const piece = { role: prom ? variantUtil_1.promote('shogi')(role) : role, color: (gote ? 'gote' : 'sente') };
|
|
144
149
|
board.set(square, piece);
|
|
145
150
|
prom = false;
|
|
146
151
|
gote = false;
|
|
@@ -149,33 +154,33 @@ function parseKifBoard(kifBoard) {
|
|
|
149
154
|
}
|
|
150
155
|
}
|
|
151
156
|
}
|
|
152
|
-
if (rank !==
|
|
157
|
+
if (rank !== 9 - lines.length || file !== 9)
|
|
153
158
|
return result_1.Result.err(new KifError(InvalidKif.Board));
|
|
154
159
|
return result_1.Result.ok(board);
|
|
155
160
|
}
|
|
156
161
|
exports.parseKifBoard = parseKifBoard;
|
|
157
|
-
function parseKifHand(
|
|
158
|
-
const
|
|
159
|
-
const pieces =
|
|
160
|
-
if (
|
|
161
|
-
return result_1.Result.ok(
|
|
162
|
+
function parseKifHand(handPart) {
|
|
163
|
+
const hand = hand_1.Hand.empty();
|
|
164
|
+
const pieces = handPart.replace(/ /g, ' ').trim().split(' ');
|
|
165
|
+
if (handPart.includes('なし'))
|
|
166
|
+
return result_1.Result.ok(hand);
|
|
162
167
|
for (const piece of pieces) {
|
|
163
168
|
for (let i = 0; i < piece.length; i++) {
|
|
164
|
-
const role =
|
|
165
|
-
if (!role)
|
|
166
|
-
return result_1.Result.err(new KifError(InvalidKif.
|
|
169
|
+
const role = util_1.kanjiToRole(piece[i++]);
|
|
170
|
+
if (!role || !variantUtil_1.handRoles('shogi').includes(role))
|
|
171
|
+
return result_1.Result.err(new KifError(InvalidKif.Hands));
|
|
167
172
|
let countStr = '';
|
|
168
173
|
while (i < piece.length && ['一', '二', '三', '四', '五', '六', '七', '八', '九', '十'].includes(piece[i]))
|
|
169
174
|
countStr += piece[i++];
|
|
170
|
-
const count =
|
|
171
|
-
|
|
175
|
+
const count = kifUtil_1.kanjiToNumber(countStr) || 1;
|
|
176
|
+
hand[role] += count;
|
|
172
177
|
}
|
|
173
178
|
}
|
|
174
|
-
return result_1.Result.ok(
|
|
179
|
+
return result_1.Result.ok(hand);
|
|
175
180
|
}
|
|
176
181
|
exports.parseKifHand = parseKifHand;
|
|
177
182
|
function parseTags(kif) {
|
|
178
|
-
return
|
|
183
|
+
return kifUtil_1.normalizedKifLines(kif)
|
|
179
184
|
.filter(l => !l.startsWith('#') && !l.startsWith('*'))
|
|
180
185
|
.map(l => l.replace(':', ':').split(/:(.*)/, 2));
|
|
181
186
|
}
|
|
@@ -194,14 +199,14 @@ function parseKifMove(kifMove, lastDest = undefined) {
|
|
|
194
199
|
if (!match)
|
|
195
200
|
return;
|
|
196
201
|
const move = {
|
|
197
|
-
role:
|
|
198
|
-
to: (_a =
|
|
202
|
+
role: util_1.kanjiToRole(match[2]),
|
|
203
|
+
to: (_a = kifUtil_1.parseKifSquare(match[1])) !== null && _a !== void 0 ? _a : lastDest,
|
|
199
204
|
};
|
|
200
205
|
return move;
|
|
201
206
|
}
|
|
202
207
|
return {
|
|
203
|
-
from:
|
|
204
|
-
to: (_b =
|
|
208
|
+
from: kifUtil_1.parseKifSquare(match[4]),
|
|
209
|
+
to: (_b = kifUtil_1.parseKifSquare(match[1])) !== null && _b !== void 0 ? _b : lastDest,
|
|
205
210
|
promotion: !!match[3],
|
|
206
211
|
};
|
|
207
212
|
}
|
|
@@ -220,15 +225,15 @@ function parseKifMoves(kifMoves, lastDest = undefined) {
|
|
|
220
225
|
exports.parseKifMoves = parseKifMoves;
|
|
221
226
|
// Making kif formatted moves
|
|
222
227
|
function makeKifMove(pos, move, same = false) {
|
|
223
|
-
const moveDest = same ? '同 ' :
|
|
224
|
-
if (
|
|
225
|
-
return moveDest +
|
|
228
|
+
const moveDest = same ? '同 ' : kifUtil_1.kifDestSquare(move.to);
|
|
229
|
+
if (types_1.isDrop(move)) {
|
|
230
|
+
return moveDest + util_1.roleTo1Kanji(move.role) + '打';
|
|
226
231
|
}
|
|
227
232
|
else {
|
|
228
233
|
const role = pos.board.getRole(move.from);
|
|
229
234
|
if (!role)
|
|
230
235
|
return '反則';
|
|
231
|
-
return moveDest +
|
|
236
|
+
return moveDest + util_1.roleTo2Kanji(role) + (move.promotion ? '成' : '') + '(' + kifUtil_1.kifOrigSquare(move.from) + ')';
|
|
232
237
|
}
|
|
233
238
|
}
|
|
234
239
|
exports.makeKifMove = makeKifMove;
|
package/kif.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kif.js","sourceRoot":"","sources":["src/kif.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AACxC,mCAAgC;AAChC,+BAAuD;AACvD,iDAAwE;
|
|
1
|
+
{"version":3,"file":"kif.js","sourceRoot":"","sources":["src/kif.ts"],"names":[],"mappings":"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"}
|
package/kifHandicaps.d.ts
CHANGED
|
File without changes
|
package/kifHandicaps.js
CHANGED
|
@@ -26,6 +26,9 @@ function sfenToHandicapName(sfen) {
|
|
|
26
26
|
return '八枚落ち';
|
|
27
27
|
case '4k4/9/ppppppppp/9/9/9/PPPPPPPPP/1B5R1/LNSGKGSNL w -':
|
|
28
28
|
return '十枚落ち';
|
|
29
|
+
// minishogi
|
|
30
|
+
case 'rbsgk/4p/5/P4/KGSBR b -':
|
|
31
|
+
return '五々将棋';
|
|
29
32
|
default:
|
|
30
33
|
return undefined;
|
|
31
34
|
}
|
|
@@ -82,6 +85,8 @@ function handicapNameToSfen(name) {
|
|
|
82
85
|
return '2sgkgs2/9/ppppppppp/9/9/9/PPPPPPPPP/1B5R1/LNSGKGSNL w RB2N2L 1';
|
|
83
86
|
case '八枚得':
|
|
84
87
|
return '3gkg3/9/ppppppppp/9/9/9/PPPPPPPPP/1B5R1/LNSGKGSNL w RB2S2N2L 1';
|
|
88
|
+
case '五々将棋':
|
|
89
|
+
return 'rbsgk/4p/5/P4/KGSBR b - 1';
|
|
85
90
|
default:
|
|
86
91
|
return undefined;
|
|
87
92
|
}
|
package/kifHandicaps.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kifHandicaps.js","sourceRoot":"","sources":["src/kifHandicaps.ts"],"names":[],"mappings":";;;AAAA,2CAA2C;AAC3C,SAAgB,kBAAkB,CAAC,IAAY;IAC7C,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QAC7C,KAAK,+DAA+D;YAClE,OAAO,IAAI,CAAC;QACd,KAAK,+DAA+D;YAClE,OAAO,KAAK,CAAC;QACf,KAAK,+DAA+D;YAClE,OAAO,MAAM,CAAC;QAChB,KAAK,6DAA6D;YAChE,OAAO,KAAK,CAAC;QACf,KAAK,6DAA6D;YAChE,OAAO,MAAM,CAAC;QAChB,KAAK,6DAA6D;YAChE,OAAO,MAAM,CAAC;QAChB,KAAK,2DAA2D;YAC9D,OAAO,MAAM,CAAC;QAChB,KAAK,2DAA2D;YAC9D,OAAO,MAAM,CAAC;QAChB,KAAK,yDAAyD;YAC5D,OAAO,MAAM,CAAC;QAChB,KAAK,uDAAuD;YAC1D,OAAO,MAAM,CAAC;QAChB,KAAK,qDAAqD;YACxD,OAAO,MAAM,CAAC;QAChB;YACE,OAAO,SAAS,CAAC;KACpB;AACH,CAAC;
|
|
1
|
+
{"version":3,"file":"kifHandicaps.js","sourceRoot":"","sources":["src/kifHandicaps.ts"],"names":[],"mappings":";;;AAAA,2CAA2C;AAC3C,SAAgB,kBAAkB,CAAC,IAAY;IAC7C,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QAC7C,KAAK,+DAA+D;YAClE,OAAO,IAAI,CAAC;QACd,KAAK,+DAA+D;YAClE,OAAO,KAAK,CAAC;QACf,KAAK,+DAA+D;YAClE,OAAO,MAAM,CAAC;QAChB,KAAK,6DAA6D;YAChE,OAAO,KAAK,CAAC;QACf,KAAK,6DAA6D;YAChE,OAAO,MAAM,CAAC;QAChB,KAAK,6DAA6D;YAChE,OAAO,MAAM,CAAC;QAChB,KAAK,2DAA2D;YAC9D,OAAO,MAAM,CAAC;QAChB,KAAK,2DAA2D;YAC9D,OAAO,MAAM,CAAC;QAChB,KAAK,yDAAyD;YAC5D,OAAO,MAAM,CAAC;QAChB,KAAK,uDAAuD;YAC1D,OAAO,MAAM,CAAC;QAChB,KAAK,qDAAqD;YACxD,OAAO,MAAM,CAAC;QAChB,YAAY;QACZ,KAAK,yBAAyB;YAC5B,OAAO,MAAM,CAAC;QAChB;YACE,OAAO,SAAS,CAAC;KACpB;AACH,CAAC;AA9BD,gDA8BC;AAED,2BAA2B;AAC3B,SAAgB,kBAAkB,CAAC,IAAY;IAC7C,QAAQ,IAAI,EAAE;QACZ,KAAK,IAAI;YACP,OAAO,iEAAiE,CAAC;QAC3E,KAAK,KAAK;YACR,OAAO,iEAAiE,CAAC;QAC3E,KAAK,MAAM;YACT,OAAO,iEAAiE,CAAC;QAC3E,KAAK,KAAK;YACR,OAAO,+DAA+D,CAAC;QACzE,KAAK,MAAM;YACT,OAAO,+DAA+D,CAAC;QACzE,KAAK,MAAM;YACT,OAAO,+DAA+D,CAAC;QACzE,KAAK,MAAM;YACT,OAAO,6DAA6D,CAAC;QACvE,KAAK,MAAM;YACT,OAAO,6DAA6D,CAAC;QACvE,KAAK,MAAM;YACT,OAAO,2DAA2D,CAAC;QACrE,KAAK,MAAM;YACT,OAAO,yDAAyD,CAAC;QACnE,KAAK,MAAM;YACT,OAAO,uDAAuD,CAAC;QACjE,KAAK,KAAK;YACR,OAAO,gDAAgD,CAAC;QAC1D,KAAK,IAAI;YACP,OAAO,+CAA+C,CAAC;QACzD,KAAK,QAAQ;YACX,OAAO,+DAA+D,CAAC;QACzE,KAAK,OAAO;YACV,OAAO,6DAA6D,CAAC;QACvE,KAAK,KAAK;YACR,OAAO,2DAA2D,CAAC;QACrE,KAAK,IAAI;YACP,OAAO,iEAAiE,CAAC;QAC3E,KAAK,IAAI;YACP,OAAO,+DAA+D,CAAC;QACzE,KAAK,KAAK;YACR,OAAO,+DAA+D,CAAC;QACzE,KAAK,KAAK;YACR,OAAO,gEAAgE,CAAC;QAC1E,KAAK,KAAK;YACR,OAAO,8DAA8D,CAAC;QACxE,KAAK,KAAK;YACR,OAAO,gEAAgE,CAAC;QAC1E,KAAK,KAAK;YACR,OAAO,gEAAgE,CAAC;QAC1E,KAAK,KAAK;YACR,OAAO,gEAAgE,CAAC;QAC1E,KAAK,MAAM;YACT,OAAO,2BAA2B,CAAC;QACrC;YACE,OAAO,SAAS,CAAC;KACpB;AACH,CAAC;AAvDD,gDAuDC"}
|
package/kifUtil.d.ts
CHANGED
|
File without changes
|
package/kifUtil.js
CHANGED
|
@@ -7,16 +7,16 @@ function parseKifSquare(str) {
|
|
|
7
7
|
return;
|
|
8
8
|
const file = str[0].charCodeAt(0) >= 65297 ? String.fromCharCode(str[0].charCodeAt(0) - 65248) : str[0];
|
|
9
9
|
const rank = String.fromCharCode(('一二三四五六七八九'.includes(str[1]) ? fromKanjiDigit(str[1]).toString() : str[1]).charCodeAt(0) + 48);
|
|
10
|
-
return
|
|
10
|
+
return util_1.parseSquare(file + rank);
|
|
11
11
|
}
|
|
12
12
|
exports.parseKifSquare = parseKifSquare;
|
|
13
13
|
function kifDestSquare(sq) {
|
|
14
|
-
return (String.fromCharCode((9 -
|
|
15
|
-
toKanjiDigit((9 -
|
|
14
|
+
return (String.fromCharCode((9 - util_1.squareFile(sq)).toString().charCodeAt(0) + 0xfee0) +
|
|
15
|
+
toKanjiDigit((9 - util_1.squareRank(sq)).toString()));
|
|
16
16
|
}
|
|
17
17
|
exports.kifDestSquare = kifDestSquare;
|
|
18
18
|
function kifOrigSquare(sq) {
|
|
19
|
-
return 9 -
|
|
19
|
+
return 9 - util_1.squareFile(sq) + (9 - util_1.squareRank(sq)).toString();
|
|
20
20
|
}
|
|
21
21
|
exports.kifOrigSquare = kifOrigSquare;
|
|
22
22
|
function toKanjiDigit(str) {
|
package/kifUtil.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kifUtil.js","sourceRoot":"","sources":["src/kifUtil.ts"],"names":[],"mappings":";;;AACA,iCAA6D;AAE7D,SAAgB,cAAc,CAAC,GAAW;IACxC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAC7B,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACxG,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAC9B,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,CAC/F,CAAC;IACF,OAAO,
|
|
1
|
+
{"version":3,"file":"kifUtil.js","sourceRoot":"","sources":["src/kifUtil.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "shogiops",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "Shogi rules and operations",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"shogi",
|
|
@@ -43,6 +43,7 @@
|
|
|
43
43
|
"shogi.js",
|
|
44
44
|
"compat.js",
|
|
45
45
|
"variant.js",
|
|
46
|
+
"variantUtil.js",
|
|
46
47
|
"transform.js",
|
|
47
48
|
"setup.js",
|
|
48
49
|
"squareSet.js",
|
|
@@ -50,7 +51,7 @@
|
|
|
50
51
|
"util.js",
|
|
51
52
|
"debug.js",
|
|
52
53
|
"fen.js",
|
|
53
|
-
"
|
|
54
|
+
"hand.js",
|
|
54
55
|
"hash.js",
|
|
55
56
|
"kifHandicaps.js",
|
|
56
57
|
"kif.js",
|
|
@@ -63,6 +64,7 @@
|
|
|
63
64
|
"shogi.d.ts",
|
|
64
65
|
"compat.d.ts",
|
|
65
66
|
"variant.d.ts",
|
|
67
|
+
"variantUtil.d.ts",
|
|
66
68
|
"transform.d.ts",
|
|
67
69
|
"setup.d.ts",
|
|
68
70
|
"squareSet.d.ts",
|
|
@@ -70,7 +72,7 @@
|
|
|
70
72
|
"util.d.ts",
|
|
71
73
|
"debug.d.ts",
|
|
72
74
|
"fen.d.ts",
|
|
73
|
-
"
|
|
75
|
+
"hand.d.ts",
|
|
74
76
|
"hash.d.ts",
|
|
75
77
|
"kifHandicaps.d.ts",
|
|
76
78
|
"kif.d.ts",
|
|
@@ -83,6 +85,7 @@
|
|
|
83
85
|
"shogi.js.map",
|
|
84
86
|
"compat.js.map",
|
|
85
87
|
"variant.js.map",
|
|
88
|
+
"variantUtil.js.map",
|
|
86
89
|
"transform.js.map",
|
|
87
90
|
"setup.js.map",
|
|
88
91
|
"squareSet.js.map",
|
|
@@ -90,7 +93,7 @@
|
|
|
90
93
|
"util.js.map",
|
|
91
94
|
"debug.js.map",
|
|
92
95
|
"fen.js.map",
|
|
93
|
-
"
|
|
96
|
+
"hand.js.map",
|
|
94
97
|
"hash.js.map",
|
|
95
98
|
"kifHandicaps.js.map",
|
|
96
99
|
"kif.js.map",
|
|
@@ -103,6 +106,7 @@
|
|
|
103
106
|
"src/shogi.ts",
|
|
104
107
|
"src/compat.ts",
|
|
105
108
|
"src/variant.ts",
|
|
109
|
+
"src/variantUtil.ts",
|
|
106
110
|
"src/transform.ts",
|
|
107
111
|
"src/setup.ts",
|
|
108
112
|
"src/squareSet.ts",
|
|
@@ -110,7 +114,7 @@
|
|
|
110
114
|
"src/util.ts",
|
|
111
115
|
"src/debug.ts",
|
|
112
116
|
"src/fen.ts",
|
|
113
|
-
"src/
|
|
117
|
+
"src/hand.ts",
|
|
114
118
|
"src/hash.ts",
|
|
115
119
|
"src/kifHandicaps.ts",
|
|
116
120
|
"src/kif.ts",
|
package/setup.d.ts
CHANGED
|
@@ -1,39 +1,9 @@
|
|
|
1
1
|
import { Color } from './types';
|
|
2
2
|
import { Board } from './board';
|
|
3
|
-
|
|
4
|
-
pawn: number;
|
|
5
|
-
lance: number;
|
|
6
|
-
knight: number;
|
|
7
|
-
silver: number;
|
|
8
|
-
gold: number;
|
|
9
|
-
bishop: number;
|
|
10
|
-
rook: number;
|
|
11
|
-
private constructor();
|
|
12
|
-
static empty(): MaterialSide;
|
|
13
|
-
static fromBoard(board: Board, color: Color): MaterialSide;
|
|
14
|
-
clone(): MaterialSide;
|
|
15
|
-
equals(other: MaterialSide): boolean;
|
|
16
|
-
add(other: MaterialSide): MaterialSide;
|
|
17
|
-
nonEmpty(): boolean;
|
|
18
|
-
isEmpty(): boolean;
|
|
19
|
-
count(): number;
|
|
20
|
-
}
|
|
21
|
-
export declare class Material {
|
|
22
|
-
gote: MaterialSide;
|
|
23
|
-
sente: MaterialSide;
|
|
24
|
-
constructor(gote: MaterialSide, sente: MaterialSide);
|
|
25
|
-
static empty(): Material;
|
|
26
|
-
static fromBoard(board: Board): Material;
|
|
27
|
-
clone(): Material;
|
|
28
|
-
equals(other: Material): boolean;
|
|
29
|
-
add(other: Material): Material;
|
|
30
|
-
count(): number;
|
|
31
|
-
isEmpty(): boolean;
|
|
32
|
-
nonEmpty(): boolean;
|
|
33
|
-
}
|
|
3
|
+
import { Hands } from './hand';
|
|
34
4
|
export interface Setup {
|
|
35
5
|
board: Board;
|
|
36
|
-
|
|
6
|
+
hands: Hands;
|
|
37
7
|
turn: Color;
|
|
38
8
|
fullmoves: number;
|
|
39
9
|
}
|
package/setup.js
CHANGED
|
@@ -1,83 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.defaultSetup =
|
|
4
|
-
const types_1 = require("./types");
|
|
3
|
+
exports.defaultSetup = void 0;
|
|
5
4
|
const board_1 = require("./board");
|
|
6
|
-
|
|
7
|
-
constructor() { }
|
|
8
|
-
static empty() {
|
|
9
|
-
const m = new MaterialSide();
|
|
10
|
-
for (const role of types_1.POCKET_ROLES)
|
|
11
|
-
m[role] = 0;
|
|
12
|
-
return m;
|
|
13
|
-
}
|
|
14
|
-
static fromBoard(board, color) {
|
|
15
|
-
const m = new MaterialSide();
|
|
16
|
-
for (const role of types_1.POCKET_ROLES)
|
|
17
|
-
m[role] = board.pieces(color, role).size();
|
|
18
|
-
return m;
|
|
19
|
-
}
|
|
20
|
-
clone() {
|
|
21
|
-
const m = new MaterialSide();
|
|
22
|
-
for (const role of types_1.POCKET_ROLES)
|
|
23
|
-
m[role] = this[role];
|
|
24
|
-
return m;
|
|
25
|
-
}
|
|
26
|
-
equals(other) {
|
|
27
|
-
return types_1.POCKET_ROLES.every(role => this[role] === other[role]);
|
|
28
|
-
}
|
|
29
|
-
add(other) {
|
|
30
|
-
const m = new MaterialSide();
|
|
31
|
-
for (const role of types_1.POCKET_ROLES)
|
|
32
|
-
m[role] = this[role] + other[role];
|
|
33
|
-
return m;
|
|
34
|
-
}
|
|
35
|
-
nonEmpty() {
|
|
36
|
-
return types_1.POCKET_ROLES.some(role => this[role] > 0);
|
|
37
|
-
}
|
|
38
|
-
isEmpty() {
|
|
39
|
-
return !this.nonEmpty();
|
|
40
|
-
}
|
|
41
|
-
count() {
|
|
42
|
-
return this.pawn + this.lance + this.knight + this.silver + this.gold + this.bishop + this.rook;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
exports.MaterialSide = MaterialSide;
|
|
46
|
-
class Material {
|
|
47
|
-
constructor(gote, sente) {
|
|
48
|
-
this.gote = gote;
|
|
49
|
-
this.sente = sente;
|
|
50
|
-
}
|
|
51
|
-
static empty() {
|
|
52
|
-
return new Material(MaterialSide.empty(), MaterialSide.empty());
|
|
53
|
-
}
|
|
54
|
-
static fromBoard(board) {
|
|
55
|
-
return new Material(MaterialSide.fromBoard(board, 'gote'), MaterialSide.fromBoard(board, 'sente'));
|
|
56
|
-
}
|
|
57
|
-
clone() {
|
|
58
|
-
return new Material(this.gote.clone(), this.sente.clone());
|
|
59
|
-
}
|
|
60
|
-
equals(other) {
|
|
61
|
-
return this.gote.equals(other.gote) && this.sente.equals(other.sente);
|
|
62
|
-
}
|
|
63
|
-
add(other) {
|
|
64
|
-
return new Material(this.gote.add(other.gote), this.sente.add(other.sente));
|
|
65
|
-
}
|
|
66
|
-
count() {
|
|
67
|
-
return this.gote.count() + this.sente.count();
|
|
68
|
-
}
|
|
69
|
-
isEmpty() {
|
|
70
|
-
return this.gote.isEmpty() && this.sente.isEmpty();
|
|
71
|
-
}
|
|
72
|
-
nonEmpty() {
|
|
73
|
-
return !this.isEmpty();
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
exports.Material = Material;
|
|
5
|
+
const hand_1 = require("./hand");
|
|
77
6
|
function defaultSetup() {
|
|
78
7
|
return {
|
|
79
8
|
board: board_1.Board.default(),
|
|
80
|
-
|
|
9
|
+
hands: hand_1.Hands.empty(),
|
|
81
10
|
turn: 'sente',
|
|
82
11
|
fullmoves: 1,
|
|
83
12
|
};
|
package/setup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["src/setup.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["src/setup.ts"],"names":[],"mappings":";;;AACA,mCAAgC;AAChC,iCAA+B;AAS/B,SAAgB,YAAY;IAC1B,OAAO;QACL,KAAK,EAAE,aAAK,CAAC,OAAO,EAAE;QACtB,KAAK,EAAE,YAAK,CAAC,KAAK,EAAE;QACpB,IAAI,EAAE,OAAO;QACb,SAAS,EAAE,CAAC;KACb,CAAC;AACJ,CAAC;AAPD,oCAOC"}
|