chess 0.0.9 → 0.1.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 (62) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +0 -1
  3. data/Rakefile +1 -0
  4. data/doc/apple-touch-icon.png +0 -0
  5. data/doc/classes/Chess.html +162 -0
  6. data/doc/classes/Chess/BadNotationError.html +84 -0
  7. data/doc/classes/Chess/Board.html +795 -0
  8. data/doc/classes/Chess/CGame.html +1168 -0
  9. data/doc/classes/Chess/Game.html +775 -0
  10. data/doc/classes/Chess/Gnuchess.html +206 -0
  11. data/doc/classes/Chess/IllegalMoveError.html +82 -0
  12. data/doc/classes/Chess/InvalidFenFormatError.html +82 -0
  13. data/doc/classes/Chess/InvalidPgnFormatError.html +82 -0
  14. data/doc/classes/Chess/Pgn.html +332 -0
  15. data/doc/classes/Chess/UTF8Notation.html +175 -0
  16. data/doc/created.rid +15 -0
  17. data/doc/css/github.css +123 -0
  18. data/doc/css/main.css +323 -0
  19. data/doc/css/panel.css +384 -0
  20. data/doc/css/reset.css +48 -0
  21. data/doc/favicon.ico +0 -0
  22. data/doc/files/README_rdoc.html +122 -0
  23. data/doc/files/ext/bitboard_c.html +68 -0
  24. data/doc/files/ext/board_c.html +68 -0
  25. data/doc/files/ext/chess_c.html +68 -0
  26. data/doc/files/ext/common_c.html +68 -0
  27. data/doc/files/ext/game_c.html +68 -0
  28. data/doc/files/ext/special_c.html +68 -0
  29. data/doc/files/lib/chess/exceptions_rb.html +94 -0
  30. data/doc/files/lib/chess/game_rb.html +84 -0
  31. data/doc/files/lib/chess/gnuchess_rb.html +84 -0
  32. data/doc/files/lib/chess/pgn_rb.html +84 -0
  33. data/doc/files/lib/chess/utf8_notation_rb.html +84 -0
  34. data/doc/files/lib/chess/version_rb.html +85 -0
  35. data/doc/files/lib/chess_rb.html +84 -0
  36. data/doc/i/arrows.png +0 -0
  37. data/doc/i/results_bg.png +0 -0
  38. data/doc/i/tree_bg.png +0 -0
  39. data/doc/index.html +13 -0
  40. data/doc/js/highlight.pack.js +1 -0
  41. data/doc/js/jquery-1.3.2.min.js +19 -0
  42. data/doc/js/jquery-effect.js +593 -0
  43. data/doc/js/main.js +24 -0
  44. data/doc/js/navigation.js +142 -0
  45. data/doc/js/search_index.js +1 -0
  46. data/doc/js/searchdoc.js +449 -0
  47. data/doc/js/searcher.js +228 -0
  48. data/doc/panel/index.html +73 -0
  49. data/doc/panel/links.html +34 -0
  50. data/doc/panel/tree.js +1 -0
  51. data/ext/chess.c +82 -33
  52. data/ext/chess.h +1 -1
  53. data/ext/common.c +1 -1
  54. data/ext/common.h +1 -1
  55. data/ext/game.c +7 -6
  56. data/ext/game.h +1 -1
  57. data/lib/chess/exceptions.rb +2 -1
  58. data/lib/chess/game.rb +18 -5
  59. data/lib/chess/gnuchess.rb +1 -1
  60. data/lib/chess/utf8_notation.rb +1 -0
  61. data/lib/chess/version.rb +1 -1
  62. metadata +50 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 036423200a559f81a539922ce52bf8f295cbb3be
4
- data.tar.gz: c484e257baa4fc021730ed8b843a9660b61ce9f1
3
+ metadata.gz: 973c9e62761545d56d62ed051f3fdcda270eed70
4
+ data.tar.gz: f1cdd754afaf51da28c59eb883b379c14f9e6263
5
5
  SHA512:
6
- metadata.gz: 2a3053a0d4a754bf9bb0b6ae1bcc778ae461d1d1801b3952a5ac7c46ad2f341ad633c52e40e0c6835083865dabc9a1fd2f6c13e4b1dddbddffa8540ea3a6b332
7
- data.tar.gz: f10709ee4a4d97cd3e6c85ee793512523fb9c489cc65a7f0395b8712af2f842a2606b562ddc50e5b96943201f9f06b0c3950232d4f33cef553239755be2d93b0
6
+ metadata.gz: 2d609c00560340a939f9a9d2a54f3bed16dc12a97c887bae9e932d63084558867f5931348e2996e7ac5471183e0b59ca1c8553c0ddb5fb9b7c191884c4935b76
7
+ data.tar.gz: 7cde74aca5fc145faec8230cc54b8cb8384db7147f33e458512fd5a2f3ced969a18739894e2f8712de857e6e2faebbbeceffc3b7598a40d3bbf52339d7957eda
data/.gitignore CHANGED
@@ -1,6 +1,5 @@
1
1
  *.gem
