js-chess-engine 1.0.2 → 2.0.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 (103) hide show
  1. package/README.md +586 -205
  2. package/dist/adapters/APIAdapter.d.ts +88 -0
  3. package/dist/adapters/APIAdapter.d.ts.map +1 -0
  4. package/dist/adapters/APIAdapter.js +225 -0
  5. package/dist/adapters/APIAdapter.js.map +1 -0
  6. package/dist/ai/AIEngine.d.ts +42 -0
  7. package/dist/ai/AIEngine.d.ts.map +1 -0
  8. package/dist/ai/AIEngine.js +62 -0
  9. package/dist/ai/AIEngine.js.map +1 -0
  10. package/dist/ai/Evaluator.d.ts +48 -0
  11. package/dist/ai/Evaluator.d.ts.map +1 -0
  12. package/dist/ai/Evaluator.js +248 -0
  13. package/dist/ai/Evaluator.js.map +1 -0
  14. package/dist/ai/MoveOrdering.d.ts +60 -0
  15. package/dist/ai/MoveOrdering.d.ts.map +1 -0
  16. package/dist/ai/MoveOrdering.js +173 -0
  17. package/dist/ai/MoveOrdering.js.map +1 -0
  18. package/dist/ai/Search.d.ts +62 -0
  19. package/dist/ai/Search.d.ts.map +1 -0
  20. package/dist/ai/Search.js +340 -0
  21. package/dist/ai/Search.js.map +1 -0
  22. package/dist/ai/TranspositionTable.d.ts +100 -0
  23. package/dist/ai/TranspositionTable.d.ts.map +1 -0
  24. package/dist/ai/TranspositionTable.js +176 -0
  25. package/dist/ai/TranspositionTable.js.map +1 -0
  26. package/dist/core/AttackDetector.d.ts +52 -0
  27. package/dist/core/AttackDetector.d.ts.map +1 -0
  28. package/dist/core/AttackDetector.js +397 -0
  29. package/dist/core/AttackDetector.js.map +1 -0
  30. package/dist/core/Board.d.ts +109 -0
  31. package/dist/core/Board.d.ts.map +1 -0
  32. package/dist/core/Board.js +410 -0
  33. package/dist/core/Board.js.map +1 -0
  34. package/dist/core/MoveGenerator.d.ts +48 -0
  35. package/dist/core/MoveGenerator.d.ts.map +1 -0
  36. package/dist/core/MoveGenerator.js +678 -0
  37. package/dist/core/MoveGenerator.js.map +1 -0
  38. package/dist/core/Position.d.ts +135 -0
  39. package/dist/core/Position.d.ts.map +1 -0
  40. package/dist/core/Position.js +351 -0
  41. package/dist/core/Position.js.map +1 -0
  42. package/dist/core/index.d.ts +9 -0
  43. package/dist/core/index.d.ts.map +1 -0
  44. package/dist/core/index.js +25 -0
  45. package/dist/core/index.js.map +1 -0
  46. package/dist/core/zobrist.d.ts +93 -0
  47. package/dist/core/zobrist.d.ts.map +1 -0
  48. package/dist/core/zobrist.js +273 -0
  49. package/dist/core/zobrist.js.map +1 -0
  50. package/dist/index.d.ts +154 -0
  51. package/dist/index.d.ts.map +1 -0
  52. package/dist/index.js +353 -0
  53. package/dist/index.js.map +1 -0
  54. package/dist/types/ai.types.d.ts +97 -0
  55. package/dist/types/ai.types.d.ts.map +1 -0
  56. package/dist/types/ai.types.js +17 -0
  57. package/dist/types/ai.types.js.map +1 -0
  58. package/dist/types/board.types.d.ts +140 -0
  59. package/dist/types/board.types.d.ts.map +1 -0
  60. package/dist/types/board.types.js +34 -0
  61. package/dist/types/board.types.js.map +1 -0
  62. package/dist/types/index.d.ts +7 -0
  63. package/dist/types/index.d.ts.map +1 -0
  64. package/dist/types/index.js +26 -0
  65. package/dist/types/index.js.map +1 -0
  66. package/dist/types/move.types.d.ts +70 -0
  67. package/dist/types/move.types.d.ts.map +1 -0
  68. package/dist/types/move.types.js +53 -0
  69. package/dist/types/move.types.js.map +1 -0
  70. package/dist/utils/constants.d.ts +123 -0
  71. package/dist/utils/constants.d.ts.map +1 -0
  72. package/dist/utils/constants.js +259 -0
  73. package/dist/utils/constants.js.map +1 -0
  74. package/dist/utils/conversion.d.ts +152 -0
  75. package/dist/utils/conversion.d.ts.map +1 -0
  76. package/dist/utils/conversion.js +288 -0
  77. package/dist/utils/conversion.js.map +1 -0
  78. package/dist/utils/environment.d.ts +33 -0
  79. package/dist/utils/environment.d.ts.map +1 -0
  80. package/dist/utils/environment.js +71 -0
  81. package/dist/utils/environment.js.map +1 -0
  82. package/dist/utils/fen.d.ts +28 -0
  83. package/dist/utils/fen.d.ts.map +1 -0
  84. package/dist/utils/fen.js +203 -0
  85. package/dist/utils/fen.js.map +1 -0
  86. package/package.json +31 -29
  87. package/.eslintrc.json +0 -16
  88. package/.github/workflows/main.yml +0 -20
  89. package/CHANGELOG.md +0 -587
  90. package/dist/js-chess-engine.js +0 -1
  91. package/example/aiMatch.mjs +0 -21
  92. package/example/console.mjs +0 -37
  93. package/example/server.mjs +0 -27
  94. package/lib/Board.mjs +0 -943
  95. package/lib/const/board.mjs +0 -838
  96. package/lib/js-chess-engine.mjs +0 -99
  97. package/lib/utils.mjs +0 -154
  98. package/test/.eslintrc.json +0 -11
  99. package/test/ai.test.mjs +0 -132
  100. package/test/badge.svg +0 -1
  101. package/test/importExport.mjs +0 -108
  102. package/test/moves.test.mjs +0 -773
  103. package/webpack.config.js +0 -12
