shogiops 0.2.9 → 0.6.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.
Files changed (114) hide show
  1. package/README.md +6 -7
  2. package/attacks.js +7 -7
  3. package/attacks.js.map +1 -1
  4. package/board.d.ts +3 -0
  5. package/board.js +31 -0
  6. package/board.js.map +1 -1
  7. package/compat.d.ts +6 -24
  8. package/compat.js +17 -173
  9. package/compat.js.map +1 -1
  10. package/debug.js +30 -56
  11. package/debug.js.map +1 -1
  12. package/hand.d.ts +38 -0
  13. package/hand.js +74 -0
  14. package/hand.js.map +1 -0
  15. package/hash.d.ts +4 -3
  16. package/hash.js +9 -9
  17. package/hash.js.map +1 -1
  18. package/index.d.ts +13 -10
  19. package/index.js +14 -15
  20. package/index.js.map +1 -1
  21. package/{csa.d.ts → notation/csa/csa.d.ts} +9 -9
  22. package/{csa.js → notation/csa/csa.js} +52 -56
  23. package/notation/csa/csa.js.map +1 -0
  24. package/notation/japanese.d.ts +3 -0
  25. package/notation/japanese.js +65 -0
  26. package/notation/japanese.js.map +1 -0
  27. package/{kif.d.ts → notation/kif/kif.d.ts} +10 -9
  28. package/{kif.js → notation/kif/kif.js} +86 -84
  29. package/notation/kif/kif.js.map +1 -0
  30. package/{kifHandicaps.d.ts → notation/kif/kifHandicaps.d.ts} +0 -0
  31. package/{kifHandicaps.js → notation/kif/kifHandicaps.js} +5 -0
  32. package/notation/kif/kifHandicaps.js.map +1 -0
  33. package/notation/kitaoKawasaki.d.ts +3 -0
  34. package/notation/kitaoKawasaki.js +30 -0
  35. package/notation/kitaoKawasaki.js.map +1 -0
  36. package/notation/kitaokawasaki.d.ts +0 -0
  37. package/notation/kitaokawasaki.js +2 -0
  38. package/notation/kitaokawasaki.js.map +1 -0
  39. package/notation/notationUtil.d.ts +12 -0
  40. package/{kifUtil.js → notation/notationUtil.js} +43 -32
  41. package/notation/notationUtil.js.map +1 -0
  42. package/notation/western.d.ts +3 -0
  43. package/notation/western.js +27 -0
  44. package/notation/western.js.map +1 -0
  45. package/notation/westernEngine.d.ts +3 -0
  46. package/notation/westernEngine.js +27 -0
  47. package/notation/westernEngine.js.map +1 -0
  48. package/package.json +51 -36
  49. package/setup.d.ts +2 -32
  50. package/setup.js +3 -74
  51. package/setup.js.map +1 -1
  52. package/sfen.d.ts +33 -0
  53. package/sfen.js +201 -0
  54. package/sfen.js.map +1 -0
  55. package/shogi.d.ts +14 -7
  56. package/shogi.js +109 -106
  57. package/shogi.js.map +1 -1
  58. package/squareSet.d.ts +1 -5
  59. package/squareSet.js +0 -13
  60. package/squareSet.js.map +1 -1
  61. package/src/board.ts +34 -0
  62. package/src/compat.ts +18 -197
  63. package/src/debug.ts +26 -56
  64. package/src/hand.ts +94 -0
  65. package/src/hash.ts +8 -7
  66. package/src/index.ts +16 -12
  67. package/src/{csa.ts → notation/csa/csa.ts} +50 -51
  68. package/src/notation/japanese.ts +74 -0
  69. package/src/{kif.ts → notation/kif/kif.ts} +77 -78
  70. package/src/{kifHandicaps.ts → notation/kif/kifHandicaps.ts} +5 -0
  71. package/src/notation/kitaoKawasaki.ts +24 -0
  72. package/src/{kifUtil.ts → notation/notationUtil.ts} +37 -28
  73. package/src/notation/western.ts +21 -0
  74. package/src/notation/westernEngine.ts +21 -0
  75. package/src/setup.ts +4 -91
  76. package/src/sfen.ts +190 -0
  77. package/src/shogi.ts +75 -75
  78. package/src/squareSet.ts +1 -18
  79. package/src/transform.ts +3 -1
  80. package/src/types.ts +13 -16
  81. package/src/util.ts +8 -73
  82. package/src/variant.ts +44 -3
  83. package/src/variantUtil.ts +160 -0
  84. package/transform.js +3 -1
  85. package/transform.js.map +1 -1
  86. package/types.d.ts +3 -7
  87. package/types.js +13 -14
  88. package/types.js.map +1 -1
  89. package/util.d.ts +4 -7
  90. package/util.js +9 -60
  91. package/util.js.map +1 -1
  92. package/variant.d.ts +12 -1
  93. package/variant.js +38 -3
  94. package/variant.js.map +1 -1
  95. package/variantUtil.d.ts +13 -0
  96. package/variantUtil.js +160 -0
  97. package/variantUtil.js.map +1 -0
  98. package/csa.js.map +0 -1
  99. package/csaUtil.d.ts +0 -3
  100. package/csaUtil.js +0 -21
  101. package/csaUtil.js.map +0 -1
  102. package/fen.d.ts +0 -32
  103. package/fen.js +0 -197
  104. package/fen.js.map +0 -1
  105. package/kif.js.map +0 -1
  106. package/kifHandicaps.js.map +0 -1
  107. package/kifUtil.d.ts +0 -9
  108. package/kifUtil.js.map +0 -1
  109. package/san.d.ts +0 -6
  110. package/san.js +0 -135
  111. package/san.js.map +0 -1
  112. package/src/csaUtil.ts +0 -15
  113. package/src/fen.ts +0 -183
  114. 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