2
2
  .bundle
3
- doc
4
3
  ext/chess
5
4
  ext/Makefile
6
5
  ext/*.bundle
data/Rakefile CHANGED
@@ -14,5 +14,6 @@ require 'rake/testtask'
14
14
  task :default => :test
15
15
  Rake::TestTask.new do |test|
16
16
  test.libs << 'test'
17
+ test.warning = false
17
18
  test.test_files = FileList["test/test_#{ENV['T'] || '*'}.rb"]
18
19
  end
Binary file
@@ -0,0 +1,162 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
3
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
5
+ <head>
6
+ <title>Chess</title>
7
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
8
+ <link rel="stylesheet" href="../css/reset.css" type="text/css" media="screen" />
9
+ <link rel="stylesheet" href="../css/main.css" type="text/css" media="screen" />
10
+ <link rel="stylesheet" href="../css/github.css" type="text/css" media="screen" />
11
+ <script src="../js/jquery-1.3.2.min.js" type="text/javascript" charset="utf-8"></script>
12
+ <script src="../js/jquery-effect.js" type="text/javascript" charset="utf-8"></script>
13
+ <script src="../js/main.js" type="text/javascript" charset="utf-8"></script>
14
+ <script src="../js/highlight.pack.js" type="text/javascript" charset="utf-8"></script>
15
+
16
+ </head>
17
+
18
+ <body>
19
+ <div class="banner">
20
+
21
+ <h1>
22
+ <span class="type">Module</span>
23
+ Chess
24
+
25
+ </h1>
26
+ <ul class="files">
27
+
28
+ <li><a href="../files/ext/chess_c.html">ext/chess.c</a></li>
29
+
30
+ <li><a href="../files/lib/chess/exceptions_rb.html">lib/chess/exceptions.rb</a></li>
31
+
32
+ <li><a href="../files/lib/chess/game_rb.html">lib/chess/game.rb</a></li>
33
+
34
+ <li><a href="../files/lib/chess/gnuchess_rb.html">lib/chess/gnuchess.rb</a></li>
35
+
36
+ <li><a href="../files/lib/chess/pgn_rb.html">lib/chess/pgn.rb</a></li>
37
+
38
+ <li><a href="../files/lib/chess/utf8_notation_rb.html">lib/chess/utf8_notation.rb</a></li>
39
+
40
+ <li><a href="../files/lib/chess/version_rb.html">lib/chess/version.rb</a></li>
41
+
42
+ </ul>
43
+ </div>
44
+ <div id="bodyContent">
45
+ <div id="content">
46
+
47
+ <div class="description">
48
+
49
+ <p>The <a href="Chess.html">Chess</a> library module.</p>
50
+
51
+ </div>
52
+
53
+
54
+
55
+
56
+
57
+
58
+
59
+
60
+
61
+
62
+
63
+ <!-- Namespace -->
64
+ <div class="sectiontitle">Namespace</div>
65
+ <ul>
66
+
67
+ <li>
68
+ <span class="type">MODULE</span>
69
+ <a href="Chess/Gnuchess.html">Chess::Gnuchess</a>
70
+ </li>
71
+
72
+ <li>
73
+ <span class="type">MODULE</span>
74
+ <a href="Chess/UTF8Notation.html">Chess::UTF8Notation</a>
75
+ </li>
76
+
77
+ <li>
78
+ <span class="type">CLASS</span>
79
+ <a href="Chess/BadNotationError.html">Chess::BadNotationError</a>
80
+ </li>
81
+
82
+ <li>
83
+ <span class="type">CLASS</span>
84
+ <a href="Chess/Board.html">Chess::Board</a>
85
+ </li>
86
+
87
+ <li>
88
+ <span class="type">CLASS</span>
89
+ <a href="Chess/CGame.html">Chess::CGame</a>
90
+ </li>
91
+
92
+ <li>
93
+ <span class="type">CLASS</span>
94
+ <a href="Chess/Game.html">Chess::Game</a>
95
+ </li>
96
+
97
+ <li>
98
+ <span class="type">CLASS</span>
99
+ <a href="Chess/IllegalMoveError.html">Chess::IllegalMoveError</a>
100
+ </li>
101
+
102
+ <li>
103
+ <span class="type">CLASS</span>
104
+ <a href="Chess/InvalidFenFormatError.html">Chess::InvalidFenFormatError</a>
105
+ </li>
106
+
107
+ <li>
108
+ <span class="type">CLASS</span>
109
+ <a href="Chess/InvalidPgnFormatError.html">Chess::InvalidPgnFormatError</a>
110
+ </li>
111
+
112
+ <li>
113
+ <span class="type">CLASS</span>
114
+ <a href="Chess/Pgn.html">Chess::Pgn</a>
115
+ </li>
116
+
117
+ </ul>
118
+
119
+
120
+
121
+
122
+
123
+
124
+
125
+
126
+
127
+
128
+
129
+
130
+
131
+
132
+
133
+
134
+ <!-- Section constants -->
135
+ <div class="sectiontitle">Constants</div>
136
+ <table border='0' cellpadding='5'>
137
+
138
+ <tr valign='top'>
139
+ <td class="attr-name">VERSION</td>
140
+ <td>=</td>
141
+ <td class="attr-value">&#39;0.1.0&#39;</td>
142
+ </tr>
143
+
144
+ <tr valign='top'>
145
+ <td>&nbsp;</td>
146
+ <td colspan="2" class="attr-desc"><p>The library version.</p></td>
147
+ </tr>
148
+
149
+
150
+ </table>
151
+
152
+
153
+
154
+
155
+
156
+
157
+ <!-- Methods -->
158
+ </div>
159
+
160
+ </div>
161
+ </body>
162
+ </html>
@@ -0,0 +1,84 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
3
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
5
+ <head>
6
+ <title>Chess::BadNotationError</title>
7
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
8
+ <link rel="stylesheet" href="../../css/reset.css" type="text/css" media="screen" />
9
+ <link rel="stylesheet" href="../../css/main.css" type="text/css" media="screen" />
10
+ <link rel="stylesheet" href="../../css/github.css" type="text/css" media="screen" />
11
+ <script src="../../js/jquery-1.3.2.min.js" type="text/javascript" charset="utf-8"></script>
12
+ <script src="../../js/jquery-effect.js" type="text/javascript" charset="utf-8"></script>
13
+ <script src="../../js/main.js" type="text/javascript" charset="utf-8"></script>
14
+ <script src="../../js/highlight.pack.js" type="text/javascript" charset="utf-8"></script>
15
+
16
+ </head>
17
+
18
+ <body>
19
+ <div class="banner">
20
+
21
+ <h1>
22
+ <span class="type">Class</span>
23
+ Chess::BadNotationError
24
+
25
+ <span class="parent">&lt;
26
+
27
+ StandardError
28
+
29
+ </span>
30
+
31
+ </h1>
32
+ <ul class="files">
33
+
34
+ <li><a href="../../files/lib/chess/exceptions_rb.html">lib/chess/exceptions.rb</a></li>
35
+
36
+ </ul>
37
+ </div>
38
+ <div id="bodyContent">
39
+ <div id="content">
40
+
41
+ <div class="description">
42
+
43
+ <p>This exception will be raised when an invalid short algebraic chess
44
+ notation string is passed to the <a
45
+ href="Game.html#method-i-move">Chess::Game#move</a> function.</p>
46
+
47
+ </div>
48
+
49
+
50
+
51
+
52
+
53
+
54
+
55
+
56
+
57
+
58
+
59
+
60
+
61
+
62
+
63
+
64
+
65
+
66
+
67
+
68
+
69
+
70
+
71
+
72
+
73
+
74
+
75
+
76
+
77
+
78
+
79
+ <!-- Methods -->
80
+ </div>
81
+
82
+ </div>
83
+ </body>
84
+ </html>
@@ -0,0 +1,795 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
3
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
5
+ <head>
6
+ <title>Chess::Board</title>
7
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
8
+ <link rel="stylesheet" href="../../css/reset.css" type="text/css" media="screen" />
9
+ <link rel="stylesheet" href="../../css/main.css" type="text/css" media="screen" />
10
+ <link rel="stylesheet" href="../../css/github.css" type="text/css" media="screen" />
11
+ <script src="../../js/jquery-1.3.2.min.js" type="text/javascript" charset="utf-8"></script>
12
+ <script src="../../js/jquery-effect.js" type="text/javascript" charset="utf-8"></script>
13
+ <script src="../../js/main.js" type="text/javascript" charset="utf-8"></script>
14
+ <script src="../../js/highlight.pack.js" type="text/javascript" charset="utf-8"></script>
15
+
16
+ </head>
17
+
18
+ <body>
19
+ <div class="banner">
20
+
21
+ <h1>
22
+ <span class="type">Class</span>
23
+ Chess::Board
24
+
25
+ <span class="parent">&lt;
26
+
27
+ Object
28
+
29
+ </span>
30
+
31
+ </h1>
32
+ <ul class="files">
33
+
34
+ <li><a href="../../files/ext/chess_c.html">ext/chess.c</a></li>
35
+
36
+ </ul>
37
+ </div>
38
+ <div id="bodyContent">
39
+ <div id="content">
40
+
41
+ <div class="description">
42
+
43
+ <p>This class rappresents a chess board. The rappresentation of the board use
44
+ <em>bitboards</em> where each bit represents a game position or state,
45
+ designed for optimization of speed and/or memory or disk use in mass
46
+ calculations. This ensures a fast library.</p>
47
+
48
+ </div>
49
+
50
+
51
+
52
+
53
+
54
+
55
+
56
+
57
+
58
+
59
+
60
+
61
+
62
+
63
+ <!-- Method ref -->
64
+ <div class="sectiontitle">Methods</div>
65
+ <dl class="methods">
66
+
67
+ <dt>#</dt>
68
+ <dd>
69
+ <ul>
70
+
71
+
72
+ <li>
73
+ <a href="#method-i-5B-5D">[]</a>
74
+ </li>
75
+
76
+ </ul>
77
+ </dd>
78
+
79
+ <dt>A</dt>
80
+ <dd>
81
+ <ul>
82
+
83
+
84
+ <li>
85
+ <a href="#method-i-active_color">active_color</a>
86
+ </li>
87
+
88
+ </ul>
89
+ </dd>
90
+
91
+ <dt>C</dt>
92
+ <dd>
93
+ <ul>
94
+
95
+
96
+ <li>
97
+ <a href="#method-i-check-3F">check?</a>,
98
+ </li>
99
+
100
+
101
+ <li>
102
+ <a href="#method-i-checkmate-3F">checkmate?</a>
103
+ </li>
104
+
105
+ </ul>
106
+ </dd>
107
+
108
+ <dt>F</dt>
109
+ <dd>
110
+ <ul>
111
+
112
+
113
+ <li>
114
+ <a href="#method-i-fifty_rule_move-3F">fifty_rule_move?</a>,
115
+ </li>
116
+
117
+
118
+ <li>
119
+ <a href="#method-i-fullmove_number">fullmove_number</a>
120
+ </li>
121
+
122
+ </ul>
123
+ </dd>
124
+
125
+ <dt>H</dt>
126
+ <dd>
127
+ <ul>
128
+
129
+
130
+ <li>
131
+ <a href="#method-i-halfmove_clock">halfmove_clock</a>
132
+ </li>
133
+
134
+ </ul>
135
+ </dd>
136
+
137
+ <dt>I</dt>
138
+ <dd>
139
+ <ul>
140
+
141
+
142
+ <li>
143
+ <a href="#method-i-insufficient_material-3F">insufficient_material?</a>
144
+ </li>
145
+
146
+ </ul>
147
+ </dd>
148
+
149
+ <dt>P</dt>
150
+ <dd>
151
+ <ul>
152
+
153
+
154
+ <li>
155
+ <a href="#method-i-placement">placement</a>
156
+ </li>
157
+
158
+ </ul>
159
+ </dd>
160
+
161
+ <dt>S</dt>
162
+ <dd>
163
+ <ul>
164
+
165
+
166
+ <li>
167
+ <a href="#method-i-stalemate-3F">stalemate?</a>
168
+ </li>
169
+
170
+ </ul>
171
+ </dd>
172
+
173
+ <dt>T</dt>
174
+ <dd>
175
+ <ul>
176
+
177
+
178
+ <li>
179
+ <a href="#method-i-to_fen">to_fen</a>,
180
+ </li>
181
+
182
+
183
+ <li>
184
+ <a href="#method-i-to_s">to_s</a>
185
+ </li>
186
+
187
+ </ul>
188
+ </dd>
189
+
190
+ </dl>
191
+
192
+
193
+
194
+
195
+
196
+
197
+
198
+
199
+
200
+
201
+
202
+
203
+
204
+
205
+
206
+
207
+
208
+
209
+ <!-- Methods -->
210
+
211
+ <div class="sectiontitle">Instance Public methods</div>
212
+
213
+ <div class="method">
214
+ <div class="title method-title" id="method-i-5B-5D">
215
+
216
+ <b>[square]
217
+ </b>
218
+
219
+ <a href="../../classes/Chess/Board.html#method-i-5B-5D" name="method-i-5B-5D" class="permalink">Link</a>
220
+ </div>
221
+
222
+
223
+ <div class="description">
224
+ <p>Returns the piece on the <code>square</code> of the chessboard. If there is
225
+ no piece or the square is not valid return the blank string.</p>
226
+
227
+ <p>Each square on the chessboard is represented by an integer according to the
228
+ following scheme:</p>
229
+
230
+ <pre><code>8 | 56 57 58 59 60 61 62 63
231
+ 7 | 48 49 50 51 52 53 54 55
232
+ 6 | 40 41 42 43 44 45 46 47
233
+ 5 | 32 33 34 35 36 37 38 39
234
+ 4 | 24 25 26 27 28 29 30 31
235
+ 3 | 16 17 18 19 20 21 22 23
236
+ 2 | 8 9 10 11 12 13 14 15
237
+ 1 | 0 1 2 3 4 5 6 7
238
+ +-------------------------
239
+ a b c d e f g h</code></pre>
240
+
241
+ <p>Parameters are:</p>
242
+ <dl class="rdoc-list note-list"><dt><code>square</code>
243
+ <dd>
244
+ <p>the square of the board. Can be a fixnum between 0 and 63 or a</p>
245
+ </dd></dl>
246
+
247
+ <p>string like &#39;a2&#39;, &#39;c5&#39;… The string must be downcase.</p>
248
+ </div>
249
+
250
+
251
+
252
+
253
+
254
+
255
+
256
+
257
+ <div class="sourcecode">
258
+
259
+ <p class="source-link">
260
+ Source:
261
+ <a href="javascript:toggleSource('method-i-5B-5D_source')" id="l_method-i-5B-5D_source">show</a>
262
+
263
+ </p>
264
+ <div id="method-i-5B-5D_source" class="dyn-source">
265
+ <pre>VALUE
266
+ board_get_piece (VALUE self, VALUE square)
267
+ {
268
+ Board *board;
269
+ Data_Get_Struct (self, Board, board);
270
+ int i;
271
+ char piece[2];
272
+ piece[1] = &#39;\0&#39;;
273
+ if (TYPE (square) == T_STRING)
274
+ i = coord_to_square (StringValuePtr (square));
275
+ else
276
+ i = FIX2INT (square);
277
+ piece[0] = board-&gt;placement[i];
278
+ return rb_str_new2 (piece);
279
+ }</pre>
280
+ </div>
281
+ </div>
282
+
283
+ </div>
284
+
285
+ <div class="method">
286
+ <div class="title method-title" id="method-i-active_color">
287
+
288
+ <b>active_color
289
+ </b>
290
+
291
+ <a href="../../classes/Chess/Board.html#method-i-active_color" name="method-i-active_color" class="permalink">Link</a>
292
+ </div>
293
+
294
+
295
+ <div class="description">
296
+ <p>Returns the active color: <code>false</code> means white turn,
297
+ <code>true</code> means black turn.</p>
298
+ </div>
299
+
300
+
301
+
302
+
303
+
304
+
305
+
306
+
307
+ <div class="sourcecode">
308
+
309
+ <p class="source-link">
310
+ Source:
311
+ <a href="javascript:toggleSource('method-i-active_color_source')" id="l_method-i-active_color_source">show</a>
312
+
313
+ </p>
314
+ <div id="method-i-active_color_source" class="dyn-source">
315
+ <pre>VALUE
316
+ board_active_color (VALUE self)
317
+ {
318
+ Board *board;
319
+ Data_Get_Struct (self, Board, board);
320
+ if (board-&gt;active_color)
321
+ return Qtrue;
322
+ else
323
+ return Qfalse;
324
+ }</pre>
325
+ </div>
326
+ </div>
327
+
328
+ </div>
329
+
330
+ <div class="method">
331
+ <div class="title method-title" id="method-i-check-3F">
332
+
333
+ <b>check?
334
+ </b>
335
+
336
+ <a href="../../classes/Chess/Board.html#method-i-check-3F" name="method-i-check-3F" class="permalink">Link</a>
337
+ </div>
338
+
339
+
340
+ <div class="description">
341
+ <p>Returns <code>true</code> if the king of the color that has the turn is in
342
+ check, <code>false</code> otherwise.</p>
343
+ </div>
344
+
345
+
346
+
347
+
348
+
349
+
350
+
351
+
352
+ <div class="sourcecode">
353
+
354
+ <p class="source-link">
355
+ Source:
356
+ <a href="javascript:toggleSource('method-i-check-3F_source')" id="l_method-i-check-3F_source">show</a>
357
+
358
+ </p>
359
+ <div id="method-i-check-3F_source" class="dyn-source">
360
+ <pre>VALUE
361
+ board_king_in_check (VALUE self)
362
+ {
363
+ Board *board;
364
+ Data_Get_Struct (self, Board, board);
365
+ if (king_in_check (board, board-&gt;active_color))
366
+ return Qtrue;
367
+ else
368
+ return Qfalse;
369
+ }</pre>
370
+ </div>
371
+ </div>
372
+
373
+ </div>
374
+
375
+ <div class="method">
376
+ <div class="title method-title" id="method-i-checkmate-3F">
377
+
378
+ <b>checkmate?
379
+ </b>
380
+
381
+ <a href="../../classes/Chess/Board.html#method-i-checkmate-3F" name="method-i-checkmate-3F" class="permalink">Link</a>
382
+ </div>
383
+
384
+
385
+ <div class="description">
386
+ <p>Returns <code>true</code> if the king of the color that has the turn is in
387
+ checkmate, <code>false</code> otherwise.</p>
388
+ </div>
389
+
390
+
391
+
392
+
393
+
394
+
395
+
396
+
397
+ <div class="sourcecode">
398
+
399
+ <p class="source-link">
400
+ Source:
401
+ <a href="javascript:toggleSource('method-i-checkmate-3F_source')" id="l_method-i-checkmate-3F_source">show</a>
402
+
403
+ </p>
404
+ <div id="method-i-checkmate-3F_source" class="dyn-source">
405
+ <pre>VALUE
406
+ board_king_in_checkmate (VALUE self)
407
+ {
408
+ Board *board;
409
+ Data_Get_Struct (self, Board, board);
410
+ if (king_in_checkmate (board, board-&gt;active_color))
411
+ return Qtrue;
412
+ else
413
+ return Qfalse;
414
+ }</pre>
415
+ </div>
416
+ </div>
417
+
418
+ </div>
419
+
420
+ <div class="method">
421
+ <div class="title method-title" id="method-i-fifty_rule_move-3F">
422
+
423
+ <b>fifty_move_rule?
424
+ </b>
425
+
426
+ <a href="../../classes/Chess/Board.html#method-i-fifty_rule_move-3F" name="method-i-fifty_rule_move-3F" class="permalink">Link</a>
427
+ </div>
428
+
429
+
430
+ <div class="description">
431
+ <p>Returns <code>true</code> if a player can claim draw by the fifty-move
432
+ rule, <code>false</code> otherwise.</p>
433
+ </div>
434
+
435
+
436
+
437
+
438
+
439
+
440
+
441
+
442
+ <div class="sourcecode">
443
+
444
+ <p class="source-link">
445
+ Source:
446
+ <a href="javascript:toggleSource('method-i-fifty_rule_move-3F_source')" id="l_method-i-fifty_rule_move-3F_source">show</a>
447
+
448
+ </p>
449
+ <div id="method-i-fifty_rule_move-3F_source" class="dyn-source">
450
+ <pre>VALUE
451
+ board_fifty_move_rule (VALUE self)
452
+ {
453
+ Board *board;
454
+ Data_Get_Struct (self, Board, board);
455
+ if (fifty_move_rule (board))
456
+ return Qtrue;
457
+ else
458
+ return Qfalse;
459
+ }</pre>
460
+ </div>
461
+ </div>
462
+
463
+ </div>
464
+
465
+ <div class="method">
466
+ <div class="title method-title" id="method-i-fullmove_number">
467
+
468
+ <b>fullmove_number
469
+ </b>
470
+
471
+ <a href="../../classes/Chess/Board.html#method-i-fullmove_number" name="method-i-fullmove_number" class="permalink">Link</a>
472
+ </div>
473
+
474
+
475
+ <div class="description">
476
+ <p>Returns the fullmove number: the number of the full move. It starts at 1,
477
+ and is incremented after black&#39;s move.</p>
478
+ </div>
479
+
480
+
481
+
482
+
483
+
484
+
485
+
486
+
487
+ <div class="sourcecode">
488
+
489
+ <p class="source-link">
490
+ Source:
491
+ <a href="javascript:toggleSource('method-i-fullmove_number_source')" id="l_method-i-fullmove_number_source">show</a>
492
+
493
+ </p>
494
+ <div id="method-i-fullmove_number_source" class="dyn-source">
495
+ <pre>VALUE
496
+ board_fullmove_number (VALUE self)
497
+ {
498
+ Board *board;
499
+ Data_Get_Struct (self, Board, board);
500
+ return INT2FIX (board-&gt;fullmove_number);
501
+ }</pre>
502
+ </div>
503
+ </div>
504
+
505
+ </div>
506
+
507
+ <div class="method">
508
+ <div class="title method-title" id="method-i-halfmove_clock">
509
+
510
+ <b>halfmove_clock
511
+ </b>
512
+
513
+ <a href="../../classes/Chess/Board.html#method-i-halfmove_clock" name="method-i-halfmove_clock" class="permalink">Link</a>
514
+ </div>
515
+
516
+
517
+ <div class="description">
518
+ <p>Returns the halfmove clock that is the number of halfmoves since the last
519
+ pawn advance or capture. This is used to determine if a draw can be claimed
520
+ under the fifty-move rule.</p>
521
+ </div>
522
+
523
+
524
+
525
+
526
+
527
+
528
+
529
+
530
+ <div class="sourcecode">
531
+
532
+ <p class="source-link">
533
+ Source:
534
+ <a href="javascript:toggleSource('method-i-halfmove_clock_source')" id="l_method-i-halfmove_clock_source">show</a>
535
+
536
+ </p>
537
+ <div id="method-i-halfmove_clock_source" class="dyn-source">
538
+ <pre>VALUE
539
+ board_halfmove_clock (VALUE self)
540
+ {
541
+ Board *board;
542
+ Data_Get_Struct (self, Board, board);
543
+ return INT2FIX (board-&gt;halfmove_clock);
544
+ }</pre>
545
+ </div>
546
+ </div>
547
+
548
+ </div>
549
+
550
+ <div class="method">
551
+ <div class="title method-title" id="method-i-insufficient_material-3F">
552
+
553
+ <b>insufficient_material?
554
+ </b>
555
+
556
+ <a href="../../classes/Chess/Board.html#method-i-insufficient_material-3F" name="method-i-insufficient_material-3F" class="permalink">Link</a>
557
+ </div>
558
+
559
+
560
+ <div class="description">
561
+ <p>Returns <code>true</code> if the board has insufficient material to
562
+ checkmate, <code>false</code> otherwise.</p>
563
+ </div>
564
+
565
+
566
+
567
+
568
+
569
+
570
+
571
+
572
+ <div class="sourcecode">
573
+
574
+ <p class="source-link">
575
+ Source:
576
+ <a href="javascript:toggleSource('method-i-insufficient_material-3F_source')" id="l_method-i-insufficient_material-3F_source">show</a>
577
+
578
+ </p>
579
+ <div id="method-i-insufficient_material-3F_source" class="dyn-source">
580
+ <pre>VALUE
581
+ board_insufficient_material (VALUE self)
582
+ {
583
+ Board *board;
584
+ Data_Get_Struct (self, Board, board);
585
+ if (insufficient_material (board))
586
+ return Qtrue;
587
+ else
588
+ return Qfalse;
589
+ }</pre>
590
+ </div>
591
+ </div>
592
+
593
+ </div>
594
+
595
+ <div class="method">
596
+ <div class="title method-title" id="method-i-placement">
597
+
598
+ <b>placement { |piece, index| block }
599
+ </b>
600
+
601
+ <a href="../../classes/Chess/Board.html#method-i-placement" name="method-i-placement" class="permalink">Link</a>
602
+ </div>
603
+
604
+
605
+ <div class="description">
606
+ <p>Calls <code>block</code> once for each square in the board, passing the
607
+ <code>piece</code> in the square and the <code>index</code> as parameters.
608
+ Return self. If no block is given, the array of pieces is returned instead.</p>
609
+ </div>
610
+
611
+
612
+
613
+
614
+
615
+
616
+
617
+
618
+ <div class="sourcecode">
619
+
620
+ <p class="source-link">
621
+ Source:
622
+ <a href="javascript:toggleSource('method-i-placement_source')" id="l_method-i-placement_source">show</a>
623
+
624
+ </p>
625
+ <div id="method-i-placement_source" class="dyn-source">
626
+ <pre>VALUE
627
+ board_placement (VALUE self)
628
+ {
629
+ Board *board;
630
+ Data_Get_Struct (self, Board, board);
631
+ int i;
632
+ char piece[2];
633
+ piece[1] = &#39;\0&#39;;
634
+ if (!rb_block_given_p ())
635
+ {
636
+ VALUE placement = rb_ary_new ();
637
+ for (i = 0; i &lt; 64; i++)
638
+ {
639
+ piece[0] = board-&gt;placement[i];
640
+ rb_ary_push (placement, rb_str_new2 (piece));
641
+ }
642
+ return placement;
643
+ }
644
+ else
645
+ {
646
+ for (i = 0; i &lt; 64; i++)
647
+ {
648
+ piece[0] = board-&gt;placement[i];
649
+ rb_yield_values (2, rb_str_new2 (piece), INT2FIX (i));
650
+ }
651
+ return self;
652
+ }
653
+ }</pre>
654
+ </div>
655
+ </div>
656
+
657
+ </div>
658
+
659
+ <div class="method">
660
+ <div class="title method-title" id="method-i-stalemate-3F">
661
+
662
+ <b>stalemate?
663
+ </b>
664
+
665
+ <a href="../../classes/Chess/Board.html#method-i-stalemate-3F" name="method-i-stalemate-3F" class="permalink">Link</a>
666
+ </div>
667
+
668
+
669
+ <div class="description">
670
+ <p>Returns <code>true</code> if the pieces of the color that has the turn are
671
+ in stalemate, <code>false</code> otherwise.</p>
672
+ </div>
673
+
674
+
675
+
676
+
677
+
678
+
679
+
680
+
681
+ <div class="sourcecode">
682
+
683
+ <p class="source-link">
684
+ Source:
685
+ <a href="javascript:toggleSource('method-i-stalemate-3F_source')" id="l_method-i-stalemate-3F_source">show</a>
686
+
687
+ </p>
688
+ <div id="method-i-stalemate-3F_source" class="dyn-source">
689
+ <pre>VALUE
690
+ board_stalemate (VALUE self)
691
+ {
692
+ Board *board;
693
+ Data_Get_Struct (self, Board, board);
694
+ if (stalemate (board, board-&gt;active_color))
695
+ return Qtrue;
696
+ else
697
+ return Qfalse;
698
+ }</pre>
699
+ </div>
700
+ </div>
701
+
702
+ </div>
703
+
704
+ <div class="method">
705
+ <div class="title method-title" id="method-i-to_fen">
706
+
707
+ <b>to_fen
708
+ </b>
709
+
710
+ <a href="../../classes/Chess/Board.html#method-i-to_fen" name="method-i-to_fen" class="permalink">Link</a>
711
+ </div>
712
+
713
+
714
+ <div class="description">
715
+ <p>Return the FEN string of the board.</p>
716
+ </div>
717
+
718
+
719
+
720
+
721
+
722
+
723
+
724
+
725
+ <div class="sourcecode">
726
+
727
+ <p class="source-link">
728
+ Source:
729
+ <a href="javascript:toggleSource('method-i-to_fen_source')" id="l_method-i-to_fen_source">show</a>
730
+
731
+ </p>
732
+ <div id="method-i-to_fen_source" class="dyn-source">
733
+ <pre>VALUE
734
+ board_to_fen (VALUE self)
735
+ {
736
+ Board *board;
737
+ Data_Get_Struct (self, Board, board);
738
+ char *fen = to_fen (board);
739
+ VALUE rb_fen = rb_str_new2 (fen);
740
+ free (fen);
741
+ return rb_fen;
742
+ }</pre>
743
+ </div>
744
+ </div>
745
+
746
+ </div>
747
+
748
+ <div class="method">
749
+ <div class="title method-title" id="method-i-to_s">
750
+
751
+ <b>to_s
752
+ </b>
753
+
754
+ <a href="../../classes/Chess/Board.html#method-i-to_s" name="method-i-to_s" class="permalink">Link</a>
755
+ </div>
756
+
757
+
758
+ <div class="description">
759
+ <p><a href="Board.html">Board</a> to string.</p>
760
+ </div>
761
+
762
+
763
+
764
+
765
+
766
+
767
+
768
+
769
+ <div class="sourcecode">
770
+
771
+ <p class="source-link">
772
+ Source:
773
+ <a href="javascript:toggleSource('method-i-to_s_source')" id="l_method-i-to_s_source">show</a>
774
+
775
+ </p>
776
+ <div id="method-i-to_s_source" class="dyn-source">
777
+ <pre>VALUE
778
+ board_to_s (VALUE self)
779
+ {
780
+ Board *board;
781
+ Data_Get_Struct (self, Board, board);
782
+ char *s = print_board (board);
783
+ VALUE rb_s = rb_str_new2 (s);
784
+ free (s);
785
+ return rb_s;
786
+ }</pre>
787
+ </div>
788
+ </div>
789
+
790
+ </div>
791
+ </div>
792
+
793
+ </div>
794
+ </body>
795
+ </html>