@konoui/mjimage 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/README.md +2 -2
  2. package/dist/mjs/cmd/index.d.ts +1 -0
  3. package/dist/mjs/cmd/index.js +49 -0
  4. package/dist/mjs/index.d.ts +1 -1
  5. package/dist/mjs/index.js +1 -1
  6. package/dist/mjs/lib/calculator/index.d.ts +284 -0
  7. package/dist/mjs/lib/calculator/index.js +1390 -0
  8. package/dist/mjs/lib/constants.d.ts +22 -2
  9. package/dist/mjs/lib/constants.js +28 -9
  10. package/dist/mjs/lib/controller/controller.d.ts +223 -0
  11. package/dist/mjs/lib/controller/controller.js +862 -0
  12. package/dist/mjs/lib/controller/efficiency.d.ts +36 -0
  13. package/dist/mjs/lib/controller/efficiency.js +217 -0
  14. package/dist/mjs/lib/controller/events.d.ts +172 -0
  15. package/dist/mjs/lib/controller/events.js +102 -0
  16. package/dist/mjs/lib/controller/game.d.ts +5 -0
  17. package/dist/mjs/lib/controller/game.js +29 -0
  18. package/dist/mjs/lib/controller/index.d.ts +10 -0
  19. package/dist/mjs/lib/controller/index.js +26 -0
  20. package/dist/mjs/lib/controller/managers.d.ts +89 -0
  21. package/dist/mjs/lib/controller/managers.js +212 -0
  22. package/dist/mjs/lib/controller/player.d.ts +12 -0
  23. package/dist/mjs/lib/controller/player.js +88 -0
  24. package/dist/mjs/lib/controller/replay.d.ts +10 -0
  25. package/dist/mjs/lib/controller/replay.js +34 -0
  26. package/dist/mjs/lib/controller/river.d.ts +19 -0
  27. package/dist/mjs/lib/controller/river.js +55 -0
  28. package/dist/mjs/lib/controller/state-machine.d.ts +116 -0
  29. package/dist/mjs/lib/controller/state-machine.js +733 -0
  30. package/dist/mjs/lib/controller/wall.d.ts +30 -0
  31. package/dist/mjs/lib/controller/wall.js +115 -0
  32. package/dist/mjs/lib/image.d.ts +3 -2
  33. package/dist/mjs/lib/image.js +78 -17
  34. package/dist/mjs/lib/lexer.d.ts +2 -1
  35. package/dist/mjs/lib/lexer.js +7 -0
  36. package/dist/mjs/lib/measure-text.d.ts +19 -0
  37. package/dist/mjs/lib/measure-text.js +52 -0
  38. package/dist/mjs/lib/mjai/event.d.ts +117 -0
  39. package/dist/mjs/lib/mjai/event.js +348 -0
  40. package/dist/mjs/lib/mjimage.js +3 -5
  41. package/dist/mjs/lib/parser.d.ts +51 -7
  42. package/dist/mjs/lib/parser.js +276 -42
  43. package/dist/mjs/lib/table-parser.d.ts +8 -6
  44. package/dist/mjs/lib/table-parser.js +12 -11
  45. package/dist/mjs/lib/table.d.ts +1 -1
  46. package/package.json +16 -8
  47. package/dist/index.html +0 -17763
  48. package/dist/mjs/lib/context.d.ts +0 -12
  49. package/dist/mjs/lib/context.js +0 -33
  50. package/dist/svg/_0.svg +0 -1
  51. package/dist/svg/m0.svg +0 -1
  52. package/dist/svg/m1.svg +0 -1
  53. package/dist/svg/m2.svg +0 -1
  54. package/dist/svg/m3.svg +0 -1
  55. package/dist/svg/m4.svg +0 -1
  56. package/dist/svg/m5.svg +0 -1
  57. package/dist/svg/m6.svg +0 -1
  58. package/dist/svg/m7.svg +0 -1
  59. package/dist/svg/m8.svg +0 -1
  60. package/dist/svg/m9.svg +0 -1
  61. package/dist/svg/p0.svg +0 -1
  62. package/dist/svg/p1.svg +0 -1
  63. package/dist/svg/p2.svg +0 -1
  64. package/dist/svg/p3.svg +0 -1
  65. package/dist/svg/p4.svg +0 -1
  66. package/dist/svg/p5.svg +0 -1
  67. package/dist/svg/p6.svg +0 -1
  68. package/dist/svg/p7.svg +0 -1
  69. package/dist/svg/p8.svg +0 -1
  70. package/dist/svg/p9.svg +0 -1
  71. package/dist/svg/s0.svg +0 -1
  72. package/dist/svg/s1.svg +0 -1
  73. package/dist/svg/s2.svg +0 -1
  74. package/dist/svg/s3.svg +0 -1
  75. package/dist/svg/s4.svg +0 -1
  76. package/dist/svg/s5.svg +0 -1
  77. package/dist/svg/s6.svg +0 -1
  78. package/dist/svg/s7.svg +0 -1
  79. package/dist/svg/s8.svg +0 -1
  80. package/dist/svg/s9.svg +0 -1
  81. package/dist/svg/stick100.svg +0 -1
  82. package/dist/svg/stick1000.svg +0 -1
  83. package/dist/svg/z1.svg +0 -1
  84. package/dist/svg/z2.svg +0 -1
  85. package/dist/svg/z3.svg +0 -1
  86. package/dist/svg/z4.svg +0 -1
  87. package/dist/svg/z5.svg +0 -1
  88. package/dist/svg/z6.svg +0 -1
  89. package/dist/svg/z7.svg +0 -1
  90. package/dist/tiles.1417fc37.svg +0 -1
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- [![npm version](https://badge.fury.io/js/@konoui%2Fmj-image.svg)](https://badge.fury.io/js/@konoui%2Fmj-image)
1
+ [![npm version](https://badge.fury.io/js/@konoui%2Fmjimage.svg)](https://badge.fury.io/js/@konoui%2Fmjimage)
2
2
 
3
3
  ## 麻雀牌ジェネレーター
4
4
 
@@ -28,7 +28,7 @@
28
28
  | , | ブロックの塊を表す | 123,-123 |
29
29
  | t | ツモ牌を表す | 123,t3p |
30
30
  | d | ドラ牌を表す | 123,t3p,d4p |
31
- | g | ツモ切りを表す(牌の色が暗くなる) | 3g56m |
31
+ | ^ | ツモ切りを表す(牌の色が暗くなる) | 3^56m |
32
32
 
33
33
  ### 入力例
34
34
 
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ var controller_1 = require("./../lib/controller");
5
+ var replay_1 = require("../lib/controller/replay");
6
+ var helper_1 = require("./../lib/__tests__/utils/helper");
7
+ var type = process.argv[2];
8
+ if (!["test", "single", "game"].includes(type))
9
+ throw new Error("unexpected type");
10
+ var count = (_a = Number(process.argv[3])) !== null && _a !== void 0 ? _a : 1;
11
+ var filename = "games.json";
12
+ if (type == "test") {
13
+ var games = (0, helper_1.loadArrayData)(filename);
14
+ for (var _i = 0, games_1 = games; _i < games_1.length; _i++) {
15
+ var game = games_1[_i];
16
+ var r = new replay_1.Replayer(game);
17
+ r.auto();
18
+ }
19
+ }
20
+ if (type == "game" || type == "single") {
21
+ for (var i = 0; i < count; i++) {
22
+ console.debug("".concat(type, "(").concat(i, ")==="));
23
+ var c = (0, controller_1.createLocalGame)();
24
+ var starter = factory(c, type);
25
+ subscribeError(c);
26
+ try {
27
+ starter();
28
+ }
29
+ catch (e) {
30
+ console.error("Error", e);
31
+ (0, helper_1.storeArrayData)(filename, c.export());
32
+ }
33
+ }
34
+ }
35
+ function factory(c, type) {
36
+ if (type == "single")
37
+ return function () { return c.start(); };
38
+ else
39
+ return function () { return c.startGame(); };
40
+ }
41
+ function subscribeError(c) {
42
+ c.actor.subscribe({
43
+ error: function (err) {
44
+ console.error("Error", err);
45
+ (0, helper_1.storeArrayData)(filename, c.export());
46
+ process.exit(1);
47
+ },
48
+ });
49
+ }
@@ -1,6 +1,6 @@
1
1
  export * from "./lib/mjimage";
2
2
  export * from "./lib/constants";
3
- export * from "./lib/context";
3
+ export * from "./lib/measure-text";
4
4
  export * from "./lib/lexer";
5
5
  export * from "./lib/image";
6
6
  export * from "./lib/parser";
package/dist/mjs/index.js CHANGED
@@ -16,7 +16,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./lib/mjimage"), exports);
18
18
  __exportStar(require("./lib/constants"), exports);
19
- __exportStar(require("./lib/context"), exports);
19
+ __exportStar(require("./lib/measure-text"), exports);
20
20
  __exportStar(require("./lib/lexer"), exports);
21
21
  __exportStar(require("./lib/image"), exports);
22
22
  __exportStar(require("./lib/parser"), exports);
@@ -0,0 +1,284 @@
1
+ import { KIND, Round, Wind } from "../constants";
2
+ import { Tile, BlockPon, BlockChi, BlockShoKan, BlockAnKan, BlockDaiKan, Kind, Block } from "../parser";
3
+ type FixedNumber = [
4
+ number,
5
+ number,
6
+ number,
7
+ number,
8
+ number,
9
+ number,
10
+ number,
11
+ number,
12
+ number,
13
+ number
14
+ ];
15
+ export interface HandData {
16
+ [KIND.M]: FixedNumber;
17
+ [KIND.S]: FixedNumber;
18
+ [KIND.P]: FixedNumber;
19
+ [KIND.Z]: [number, number, number, number, number, number, number, number];
20
+ [KIND.BACK]: [number];
21
+ called: (BlockChi | BlockPon | BlockAnKan | BlockDaiKan | BlockShoKan)[];
22
+ tsumo: Tile | null;
23
+ reached: boolean;
24
+ }
25
+ export declare class Hand {
26
+ private data;
27
+ constructor(input: string);
28
+ private init;
29
+ get hands(): Tile[];
30
+ toString(): string;
31
+ get called(): (BlockChi | BlockPon | BlockAnKan | BlockDaiKan | BlockShoKan)[];
32
+ get reached(): boolean;
33
+ get drawn(): Tile | null;
34
+ get menzen(): boolean;
35
+ getArrayLen(k: Kind): 1 | 8 | 10;
36
+ sum(k: Kind): number;
37
+ get(k: Kind, n: number): number;
38
+ inc(tiles: Tile[]): Tile[];
39
+ dec(tiles: Tile[]): Tile[];
40
+ draw(t: Tile): void;
41
+ discard(t: Tile): void;
42
+ reach(): void;
43
+ call(b: BlockPon | BlockChi | BlockDaiKan): void;
44
+ kan(b: BlockAnKan | BlockShoKan): void;
45
+ get canReach(): boolean;
46
+ clone(): Hand;
47
+ }
48
+ export declare class ShantenCalculator {
49
+ hand: Hand;
50
+ constructor(hand: Hand);
51
+ calc(): number;
52
+ sevenPairs(): number;
53
+ thirteenOrphans(): number;
54
+ fourSetsOnePair(): number;
55
+ private commonByKind;
56
+ private groupRemainingTiles;
57
+ private calcCommon;
58
+ }
59
+ export declare class ExShantenCalculator {
60
+ h: Hand;
61
+ private c;
62
+ constructor(h: Hand);
63
+ menzen(): number;
64
+ yakuhai(): number;
65
+ tanyao(): void;
66
+ }
67
+ export declare class TileCalculator {
68
+ hand: Hand;
69
+ constructor(hand: Hand);
70
+ calc(lastTile: Tile): Block[][];
71
+ markDrawn(hands: Block[][], lastTile: Tile): Block[][];
72
+ sevenPairs(): Block[][];
73
+ thirteenOrphans(): Block[][];
74
+ nineGates(): Block[][];
75
+ fourSetsOnePair(): Block[][];
76
+ private commonAll;
77
+ private commonByKind;
78
+ }
79
+ export interface BoardParams {
80
+ doraMarkers: Tile[];
81
+ blindDoraMarkers?: Tile[];
82
+ round: Round;
83
+ myWind: Wind;
84
+ ronWind?: Wind;
85
+ sticks?: {
86
+ reach: number;
87
+ dead: number;
88
+ };
89
+ reached?: 1 | 2;
90
+ replacementWin?: boolean;
91
+ quadWin?: boolean;
92
+ finalWallWin?: boolean;
93
+ finalDiscardWin?: boolean;
94
+ oneShotWin?: boolean;
95
+ }
96
+ export interface WinResult {
97
+ deltas: {
98
+ [w in Wind]: number;
99
+ };
100
+ sum: number;
101
+ fu: number;
102
+ points: {
103
+ name: string;
104
+ double: number;
105
+ }[];
106
+ point: number;
107
+ hand: Block[];
108
+ params: BoardParams;
109
+ }
110
+ export declare class DoubleCalculator {
111
+ hand: Hand;
112
+ cfg: {
113
+ doras: Tile[];
114
+ blindDoras: Tile[];
115
+ roundWind: Tile;
116
+ myWind: Tile;
117
+ reached: 0 | 1 | 2;
118
+ sticks: {
119
+ reach: number;
120
+ dead: number;
121
+ };
122
+ replacementWin: boolean;
123
+ quadWin: boolean;
124
+ finalWallWin: boolean;
125
+ finalDiscardWin: boolean;
126
+ oneShotWin: boolean;
127
+ orig: BoardParams;
128
+ };
129
+ constructor(hand: Hand, params: BoardParams);
130
+ calc(hands: Block[][]): WinResult | false;
131
+ calcPatterns(hands: Block[][]): {
132
+ points: {
133
+ name: string;
134
+ double: number;
135
+ }[];
136
+ fu: number;
137
+ hand: Block[];
138
+ }[];
139
+ private minus;
140
+ dA1(h: Block[]): {
141
+ name: string;
142
+ double: number;
143
+ }[];
144
+ dB1(h: Block[]): {
145
+ name: string;
146
+ double: number;
147
+ }[];
148
+ dC1(h: Block[]): {
149
+ name: string;
150
+ double: number;
151
+ }[];
152
+ dD1(h: Block[]): {
153
+ name: string;
154
+ double: number;
155
+ }[];
156
+ dE1(h: Block[]): {
157
+ name: string;
158
+ double: number;
159
+ }[];
160
+ dF1(h: Block[]): {
161
+ name: string;
162
+ double: number;
163
+ }[];
164
+ dG1(h: Block[]): {
165
+ name: string;
166
+ double: number;
167
+ }[];
168
+ dH1(h: Block[]): {
169
+ name: string;
170
+ double: number;
171
+ }[];
172
+ dI1(h: Block[]): {
173
+ name: string;
174
+ double: number;
175
+ }[];
176
+ dJ1(h: Block[]): {
177
+ name: string;
178
+ double: number;
179
+ }[];
180
+ dK1(h: Block[]): {
181
+ name: string;
182
+ double: number;
183
+ }[];
184
+ dX1(h: Block[]): {
185
+ name: string;
186
+ double: number;
187
+ }[];
188
+ dA2(h: Block[]): {
189
+ name: string;
190
+ double: number;
191
+ }[];
192
+ dB2(h: Block[]): {
193
+ name: string;
194
+ double: number;
195
+ }[];
196
+ dC2(h: Block[]): {
197
+ name: string;
198
+ double: number;
199
+ }[];
200
+ dD2(h: Block[]): {
201
+ name: string;
202
+ double: number;
203
+ }[];
204
+ dE2(h: Block[]): {
205
+ name: string;
206
+ double: number;
207
+ }[];
208
+ dF2(h: Block[]): {
209
+ name: string;
210
+ double: number;
211
+ }[];
212
+ dG2(h: Block[]): {
213
+ name: string;
214
+ double: number;
215
+ }[];
216
+ dH2(h: Block[]): {
217
+ name: string;
218
+ double: number;
219
+ }[];
220
+ dI2(h: Block[]): {
221
+ name: string;
222
+ double: number;
223
+ }[];
224
+ dJ2(h: Block[]): {
225
+ name: string;
226
+ double: number;
227
+ }[];
228
+ dA3(h: Block[]): {
229
+ name: string;
230
+ double: number;
231
+ }[];
232
+ dB3(h: Block[]): {
233
+ name: string;
234
+ double: number;
235
+ }[];
236
+ dC3(h: Block[]): {
237
+ name: string;
238
+ double: number;
239
+ }[];
240
+ dA6(h: Block[]): {
241
+ name: string;
242
+ double: number;
243
+ }[];
244
+ dA13(h: Block[]): {
245
+ name: string;
246
+ double: number;
247
+ }[];
248
+ dB13(h: Block[]): {
249
+ name: string;
250
+ double: number;
251
+ }[];
252
+ dC13(h: Block[]): {
253
+ name: string;
254
+ double: number;
255
+ }[];
256
+ dD13(h: Block[]): {
257
+ name: string;
258
+ double: number;
259
+ }[];
260
+ dE13(h: Block[]): {
261
+ name: string;
262
+ double: number;
263
+ }[];
264
+ dF13(h: Block[]): {
265
+ name: string;
266
+ double: number;
267
+ }[];
268
+ dG13(h: Block[]): {
269
+ name: string;
270
+ double: number;
271
+ }[];
272
+ dH13(h: Block[]): {
273
+ name: string;
274
+ double: number;
275
+ }[];
276
+ dI13(h: Block[]): {
277
+ name: string;
278
+ double: number;
279
+ }[];
280
+ dJ13(h: Block[]): never[];
281
+ dK13(h: Block[]): never[];
282
+ calcFu(h: Block[]): number;
283
+ }
284
+ export {};