@@ -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
- pockets: setup.pockets.clone(),
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;AAND,wCAMC;AAED,SAAgB,cAAc,CAAC,KAAY,EAAE,CAA8B;IACzE,OAAO;QACL,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QACrC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE;QAC9B,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,SAAS,EAAE,KAAK,CAAC,SAAS;KAC3B,CAAC;AACJ,CAAC;AAPD,wCAOC"}
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 ["pawn", "lance", "knight", "silver", "gold", "bishop", "rook", "tokin", "promotedlance", "promotedknight", "promotedsilver", "horse", "dragon", "king"];
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: PocketRole;
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.PROMOTABLE_ROLES = exports.POCKET_ROLES = exports.ROLES = exports.COLORS = exports.RANK_NAMES = exports.FILE_NAMES = void 0;
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
- 'horse',
20
- 'dragon',
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;AAQpC,QAAA,KAAK,GAAG;IACnB,MAAM;IACN,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,MAAM;IACN,OAAO;IACP,eAAe;IACf,gBAAgB;IAChB,gBAAgB;IAChB,OAAO;IACP,QAAQ;IACR,MAAM;CACE,CAAC;AACE,QAAA,YAAY,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAU,CAAC;AACxF,QAAA,gBAAgB,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAU,CAAC;AA2BjG,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,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,24 +1,21 @@
1
- import { Color, Square, Role, PocketRole, Move, SquareName, Piece } from './types';
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
- 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 charToRole(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;
15
- export declare function charToRole(ch: string): Role | undefined;
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,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
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");
3
+ exports.toColor = exports.toBlackWhite = exports.toBW = exports.makeUsi = exports.parseUsi = exports.makeSquare = exports.parseSquare = exports.stringToRole = exports.kanjiToRole = exports.roleTo2Kanji = exports.roleTo1Kanji = exports.csaToRole = exports.roleToCsa = exports.roleToString = 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;
@@ -11,6 +10,7 @@ function opposite(color) {
11
10
  return color === 'gote' ? 'sente' : 'gote';
12
11
  }
13
12
  exports.opposite = opposite;
13
+ // coordinate system starts at bottom left
14
14
  function squareRank(square) {
15
15
  return Math.floor(square / 9);
16
16
  }
@@ -19,53 +19,7 @@ function squareFile(square) {
19
19
  return square % 9;
20
20
  }
21
21
  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
- function roleToChar(role) {
22
+ function roleToString(role) {
69
23
  switch (role) {
70
24
  case 'pawn':
71
25
  return 'p';
@@ -97,7 +51,7 @@ function roleToChar(role) {
97
51
  return 'k';
98
52
  }
99
53
  }
100
- exports.roleToChar = roleToChar;
54
+ exports.roleToString = roleToString;
101
55
  function roleToCsa(role) {
102
56
  switch (role) {
103
57
  case 'pawn':
@@ -251,7 +205,7 @@ function kanjiToRole(str) {
251
205
  }
252
206
  }
253
207
  exports.kanjiToRole = kanjiToRole;
254
- function charToRole(ch) {
208
+ function stringToRole(ch) {
255
209
  switch (ch) {
256
210
  case 'P':
257
211
  case 'p':
@@ -299,7 +253,7 @@ function charToRole(ch) {
299
253
  return;
300
254
  }
301
255
  }
302
- exports.charToRole = charToRole;
256
+ exports.stringToRole = stringToRole;
303
257
  function parseSquare(str) {
304
258
  if (str.length !== 2)
305
259
  return;
@@ -316,7 +270,7 @@ function makeSquare(square) {
316
270
  exports.makeSquare = makeSquare;
317
271
  function parseUsi(str) {
318
272
  if (str[1] === '*' && str.length === 4) {
319
- const role = charToRole(str[0]);
273
+ const role = stringToRole(str[0]);
320
274
  const to = parseSquare(str.slice(2));
321
275
  if (defined(role) && defined(to))
322
276
  return { role, to };
@@ -332,16 +286,11 @@ function parseUsi(str) {
332
286
  }
333
287
  exports.parseUsi = parseUsi;
334
288
  function makeUsi(move) {
335
- if (types_1.isDrop(move))
336
- return `${roleToChar(move.role).toUpperCase()}*${makeSquare(move.to)}`;
289
+ if ((0, types_1.isDrop)(move))
290
+ return `${roleToString(move.role).toUpperCase()}*${makeSquare(move.to)}`;
337
291
  return makeSquare(move.from) + makeSquare(move.to) + (move.promotion ? '+' : '');
338
292
  }
339
293
  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
294
  function toBW(color) {
346
295
  // white, w, gote, g
347
296
  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":"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"}
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 'shogi':
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 'shogi':
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;AAE7D,8FAFV,qBAAa,OAEU;AAAvB,yFAFe,gBAAQ,OAEf;AAAiB,6FAFA,oBAAY,OAEA;AAAW,sFAFA,aAAK,OAEA;AAE9D,SAAgB,eAAe,CAAC,KAAY;IAC1C,QAAQ,KAAK,EAAE;QACb,KAAK,OAAO;YACV,OAAO,aAAK,CAAC,OAAO,EAAE,CAAC;KAC1B;AACH,CAAC;AALD,0CAKC;AAED,SAAgB,aAAa,CAAC,KAAY,EAAE,KAAY,EAAE,MAAM,GAAG,IAAI;IACrE,QAAQ,KAAK,EAAE;QACb,KAAK,OAAO;YACV,OAAO,aAAK,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;KACzC;AACH,CAAC;AALD,sCAKC"}
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"}
@@ -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;