@@ -1,838 +0,0 @@
1
- export const COLUMNS = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']
2
- export const ROWS = ['1', '2', '3', '4', '5', '6', '7', '8']
3
- export const PIECES = {
4
- KING_W: 'K',
5
- QUEEN_W: 'Q',
6
- ROOK_W: 'R',
7
- BISHOP_W: 'B',
8
- KNIGHT_W: 'N',
9
- PAWN_W: 'P',
10
- KING_B: 'k',
11
- QUEEN_B: 'q',
12
- ROOK_B: 'r',
13
- BISHOP_B: 'b',
14
- KNIGHT_B: 'n',
15
- PAWN_B: 'p',
16
- }
17
- export const COLORS = {
18
- BLACK: 'black',
19
- WHITE: 'white',
20
- }
21
- export const AI_LEVELS = [0, 1, 2, 3, 4]
22
- export const AI_DEPTH_BY_LEVEL = {
23
- BASE: {
24
- 0: 1,
25
- 1: 2,
26
- 2: 2,
27
- 3: 3,
28
- 4: 3,
29
- 5: 4,
30
- },
31
- EXTENDED: {
32
- 0: 2,
33
- 1: 2,
34
- 2: 4,
35
- 3: 4,
36
- 4: 5,
37
- 5: 5,
38
- },
39
- }
40
- export const NEW_GAME_SETTINGS = {
41
- fullMove: 1,
42
- halfMove: 0,
43
- enPassant: null,
44
- isFinished: false,
45
- checkMate: false,
46
- check: false,
47
- turn: COLORS.WHITE,
48
- }
49
- export const NEW_GAME_BOARD_CONFIG = Object.assign({
50
- pieces: {
51
- E1: 'K',
52
- D1: 'Q',
53
- A1: 'R',
54
- H1: 'R',
55
- C1: 'B',
56
- F1: 'B',
57
- B1: 'N',
58
- G1: 'N',
59
- A2: 'P',
60
- B2: 'P',
61
- C2: 'P',
62
- D2: 'P',
63
- E2: 'P',
64
- F2: 'P',
65
- G2: 'P',
66
- H2: 'P',
67
- E8: 'k',
68
- D8: 'q',
69
- A8: 'r',
70
- H8: 'r',
71
- C8: 'b',
72
- F8: 'b',
73
- B8: 'n',
74
- G8: 'n',
75
- A7: 'p',
76
- B7: 'p',
77
- C7: 'p',
78
- D7: 'p',
79
- E7: 'p',
80
- F7: 'p',
81
- G7: 'p',
82
- H7: 'p',
83
- },
84
- castling: {
85
- whiteShort: true,
86
- blackShort: true,
87
- whiteLong: true,
88
- blackLong: true,
89
- },
90
- }, NEW_GAME_SETTINGS)
91
-
92
- const CLOSE_FIELDS_MAP = {
93
- UP: {
94
- A1: 'A2',
95
- A2: 'A3',
96
- A3: 'A4',
97
- A4: 'A5',
98
- A5: 'A6',
99
- A6: 'A7',
100
- A7: 'A8',
101
- A8: null,
102
- B1: 'B2',
103
- B2: 'B3',
104
- B3: 'B4',
105
- B4: 'B5',
106
- B5: 'B6',
107
- B6: 'B7',
108
- B7: 'B8',
109
- B8: null,
110
- C1: 'C2',
111
- C2: 'C3',
112
- C3: 'C4',
113
- C4: 'C5',
114
- C5: 'C6',
115
- C6: 'C7',
116
- C7: 'C8',
117
- C8: null,
118
- D1: 'D2',
119
- D2: 'D3',
120
- D3: 'D4',
121
- D4: 'D5',
122
- D5: 'D6',
123
- D6: 'D7',
124
- D7: 'D8',
125
- D8: null,
126
- E1: 'E2',
127
- E2: 'E3',
128
- E3: 'E4',
129
- E4: 'E5',
130
- E5: 'E6',
131
- E6: 'E7',
132
- E7: 'E8',
133
- E8: null,
134
- F1: 'F2',
135
- F2: 'F3',
136
- F3: 'F4',
137
- F4: 'F5',
138
- F5: 'F6',
139
- F6: 'F7',
140
- F7: 'F8',
141
- F8: null,
142
- G1: 'G2',
143
- G2: 'G3',
144
- G3: 'G4',
145
- G4: 'G5',
146
- G5: 'G6',
147
- G6: 'G7',
148
- G7: 'G8',
149
- G8: null,
150
- H1: 'H2',
151
- H2: 'H3',
152
- H3: 'H4',
153
- H4: 'H5',
154
- H5: 'H6',
155
- H6: 'H7',
156
- H7: 'H8',
157
- H8: null,
158
- },
159
- DOWN: {
160
- A1: null,
161
- A2: 'A1',
162
- A3: 'A2',
163
- A4: 'A3',
164
- A5: 'A4',
165
- A6: 'A5',
166
- A7: 'A6',
167
- A8: 'A7',
168
- B1: null,
169
- B2: 'B1',
170
- B3: 'B2',
171
- B4: 'B3',
172
- B5: 'B4',
173
- B6: 'B5',
174
- B7: 'B6',
175
- B8: 'B7',
176
- C1: null,
177
- C2: 'C1',
178
- C3: 'C2',
179
- C4: 'C3',
180
- C5: 'C4',
181
- C6: 'C5',
182
- C7: 'C6',
183
- C8: 'C7',
184
- D1: null,
185
- D2: 'D1',
186
- D3: 'D2',
187
- D4: 'D3',
188
- D5: 'D4',
189
- D6: 'D5',
190
- D7: 'D6',
191
- D8: 'D7',
192
- E1: null,
193
- E2: 'E1',
194
- E3: 'E2',
195
- E4: 'E3',
196
- E5: 'E4',
197
- E6: 'E5',
198
- E7: 'E6',
199
- E8: 'E7',
200
- F1: null,
201
- F2: 'F1',
202
- F3: 'F2',
203
- F4: 'F3',
204
- F5: 'F4',
205
- F6: 'F5',
206
- F7: 'F6',
207
- F8: 'F7',
208
- G1: null,
209
- G2: 'G1',
210
- G3: 'G2',
211
- G4: 'G3',
212
- G5: 'G4',
213
- G6: 'G5',
214
- G7: 'G6',
215
- G8: 'G7',
216
- H1: null,
217
- H2: 'H1',
218
- H3: 'H2',
219
- H4: 'H3',
220
- H5: 'H4',
221
- H6: 'H5',
222
- H7: 'H6',
223
- H8: 'H7',
224
- },
225
- LEFT: {
226
- A1: null,
227
- A2: null,
228
- A3: null,
229
- A4: null,
230
- A5: null,
231
- A6: null,
232
- A7: null,
233
- A8: null,
234
- B1: 'A1',
235
- B2: 'A2',
236
- B3: 'A3',
237
- B4: 'A4',
238
- B5: 'A5',
239
- B6: 'A6',
240
- B7: 'A7',
241
- B8: 'A8',
242
- C1: 'B1',
243
- C2: 'B2',
244
- C3: 'B3',
245
- C4: 'B4',
246
- C5: 'B5',
247
- C6: 'B6',
248
- C7: 'B7',
249
- C8: 'B8',
250
- D1: 'C1',
251
- D2: 'C2',
252
- D3: 'C3',
253
- D4: 'C4',
254
- D5: 'C5',
255
- D6: 'C6',
256
- D7: 'C7',
257
- D8: 'C8',
258
- E1: 'D1',
259
- E2: 'D2',
260
- E3: 'D3',
261
- E4: 'D4',
262
- E5: 'D5',
263
- E6: 'D6',
264
- E7: 'D7',
265
- E8: 'D8',
266
- F1: 'E1',
267
- F2: 'E2',
268
- F3: 'E3',
269
- F4: 'E4',
270
- F5: 'E5',
271
- F6: 'E6',
272
- F7: 'E7',
273
- F8: 'E8',
274
- G1: 'F1',
275
- G2: 'F2',
276
- G3: 'F3',
277
- G4: 'F4',
278
- G5: 'F5',
279
- G6: 'F6',
280
- G7: 'F7',
281
- G8: 'F8',
282
- H1: 'G1',
283
- H2: 'G2',
284
- H3: 'G3',
285
- H4: 'G4',
286
- H5: 'G5',
287
- H6: 'G6',
288
- H7: 'G7',
289
- H8: 'G8',
290
- },
291
- RIGHT: {
292
- A1: 'B1',
293
- A2: 'B2',
294
- A3: 'B3',
295
- A4: 'B4',
296
- A5: 'B5',
297
- A6: 'B6',
298
- A7: 'B7',
299
- A8: 'B8',
300
- B1: 'C1',
301
- B2: 'C2',
302
- B3: 'C3',
303
- B4: 'C4',
304
- B5: 'C5',
305
- B6: 'C6',
306
- B7: 'C7',
307
- B8: 'C8',
308
- C1: 'D1',
309
- C2: 'D2',
310
- C3: 'D3',
311
- C4: 'D4',
312
- C5: 'D5',
313
- C6: 'D6',
314
- C7: 'D7',
315
- C8: 'D8',
316
- D1: 'E1',
317
- D2: 'E2',
318
- D3: 'E3',
319
- D4: 'E4',
320
- D5: 'E5',
321
- D6: 'E6',
322
- D7: 'E7',
323
- D8: 'E8',
324
- E1: 'F1',
325
- E2: 'F2',
326
- E3: 'F3',
327
- E4: 'F4',
328
- E5: 'F5',
329
- E6: 'F6',
330
- E7: 'F7',
331
- E8: 'F8',
332
- F1: 'G1',
333
- F2: 'G2',
334
- F3: 'G3',
335
- F4: 'G4',
336
- F5: 'G5',
337
- F6: 'G6',
338
- F7: 'G7',
339
- F8: 'G8',
340
- G1: 'H1',
341
- G2: 'H2',
342
- G3: 'H3',
343
- G4: 'H4',
344
- G5: 'H5',
345
- G6: 'H6',
346
- G7: 'H7',
347
- G8: 'H8',
348
- H1: null,
349
- H2: null,
350
- H3: null,
351
- H4: null,
352
- H5: null,
353
- H6: null,
354
- H7: null,
355
- H8: null,
356
- },
357
- UP_LEFT: {
358
- A1: null,
359
- A2: null,
360
- A3: null,
361
- A4: null,
362
- A5: null,
363
- A6: null,
364
- A7: null,
365
- A8: null,
366
- B1: 'A2',
367
- B2: 'A3',
368
- B3: 'A4',
369
- B4: 'A5',
370
- B5: 'A6',
371
- B6: 'A7',
372
- B7: 'A8',
373
- B8: null,
374
- C1: 'B2',
375
- C2: 'B3',
376
- C3: 'B4',
377
- C4: 'B5',
378
- C5: 'B6',
379
- C6: 'B7',
380
- C7: 'B8',
381
- C8: null,
382
- D1: 'C2',
383
- D2: 'C3',
384
- D3: 'C4',
385
- D4: 'C5',
386
- D5: 'C6',
387
- D6: 'C7',
388
- D7: 'C8',
389
- D8: null,
390
- E1: 'D2',
391
- E2: 'D3',
392
- E3: 'D4',
393
- E4: 'D5',
394
- E5: 'D6',
395
- E6: 'D7',
396
- E7: 'D8',
397
- E8: null,
398
- F1: 'E2',
399
- F2: 'E3',
400
- F3: 'E4',
401
- F4: 'E5',
402
- F5: 'E6',
403
- F6: 'E7',
404
- F7: 'E8',
405
- F8: null,
406
- G1: 'F2',
407
- G2: 'F3',
408
- G3: 'F4',
409
- G4: 'F5',
410
- G5: 'F6',
411
- G6: 'F7',
412
- G7: 'F8',
413
- G8: null,
414
- H1: 'G2',
415
- H2: 'G3',
416
- H3: 'G4',
417
- H4: 'G5',
418
- H5: 'G6',
419
- H6: 'G7',
420
- H7: 'G8',
421
- H8: null,
422
- },
423
- DOWN_RIGHT: {
424
- A1: null,
425
- A2: 'B1',
426
- A3: 'B2',
427
- A4: 'B3',
428
- A5: 'B4',
429
- A6: 'B5',
430
- A7: 'B6',
431
- A8: 'B7',
432
- B1: null,
433
- B2: 'C1',
434
- B3: 'C2',
435
- B4: 'C3',
436
- B5: 'C4',
437
- B6: 'C5',
438
- B7: 'C6',
439
- B8: 'C7',
440
- C1: null,
441
- C2: 'D1',
442
- C3: 'D2',
443
- C4: 'D3',
444
- C5: 'D4',
445
- C6: 'D5',
446
- C7: 'D6',
447
- C8: 'D7',
448
- D1: null,
449
- D2: 'E1',
450
- D3: 'E2',
451
- D4: 'E3',
452
- D5: 'E4',
453
- D6: 'E5',
454
- D7: 'E6',
455
- D8: 'E7',
456
- E1: null,
457
- E2: 'F1',
458
- E3: 'F2',
459
- E4: 'F3',
460
- E5: 'F4',
461
- E6: 'F5',
462
- E7: 'F6',
463
- E8: 'F7',
464
- F1: null,
465
- F2: 'G1',
466
- F3: 'G2',
467
- F4: 'G3',
468
- F5: 'G4',
469
- F6: 'G5',
470
- F7: 'G6',
471
- F8: 'G7',
472
- G1: null,
473
- G2: 'H1',
474
- G3: 'H2',
475
- G4: 'H3',
476
- G5: 'H4',
477
- G6: 'H5',
478
- G7: 'H6',
479
- G8: 'H7',
480
- H1: null,
481
- H2: null,
482
- H3: null,
483
- H4: null,
484
- H5: null,
485
- H6: null,
486
- H7: null,
487
- H8: null,
488
- },
489
- UP_RIGHT: {
490
- A1: 'B2',
491
- A2: 'B3',
492
- A3: 'B4',
493
- A4: 'B5',
494
- A5: 'B6',
495
- A6: 'B7',
496
- A7: 'B8',
497
- A8: null,
498
- B1: 'C2',
499
- B2: 'C3',
500
- B3: 'C4',
501
- B4: 'C5',
502
- B5: 'C6',
503
- B6: 'C7',
504
- B7: 'C8',
505
- B8: null,
506
- C1: 'D2',
507
- C2: 'D3',
508
- C3: 'D4',
509
- C4: 'D5',
510
- C5: 'D6',
511
- C6: 'D7',
512
- C7: 'D8',
513
- C8: null,
514
- D1: 'E2',
515
- D2: 'E3',
516
- D3: 'E4',
517
- D4: 'E5',
518
- D5: 'E6',
519
- D6: 'E7',
520
- D7: 'E8',
521
- D8: null,
522
- E1: 'F2',
523
- E2: 'F3',
524
- E3: 'F4',
525
- E4: 'F5',
526
- E5: 'F6',
527
- E6: 'F7',
528
- E7: 'F8',
529
- E8: null,
530
- F1: 'G2',
531
- F2: 'G3',
532
- F3: 'G4',
533
- F4: 'G5',
534
- F5: 'G6',
535
- F6: 'G7',
536
- F7: 'G8',
537
- F8: null,
538
- G1: 'H2',
539
- G2: 'H3',
540
- G3: 'H4',
541
- G4: 'H5',
542
- G5: 'H6',
543
- G6: 'H7',
544
- G7: 'H8',
545
- G8: null,
546
- H1: null,
547
- H2: null,
548
- H3: null,
549
- H4: null,
550
- H5: null,
551
- H6: null,
552
- H7: null,
553
- H8: null,
554
- },
555
- DOWN_LEFT: {
556
- A1: null,
557
- A2: null,
558
- A3: null,
559
- A4: null,
560
- A5: null,
561
- A6: null,
562
- A7: null,
563
- A8: null,
564
- B1: null,
565
- B2: 'A1',
566
- B3: 'A2',
567
- B4: 'A3',
568
- B5: 'A4',
569
- B6: 'A5',
570
- B7: 'A6',
571
- B8: 'A7',
572
- C1: null,
573
- C2: 'B1',
574
- C3: 'B2',
575
- C4: 'B3',
576
- C5: 'B4',
577
- C6: 'B5',
578
- C7: 'B6',
579
- C8: 'B7',
580
- D1: null,
581
- D2: 'C1',
582
- D3: 'C2',
583
- D4: 'C3',
584
- D5: 'C4',
585
- D6: 'C5',
586
- D7: 'C6',
587
- D8: 'C7',
588
- E1: null,
589
- E2: 'D1',
590
- E3: 'D2',
591
- E4: 'D3',
592
- E5: 'D4',
593
- E6: 'D5',
594
- E7: 'D6',
595
- E8: 'D7',
596
- F1: null,
597
- F2: 'E1',
598
- F3: 'E2',
599
- F4: 'E3',
600
- F5: 'E4',
601
- F6: 'E5',
602
- F7: 'E6',
603
- F8: 'E7',
604
- G1: null,
605
- G2: 'F1',
606
- G3: 'F2',
607
- G4: 'F3',
608
- G5: 'F4',
609
- G6: 'F5',
610
- G7: 'F6',
611
- G8: 'F7',
612
- H1: null,
613
- H2: 'G1',
614
- H3: 'G2',
615
- H4: 'G3',
616
- H5: 'G4',
617
- H6: 'G5',
618
- H7: 'G6',
619
- H8: 'G7',
620
- },
621
- }
622
-
623
- const pawnScore = [
624
- [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
625
- [5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0],
626
- [1.0, 1.0, 2.0, 3.0, 3.0, 2.0, 1.0, 1.0],
627
- [0.5, 0.5, 1.0, 2.5, 2.5, 1.0, 0.5, 0.5],
628
- [0.0, 0.0, 0.0, 2.0, 2.0, 0.0, 0.0, 0.0],
629
- [0.5, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.5],
630
- [0.5, 0.0, 0.0, -2.0, -2.0, 0.0, 0.0, 0.5],
631
- [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
632
- ]
633
-
634
- const knightScore = [
635
- [-4.0, -3.0, -2.0, -2.0, -2.0, -2.0, -3.0, -4.0],
636
- [-3.0, -2.0, 0.0, 0.0, 0.0, 0.0, -2.0, -3.0],
637
- [-2.0, 0.0, 1.0, 1.5, 1.5, 1.0, 0.0, -2.0],
638
- [-2.0, 0.5, 1.5, 2.0, 2.0, 1.5, 0.5, -2.0],
639
- [-2.0, 0.0, 1.5, 2.0, 2.0, 1.5, 0.0, -2.0],
640
- [-2.0, 0.5, 1.0, 1.5, 1.5, 1.0, 0.5, -2.0],
641
- [-3.0, -2.0, 0.0, 0.5, 0.5, 0.0, -2.0, -3.0],
642
- [-4.0, -3.0, -2.0, -2.0, -2.0, -2.0, -3.0, -4.0],
643
- ]
644
-
645
- const bishopScore = [
646
- [-2.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -2.0],
647
- [-1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.0],
648
- [-1.0, 0.0, 0.5, 1.0, 1.0, 0.5, 0.0, -1.0],
649
- [-1.0, 0.5, 0.5, 1.0, 1.0, 0.5, 0.5, -1.0],
650
- [-1.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0, -1.0],
651
- [-1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0],
652
- [-1.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.5, -1.0],
653
- [-2.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -2.0],
654
- ]
655
-
656
- const rookScore = [
657
- [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
658
- [0.5, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.5],
659
- [-0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.5],
660
- [-0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.5],
661
- [-0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.5],
662
- [-0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.5],
663
- [-0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.5],
664
- [0.0, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0],
665
- ]
666
-
667
- const kingScore = [
668
- [-3.0, -4.0, -4.0, -5.0, -5.0, -4.0, -4.0, -3.0],
669
- [-3.0, -4.0, -4.0, -5.0, -5.0, -4.0, -4.0, -3.0],
670
- [-3.0, -4.0, -4.0, -5.0, -5.0, -4.0, -4.0, -3.0],
671
- [-3.0, -4.0, -4.0, -5.0, -5.0, -4.0, -4.0, -3.0],
672
- [-2.0, -3.0, -3.0, -4.0, -4.0, -3.0, -3.0, -2.0],
673
- [-1.0, -2.0, -2.0, -2.0, -2.0, -2.0, -2.0, -1.0],
674
- [2.0, 2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.0],
675
- [2.0, 3.0, 1.0, 0.0, 0.0, 1.0, 3.0, 2.0],
676
- ]
677
-
678
- const queenScore = [
679
- [-2.0, -1.0, -1.0, -0.5, -0.5, -1.0, -1.0, -2.0],
680
- [-1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.0],
681
- [-1.0, 0.0, 0.5, 0.5, 0.5, 0.5, 0.0, -1.0],
682
- [-0.5, 0.0, 0.5, 0.5, 0.5, 0.5, 0.0, -0.5],
683
- [0.0, 0.0, 0.5, 0.5, 0.5, 0.5, 0.0, -0.5],
684
- [-1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.0, -1.0],
685
- [-1.0, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, -1.0],
686
- [-2.0, -1.0, -1.0, -0.5, -0.5, -1.0, -1.0, -2.0],
687
- ]
688
-
689
- export const scoreByPosition = {
690
- P: pawnScore.slice().reverse(),
691
- p: pawnScore,
692
- N: knightScore.slice().reverse(),
693
- n: knightScore,
694
- B: bishopScore.slice().reverse(),
695
- b: bishopScore,
696
- R: rookScore.slice().reverse(),
697
- r: rookScore,
698
- K: kingScore.slice().reverse(),
699
- k: kingScore,
700
- Q: queenScore.slice().reverse(),
701
- q: queenScore,
702
- }
703
-
704
- export function up (location) {
705
- return CLOSE_FIELDS_MAP.UP[location]
706
- }
707
-
708
- export function down (location) {
709
- return CLOSE_FIELDS_MAP.DOWN[location]
710
- }
711
-
712
- export function left (location) {
713
- return CLOSE_FIELDS_MAP.LEFT[location]
714
- }
715
-
716
- export function right (location) {
717
- return CLOSE_FIELDS_MAP.RIGHT[location]
718
- }
719
-
720
- export function upLeft (location) {
721
- return CLOSE_FIELDS_MAP.UP_LEFT[location]
722
- }
723
-
724
- export function upRight (location) {
725
- return CLOSE_FIELDS_MAP.UP_RIGHT[location]
726
- }
727
-
728
- export function downLeft (location) {
729
- return CLOSE_FIELDS_MAP.DOWN_LEFT[location]
730
- }
731
-
732
- export function downRight (location) {
733
- return CLOSE_FIELDS_MAP.DOWN_RIGHT[location]
734
- }
735
-
736
- export function upLeftUp (location) {
737
- const field = upLeft(location)
738
- return field ? up(field) : null
739
- }
740
-
741
- export function upLeftLeft (location) {
742
- const field = upLeft(location)
743
- return field ? left(field) : null
744
- }
745
-
746
- export function upRightUp (location) {
747
- const field = upRight(location)
748
- return field ? up(field) : null
749
- }
750
-
751
- export function upRightRight (location) {
752
- const field = upRight(location)
753
- return field ? right(field) : null
754
- }
755
-
756
- export function downLeftDown (location) {
757
- const field = downLeft(location)
758
- return field ? down(field) : null
759
- }
760
-
761
- export function downLeftLeft (location) {
762
- const field = downLeft(location)
763
- return field ? left(field) : null
764
- }
765
-
766
- export function downRightDown (location) {
767
- const field = downRight(location)
768
- return field ? down(field) : null
769
- }
770
-
771
- export function downRightRight (location) {
772
- const field = downRight(location)
773
- return field ? right(field) : null
774
- }
775
-
776
- export function upByColor (location, color) {
777
- if (color === COLORS.WHITE) {
778
- return CLOSE_FIELDS_MAP.UP[location]
779
- } else {
780
- return CLOSE_FIELDS_MAP.DOWN[location]
781
- }
782
- }
783
-
784
- export function downByColor (location, color) {
785
- if (color === COLORS.WHITE) {
786
- return CLOSE_FIELDS_MAP.DOWN[location]
787
- } else {
788
- return CLOSE_FIELDS_MAP.UP[location]
789
- }
790
- }
791
-
792
- export function leftByColor (location, color) {
793
- if (color === COLORS.WHITE) {
794
- return CLOSE_FIELDS_MAP.LEFT[location]
795
- } else {
796
- return CLOSE_FIELDS_MAP.RIGHT[location]
797
- }
798
- }
799
-
800
- export function rightByColor (location, color) {
801
- if (color === COLORS.WHITE) {
802
- return CLOSE_FIELDS_MAP.RIGHT[location]
803
- } else {
804
- return CLOSE_FIELDS_MAP.LEFT[location]
805
- }
806
- }
807
-
808
- export function upLeftByColor (location, color) {
809
- if (color === COLORS.WHITE) {
810
- return CLOSE_FIELDS_MAP.UP_LEFT[location]
811
- } else {
812
- return CLOSE_FIELDS_MAP.DOWN_RIGHT[location]
813
- }
814
- }
815
-
816
- export function upRightByColor (location, color) {
817
- if (color === COLORS.WHITE) {
818
- return CLOSE_FIELDS_MAP.UP_RIGHT[location]
819
- } else {
820
- return CLOSE_FIELDS_MAP.DOWN_LEFT[location]
821
- }
822
- }
823
-
824
- export function downLeftByColor (location, color) {
825
- if (color === COLORS.WHITE) {
826
- return CLOSE_FIELDS_MAP.DOWN_LEFT[location]
827
- } else {
828
- return CLOSE_FIELDS_MAP.UP_RIGHT[location]
829
- }
830
- }
831
-
832
- export function downRightByColor (location, color) {
833
- if (color === COLORS.WHITE) {
834
- return CLOSE_FIELDS_MAP.DOWN_RIGHT[location]
835
- } else {
836
- return CLOSE_FIELDS_MAP.UP_LEFT[location]
837
- }
838
- }