chess 0.3.5 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +7 -12
- data/Gemfile.lock +1 -1
- data/README.md +2 -2
- data/docs/Chess/BadNotationError.html +3 -3
- data/docs/Chess/Board.html +180 -43
- data/docs/Chess/CGame.html +33 -33
- data/docs/Chess/Game.html +44 -44
- data/docs/Chess/Gnuchess.html +3 -3
- data/docs/Chess/IllegalMoveError.html +5 -5
- data/docs/Chess/InvalidFenFormatError.html +3 -3
- data/docs/Chess/InvalidPgnFormatError.html +3 -3
- data/docs/Chess/Pgn.html +8 -8
- data/docs/Chess/UTF8Notation.html +7 -7
- data/docs/Chess.html +5 -5
- data/docs/_index.html +3 -3
- data/docs/file.README.html +5 -5
- data/docs/frames.html +9 -4
- data/docs/index.html +5 -5
- data/docs/method_list.html +61 -53
- data/docs/top-level-namespace.html +3 -3
- data/ext/chess/chess.c +33 -0
- data/ext/chess/chess.h +1 -0
- data/ext/chess/extconf.rb +1 -26
- data/ext/chess/special.c +6 -6
- data/lib/chess/version.rb +1 -1
- data/test/test_move_generator.rb +15 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 70707b1702323bd7382d8b5c33f4215df8e4cc03456aca37f3c3007c0ca325c4
|
4
|
+
data.tar.gz: dce9ac8cd70a77c5f5ff615f468a58dff050e1ed0da806b1682dcfa407c80754
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c1cfbb10d79c883d5cdfacf01ca079075f7520053e323e6ff030e4882f1d9112aad465b2b47eb5995a9f48150ef332d6b9ee7e05f8218bf97636b965d0a4c463
|
7
|
+
data.tar.gz: 3a81d782a5e9bc63b611bbf6d1305bdd9c848233ee87f83e72e66738a69a5a8365aebbe5a22893cc41da51c4945fb997848aa9f972a61b1ee19f3198e6def9ab
|
data/.github/workflows/ruby.yml
CHANGED
@@ -21,12 +21,13 @@ jobs:
|
|
21
21
|
ruby-version: ['2.7', '3.0', '3.1', '3.2', '3.3']
|
22
22
|
|
23
23
|
steps:
|
24
|
-
-
|
24
|
+
- name: Checkout repository
|
25
|
+
uses: actions/checkout@v4
|
25
26
|
- name: Set up Ruby
|
26
27
|
uses: ruby/setup-ruby@v1
|
27
28
|
with:
|
28
29
|
ruby-version: ${{ matrix.ruby-version }}
|
29
|
-
bundler-cache: true
|
30
|
+
bundler-cache: true
|
30
31
|
- name: Compile extension
|
31
32
|
working-directory: ./ext/chess
|
32
33
|
run: |
|
@@ -36,23 +37,17 @@ jobs:
|
|
36
37
|
run: bundle exec rake test
|
37
38
|
env:
|
38
39
|
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
|
39
|
-
# - name: Upload coverage report to Codecov
|
40
|
-
# uses: codecov/codecov-action@v1
|
41
|
-
# with:
|
42
|
-
# file: ./coverage/.resultset.json
|
43
40
|
|
44
41
|
rubocop:
|
45
42
|
runs-on: ubuntu-latest
|
46
|
-
strategy:
|
47
|
-
matrix:
|
48
|
-
ruby-version: ['2.7', '3.0', '3.1', '3.2', '3.3']
|
49
43
|
|
50
44
|
steps:
|
51
|
-
-
|
45
|
+
- name: Checkout repository
|
46
|
+
uses: actions/checkout@v4
|
52
47
|
- name: Set up Ruby
|
53
48
|
uses: ruby/setup-ruby@v1
|
54
49
|
with:
|
55
|
-
ruby-version:
|
56
|
-
bundler-cache: true
|
50
|
+
ruby-version: '3.3'
|
51
|
+
bundler-cache: true
|
57
52
|
- name: Run Rubocop
|
58
53
|
run: bundle exec rubocop
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -34,7 +34,7 @@ end
|
|
34
34
|
puts g.status
|
35
35
|
```
|
36
36
|
|
37
|
-
**Documentation** is available
|
37
|
+
📚 **Documentation** is available [here](https://pioz.github.io/chess).
|
38
38
|
|
39
39
|
## Questions or problems?
|
40
40
|
|
@@ -44,5 +44,5 @@ pull request.
|
|
44
44
|
|
45
45
|
## Copyright
|
46
46
|
|
47
|
-
Copyright (c)
|
47
|
+
Copyright (c) 2024 [Enrico Pilotto (@pioz)](https://github.com/pioz). See
|
48
48
|
[LICENSE](https://github.com/pioz/chess/blob/master/LICENSE) for details.
|
@@ -227,9 +227,9 @@
|
|
227
227
|
</div>
|
228
228
|
|
229
229
|
<div id="footer">
|
230
|
-
Generated on
|
231
|
-
<a href="
|
232
|
-
0.9.
|
230
|
+
Generated on Fri Aug 30 11:09:51 2024 by
|
231
|
+
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
232
|
+
0.9.36 (ruby-3.3.2).
|
233
233
|
</div>
|
234
234
|
|
235
235
|
</div>
|
data/docs/Chess/Board.html
CHANGED
@@ -94,8 +94,8 @@
|
|
94
94
|
|
95
95
|
<dl>
|
96
96
|
<dt>Defined in:</dt>
|
97
|
-
<dd>ext/chess.c<span class="defines">,<br />
|
98
|
-
ext/chess.c</span>
|
97
|
+
<dd>ext/chess/chess.c<span class="defines">,<br />
|
98
|
+
ext/chess/chess.c</span>
|
99
99
|
</dd>
|
100
100
|
</dl>
|
101
101
|
|
@@ -268,6 +268,30 @@
|
|
268
268
|
<p>Returns the fullmove number: the number of the full move.</p>
|
269
269
|
</div></span>
|
270
270
|
|
271
|
+
</li>
|
272
|
+
|
273
|
+
|
274
|
+
<li class="public ">
|
275
|
+
<span class="summary_signature">
|
276
|
+
|
277
|
+
<a href="#generate_all_moves-instance_method" title="#generate_all_moves (instance method)">#<strong>generate_all_moves</strong> ⇒ Array<String> </a>
|
278
|
+
|
279
|
+
|
280
|
+
|
281
|
+
</span>
|
282
|
+
|
283
|
+
|
284
|
+
|
285
|
+
|
286
|
+
|
287
|
+
|
288
|
+
|
289
|
+
|
290
|
+
|
291
|
+
<span class="summary_desc"><div class='inline'>
|
292
|
+
<p>Generate all legal moves for the current board position.</p>
|
293
|
+
</div></span>
|
294
|
+
|
271
295
|
</li>
|
272
296
|
|
273
297
|
|
@@ -524,7 +548,7 @@
|
|
524
548
|
|
525
549
|
—
|
526
550
|
<div class='inline'>
|
527
|
-
<p>The square of the <span class='object_link'><a href="" title="Chess::Board (class)">Chess::Board</a></span>. Can be an integer between 0 and 63 or a string like
|
551
|
+
<p>The square of the <span class='object_link'><a href="" title="Chess::Board (class)">Chess::Board</a></span>. Can be an integer between 0 and 63 or a string like ‘a2’, ‘c5’…</p>
|
528
552
|
</div>
|
529
553
|
|
530
554
|
</li>
|
@@ -543,7 +567,7 @@
|
|
543
567
|
|
544
568
|
—
|
545
569
|
<div class='inline'>
|
546
|
-
<p>The symbol that identify the piece <em>(
|
570
|
+
<p>The symbol that identify the piece <em>(‘P’, ‘R’, ‘N’, ‘B’, ‘Q’, ‘K’)</em>. Upcase for a white piece, downcase for a black piece.</p>
|
547
571
|
</div>
|
548
572
|
|
549
573
|
</li>
|
@@ -577,7 +601,7 @@
|
|
577
601
|
461</pre>
|
578
602
|
</td>
|
579
603
|
<td>
|
580
|
-
<pre class="code"><span class="info file"># File 'ext/chess.c', line 446</span>
|
604
|
+
<pre class="code"><span class="info file"># File 'ext/chess/chess.c', line 446</span>
|
581
605
|
|
582
606
|
VALUE
|
583
607
|
board_get_piece (VALUE self, VALUE square)
|
@@ -662,7 +686,7 @@ board_get_piece (VALUE self, VALUE square)
|
|
662
686
|
574</pre>
|
663
687
|
</td>
|
664
688
|
<td>
|
665
|
-
<pre class="code"><span class="info file"># File 'ext/chess.c', line 565</span>
|
689
|
+
<pre class="code"><span class="info file"># File 'ext/chess/chess.c', line 565</span>
|
666
690
|
|
667
691
|
VALUE
|
668
692
|
board_active_color (VALUE self)
|
@@ -741,7 +765,7 @@ board_active_color (VALUE self)
|
|
741
765
|
477</pre>
|
742
766
|
</td>
|
743
767
|
<td>
|
744
|
-
<pre class="code"><span class="info file"># File 'ext/chess.c', line 468</span>
|
768
|
+
<pre class="code"><span class="info file"># File 'ext/chess/chess.c', line 468</span>
|
745
769
|
|
746
770
|
VALUE
|
747
771
|
board_king_in_check (VALUE self)
|
@@ -820,7 +844,7 @@ board_king_in_check (VALUE self)
|
|
820
844
|
493</pre>
|
821
845
|
</td>
|
822
846
|
<td>
|
823
|
-
<pre class="code"><span class="info file"># File 'ext/chess.c', line 484</span>
|
847
|
+
<pre class="code"><span class="info file"># File 'ext/chess/chess.c', line 484</span>
|
824
848
|
|
825
849
|
VALUE
|
826
850
|
board_king_in_checkmate (VALUE self)
|
@@ -899,7 +923,7 @@ board_king_in_checkmate (VALUE self)
|
|
899
923
|
557</pre>
|
900
924
|
</td>
|
901
925
|
<td>
|
902
|
-
<pre class="code"><span class="info file"># File 'ext/chess.c', line 548</span>
|
926
|
+
<pre class="code"><span class="info file"># File 'ext/chess/chess.c', line 548</span>
|
903
927
|
|
904
928
|
VALUE
|
905
929
|
board_fifty_move_rule (VALUE self)
|
@@ -936,7 +960,7 @@ board_fifty_move_rule (VALUE self)
|
|
936
960
|
<div class="docstring">
|
937
961
|
<div class="discussion">
|
938
962
|
|
939
|
-
<p>Returns the fullmove number: the number of the full move. It starts at 1, and * is incremented after black
|
963
|
+
<p>Returns the fullmove number: the number of the full move. It starts at 1, and * is incremented after black’s move.</p>
|
940
964
|
|
941
965
|
|
942
966
|
</div>
|
@@ -975,7 +999,7 @@ board_fifty_move_rule (VALUE self)
|
|
975
999
|
603</pre>
|
976
1000
|
</td>
|
977
1001
|
<td>
|
978
|
-
<pre class="code"><span class="info file"># File 'ext/chess.c', line 597</span>
|
1002
|
+
<pre class="code"><span class="info file"># File 'ext/chess/chess.c', line 597</span>
|
979
1003
|
|
980
1004
|
VALUE
|
981
1005
|
board_fullmove_number (VALUE self)
|
@@ -987,6 +1011,119 @@ board_fullmove_number (VALUE self)
|
|
987
1011
|
</td>
|
988
1012
|
</tr>
|
989
1013
|
</table>
|
1014
|
+
</div>
|
1015
|
+
|
1016
|
+
<div class="method_details ">
|
1017
|
+
<h3 class="signature " id="generate_all_moves-instance_method">
|
1018
|
+
|
1019
|
+
#<strong>generate_all_moves</strong> ⇒ <tt>Array<String></tt>
|
1020
|
+
|
1021
|
+
|
1022
|
+
|
1023
|
+
|
1024
|
+
|
1025
|
+
</h3><div class="docstring">
|
1026
|
+
<div class="discussion">
|
1027
|
+
|
1028
|
+
|
1029
|
+
</div>
|
1030
|
+
</div>
|
1031
|
+
<div class="tags">
|
1032
|
+
|
1033
|
+
<div class="docstring">
|
1034
|
+
<div class="discussion">
|
1035
|
+
|
1036
|
+
<p>Generate all legal moves for the current board position.</p>
|
1037
|
+
|
1038
|
+
|
1039
|
+
</div>
|
1040
|
+
</div>
|
1041
|
+
<div class="tags">
|
1042
|
+
|
1043
|
+
<div class="examples">
|
1044
|
+
<p class="tag_title">Examples:</p>
|
1045
|
+
|
1046
|
+
|
1047
|
+
<pre class="example code"><code>:001 > g = Chess::Game.new
|
1048
|
+
=> #<Chess::Game:0x007f88a529fa88>
|
1049
|
+
:002 > g.board.generate_all_moves
|
1050
|
+
=> ["Na3", "Nc3", "Nf3", "Nh3", "a3", "a4", "b3", "b4", "c3", "c4", "d3", "d4", "e3", "e4", "f3", "f4", "g3", "g4", "h3", "h4"]</code></pre>
|
1051
|
+
|
1052
|
+
</div>
|
1053
|
+
|
1054
|
+
<p class="tag_title">Returns:</p>
|
1055
|
+
<ul class="return">
|
1056
|
+
|
1057
|
+
<li>
|
1058
|
+
|
1059
|
+
|
1060
|
+
<span class='type'>(<tt>Array<String></tt>)</span>
|
1061
|
+
|
1062
|
+
|
1063
|
+
|
1064
|
+
—
|
1065
|
+
<div class='inline'>
|
1066
|
+
<p>Returns all legal moves that can be performed in the current board position. The moves are in short algebraic chess notation format.</p>
|
1067
|
+
</div>
|
1068
|
+
|
1069
|
+
</li>
|
1070
|
+
|
1071
|
+
</ul>
|
1072
|
+
|
1073
|
+
</div>
|
1074
|
+
|
1075
|
+
|
1076
|
+
</div><table class="source_code">
|
1077
|
+
<tr>
|
1078
|
+
<td>
|
1079
|
+
<pre class="lines">
|
1080
|
+
|
1081
|
+
|
1082
|
+
655
|
1083
|
+
656
|
1084
|
+
657
|
1085
|
+
658
|
1086
|
+
659
|
1087
|
+
660
|
1088
|
+
661
|
1089
|
+
662
|
1090
|
+
663
|
1091
|
+
664
|
1092
|
+
665
|
1093
|
+
666
|
1094
|
+
667
|
1095
|
+
668
|
1096
|
+
669
|
1097
|
+
670
|
1098
|
+
671
|
1099
|
+
672
|
1100
|
+
673</pre>
|
1101
|
+
</td>
|
1102
|
+
<td>
|
1103
|
+
<pre class="code"><span class="info file"># File 'ext/chess/chess.c', line 655</span>
|
1104
|
+
|
1105
|
+
VALUE
|
1106
|
+
board_generate_all_moves (VALUE self)
|
1107
|
+
{
|
1108
|
+
Board *board;
|
1109
|
+
Data_Get_Struct (self, Board, board);
|
1110
|
+
VALUE moves = rb_ary_new ();
|
1111
|
+
Board new_board;
|
1112
|
+
char *move_done;
|
1113
|
+
char capture;
|
1114
|
+
for (int i = 0; i < 64; i++)
|
1115
|
+
for (int j = 0; j < 64; j++)
|
1116
|
+
if (pseudo_legal_move (board, i, j))
|
1117
|
+
{
|
1118
|
+
move_done = castling (board, castling_type (board, i, j), &new_board);
|
1119
|
+
if (move_done || try_move (board, i, j, 'Q', &new_board, &move_done, &capture))
|
1120
|
+
rb_ary_push (moves, rb_str_new2 (move_done));
|
1121
|
+
}
|
1122
|
+
return moves;
|
1123
|
+
}</pre>
|
1124
|
+
</td>
|
1125
|
+
</tr>
|
1126
|
+
</table>
|
990
1127
|
</div>
|
991
1128
|
|
992
1129
|
<div class="method_details ">
|
@@ -1040,7 +1177,7 @@ board_fullmove_number (VALUE self)
|
|
1040
1177
|
|
1041
1178
|
—
|
1042
1179
|
<div class='inline'>
|
1043
|
-
<p>The square of the <span class='object_link'><a href="" title="Chess::Board (class)">Chess::Board</a></span>. Can be an integer between 0 and 63 or a string like
|
1180
|
+
<p>The square of the <span class='object_link'><a href="" title="Chess::Board (class)">Chess::Board</a></span>. Can be an integer between 0 and 63 or a string like ‘a2’, ‘c5’…</p>
|
1044
1181
|
</div>
|
1045
1182
|
|
1046
1183
|
</li>
|
@@ -1100,7 +1237,7 @@ board_fullmove_number (VALUE self)
|
|
1100
1237
|
641</pre>
|
1101
1238
|
</td>
|
1102
1239
|
<td>
|
1103
|
-
<pre class="code"><span class="info file"># File 'ext/chess.c', line 619</span>
|
1240
|
+
<pre class="code"><span class="info file"># File 'ext/chess/chess.c', line 619</span>
|
1104
1241
|
|
1105
1242
|
VALUE
|
1106
1243
|
board_generate_moves (VALUE self, VALUE square)
|
@@ -1189,7 +1326,7 @@ board_generate_moves (VALUE self, VALUE square)
|
|
1189
1326
|
589</pre>
|
1190
1327
|
</td>
|
1191
1328
|
<td>
|
1192
|
-
<pre class="code"><span class="info file"># File 'ext/chess.c', line 583</span>
|
1329
|
+
<pre class="code"><span class="info file"># File 'ext/chess/chess.c', line 583</span>
|
1193
1330
|
|
1194
1331
|
VALUE
|
1195
1332
|
board_halfmove_clock (VALUE self)
|
@@ -1265,7 +1402,7 @@ board_halfmove_clock (VALUE self)
|
|
1265
1402
|
525</pre>
|
1266
1403
|
</td>
|
1267
1404
|
<td>
|
1268
|
-
<pre class="code"><span class="info file"># File 'ext/chess.c', line 516</span>
|
1405
|
+
<pre class="code"><span class="info file"># File 'ext/chess/chess.c', line 516</span>
|
1269
1406
|
|
1270
1407
|
VALUE
|
1271
1408
|
board_insufficient_material (VALUE self)
|
@@ -1344,7 +1481,7 @@ board_insufficient_material (VALUE self)
|
|
1344
1481
|
541</pre>
|
1345
1482
|
</td>
|
1346
1483
|
<td>
|
1347
|
-
<pre class="code"><span class="info file"># File 'ext/chess.c', line 532</span>
|
1484
|
+
<pre class="code"><span class="info file"># File 'ext/chess/chess.c', line 532</span>
|
1348
1485
|
|
1349
1486
|
VALUE
|
1350
1487
|
board_only_kings (VALUE self)
|
@@ -1475,7 +1612,7 @@ board_only_kings (VALUE self)
|
|
1475
1612
|
421</pre>
|
1476
1613
|
</td>
|
1477
1614
|
<td>
|
1478
|
-
<pre class="code"><span class="info file"># File 'ext/chess.c', line 397</span>
|
1615
|
+
<pre class="code"><span class="info file"># File 'ext/chess/chess.c', line 397</span>
|
1479
1616
|
|
1480
1617
|
VALUE
|
1481
1618
|
board_placement (VALUE self)
|
@@ -1569,7 +1706,7 @@ board_placement (VALUE self)
|
|
1569
1706
|
509</pre>
|
1570
1707
|
</td>
|
1571
1708
|
<td>
|
1572
|
-
<pre class="code"><span class="info file"># File 'ext/chess.c', line 500</span>
|
1709
|
+
<pre class="code"><span class="info file"># File 'ext/chess/chess.c', line 500</span>
|
1573
1710
|
|
1574
1711
|
VALUE
|
1575
1712
|
board_stalemate (VALUE self)
|
@@ -1636,19 +1773,19 @@ board_stalemate (VALUE self)
|
|
1636
1773
|
<pre class="lines">
|
1637
1774
|
|
1638
1775
|
|
1639
|
-
|
1640
|
-
|
1641
|
-
|
1642
|
-
|
1643
|
-
|
1644
|
-
|
1645
|
-
|
1646
|
-
|
1647
|
-
|
1648
|
-
|
1776
|
+
680
|
1777
|
+
681
|
1778
|
+
682
|
1779
|
+
683
|
1780
|
+
684
|
1781
|
+
685
|
1782
|
+
686
|
1783
|
+
687
|
1784
|
+
688
|
1785
|
+
689</pre>
|
1649
1786
|
</td>
|
1650
1787
|
<td>
|
1651
|
-
<pre class="code"><span class="info file"># File 'ext/chess.c', line
|
1788
|
+
<pre class="code"><span class="info file"># File 'ext/chess/chess.c', line 680</span>
|
1652
1789
|
|
1653
1790
|
VALUE
|
1654
1791
|
board_to_fen (VALUE self)
|
@@ -1715,19 +1852,19 @@ board_to_fen (VALUE self)
|
|
1715
1852
|
<pre class="lines">
|
1716
1853
|
|
1717
1854
|
|
1718
|
-
|
1719
|
-
|
1720
|
-
|
1721
|
-
|
1722
|
-
|
1723
|
-
|
1724
|
-
|
1725
|
-
|
1726
|
-
|
1727
|
-
|
1855
|
+
696
|
1856
|
+
697
|
1857
|
+
698
|
1858
|
+
699
|
1859
|
+
700
|
1860
|
+
701
|
1861
|
+
702
|
1862
|
+
703
|
1863
|
+
704
|
1864
|
+
705</pre>
|
1728
1865
|
</td>
|
1729
1866
|
<td>
|
1730
|
-
<pre class="code"><span class="info file"># File 'ext/chess.c', line
|
1867
|
+
<pre class="code"><span class="info file"># File 'ext/chess/chess.c', line 696</span>
|
1731
1868
|
|
1732
1869
|
VALUE
|
1733
1870
|
board_to_s (VALUE self)
|
@@ -1749,9 +1886,9 @@ board_to_s (VALUE self)
|
|
1749
1886
|
</div>
|
1750
1887
|
|
1751
1888
|
<div id="footer">
|
1752
|
-
Generated on
|
1753
|
-
<a href="
|
1754
|
-
0.9.
|
1889
|
+
Generated on Fri Aug 30 11:09:51 2024 by
|
1890
|
+
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
1891
|
+
0.9.36 (ruby-3.3.2).
|
1755
1892
|
</div>
|
1756
1893
|
|
1757
1894
|
</div>
|