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.
- checksums.yaml +4 -4
- data/.gitignore +0 -1
- data/Rakefile +1 -0
- data/doc/apple-touch-icon.png +0 -0
- data/doc/classes/Chess.html +162 -0
- data/doc/classes/Chess/BadNotationError.html +84 -0
- data/doc/classes/Chess/Board.html +795 -0
- data/doc/classes/Chess/CGame.html +1168 -0
- data/doc/classes/Chess/Game.html +775 -0
- data/doc/classes/Chess/Gnuchess.html +206 -0
- data/doc/classes/Chess/IllegalMoveError.html +82 -0
- data/doc/classes/Chess/InvalidFenFormatError.html +82 -0
- data/doc/classes/Chess/InvalidPgnFormatError.html +82 -0
- data/doc/classes/Chess/Pgn.html +332 -0
- data/doc/classes/Chess/UTF8Notation.html +175 -0
- data/doc/created.rid +15 -0
- data/doc/css/github.css +123 -0
- data/doc/css/main.css +323 -0
- data/doc/css/panel.css +384 -0
- data/doc/css/reset.css +48 -0
- data/doc/favicon.ico +0 -0
- data/doc/files/README_rdoc.html +122 -0
- data/doc/files/ext/bitboard_c.html +68 -0
- data/doc/files/ext/board_c.html +68 -0
- data/doc/files/ext/chess_c.html +68 -0
- data/doc/files/ext/common_c.html +68 -0
- data/doc/files/ext/game_c.html +68 -0
- data/doc/files/ext/special_c.html +68 -0
- data/doc/files/lib/chess/exceptions_rb.html +94 -0
- data/doc/files/lib/chess/game_rb.html +84 -0
- data/doc/files/lib/chess/gnuchess_rb.html +84 -0
- data/doc/files/lib/chess/pgn_rb.html +84 -0
- data/doc/files/lib/chess/utf8_notation_rb.html +84 -0
- data/doc/files/lib/chess/version_rb.html +85 -0
- data/doc/files/lib/chess_rb.html +84 -0
- data/doc/i/arrows.png +0 -0
- data/doc/i/results_bg.png +0 -0
- data/doc/i/tree_bg.png +0 -0
- data/doc/index.html +13 -0
- data/doc/js/highlight.pack.js +1 -0
- data/doc/js/jquery-1.3.2.min.js +19 -0
- data/doc/js/jquery-effect.js +593 -0
- data/doc/js/main.js +24 -0
- data/doc/js/navigation.js +142 -0
- data/doc/js/search_index.js +1 -0
- data/doc/js/searchdoc.js +449 -0
- data/doc/js/searcher.js +228 -0
- data/doc/panel/index.html +73 -0
- data/doc/panel/links.html +34 -0
- data/doc/panel/tree.js +1 -0
- data/ext/chess.c +82 -33
- data/ext/chess.h +1 -1
- data/ext/common.c +1 -1
- data/ext/common.h +1 -1
- data/ext/game.c +7 -6
- data/ext/game.h +1 -1
- data/lib/chess/exceptions.rb +2 -1
- data/lib/chess/game.rb +18 -5
- data/lib/chess/gnuchess.rb +1 -1
- data/lib/chess/utf8_notation.rb +1 -0
- data/lib/chess/version.rb +1 -1
- metadata +50 -3
@@ -0,0 +1,1168 @@
|
|
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::CGame</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::CGame
|
24
|
+
|
25
|
+
<span class="parent"><
|
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 collection of boards of a single chess game.</p>
|
44
|
+
|
45
|
+
</div>
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
|
60
|
+
<!-- Method ref -->
|
61
|
+
<div class="sectiontitle">Methods</div>
|
62
|
+
<dl class="methods">
|
63
|
+
|
64
|
+
<dt>#</dt>
|
65
|
+
<dd>
|
66
|
+
<ul>
|
67
|
+
|
68
|
+
|
69
|
+
<li>
|
70
|
+
<a href="#method-i-5B-5D">[]</a>
|
71
|
+
</li>
|
72
|
+
|
73
|
+
</ul>
|
74
|
+
</dd>
|
75
|
+
|
76
|
+
<dt>B</dt>
|
77
|
+
<dd>
|
78
|
+
<ul>
|
79
|
+
|
80
|
+
|
81
|
+
<li>
|
82
|
+
<a href="#method-i-board">board</a>
|
83
|
+
</li>
|
84
|
+
|
85
|
+
</ul>
|
86
|
+
</dd>
|
87
|
+
|
88
|
+
<dt>C</dt>
|
89
|
+
<dd>
|
90
|
+
<ul>
|
91
|
+
|
92
|
+
|
93
|
+
<li>
|
94
|
+
<a href="#method-i-coord_moves">coord_moves</a>,
|
95
|
+
</li>
|
96
|
+
|
97
|
+
|
98
|
+
<li>
|
99
|
+
<a href="#method-i-current">current</a>
|
100
|
+
</li>
|
101
|
+
|
102
|
+
</ul>
|
103
|
+
</dd>
|
104
|
+
|
105
|
+
<dt>D</dt>
|
106
|
+
<dd>
|
107
|
+
<ul>
|
108
|
+
|
109
|
+
|
110
|
+
<li>
|
111
|
+
<a href="#method-i-draw">draw</a>
|
112
|
+
</li>
|
113
|
+
|
114
|
+
</ul>
|
115
|
+
</dd>
|
116
|
+
|
117
|
+
<dt>E</dt>
|
118
|
+
<dd>
|
119
|
+
<ul>
|
120
|
+
|
121
|
+
|
122
|
+
<li>
|
123
|
+
<a href="#method-i-each">each</a>
|
124
|
+
</li>
|
125
|
+
|
126
|
+
</ul>
|
127
|
+
</dd>
|
128
|
+
|
129
|
+
<dt>F</dt>
|
130
|
+
<dd>
|
131
|
+
<ul>
|
132
|
+
|
133
|
+
|
134
|
+
<li>
|
135
|
+
<a href="#method-i-full_moves">full_moves</a>
|
136
|
+
</li>
|
137
|
+
|
138
|
+
</ul>
|
139
|
+
</dd>
|
140
|
+
|
141
|
+
<dt>M</dt>
|
142
|
+
<dd>
|
143
|
+
<ul>
|
144
|
+
|
145
|
+
|
146
|
+
<li>
|
147
|
+
<a href="#method-i-move">move</a>,
|
148
|
+
</li>
|
149
|
+
|
150
|
+
|
151
|
+
<li>
|
152
|
+
<a href="#method-i-move2">move2</a>,
|
153
|
+
</li>
|
154
|
+
|
155
|
+
|
156
|
+
<li>
|
157
|
+
<a href="#method-i-move3">move3</a>,
|
158
|
+
</li>
|
159
|
+
|
160
|
+
|
161
|
+
<li>
|
162
|
+
<a href="#method-i-moves">moves</a>
|
163
|
+
</li>
|
164
|
+
|
165
|
+
</ul>
|
166
|
+
</dd>
|
167
|
+
|
168
|
+
<dt>R</dt>
|
169
|
+
<dd>
|
170
|
+
<ul>
|
171
|
+
|
172
|
+
|
173
|
+
<li>
|
174
|
+
<a href="#method-i-resign">resign</a>,
|
175
|
+
</li>
|
176
|
+
|
177
|
+
|
178
|
+
<li>
|
179
|
+
<a href="#method-i-result">result</a>,
|
180
|
+
</li>
|
181
|
+
|
182
|
+
|
183
|
+
<li>
|
184
|
+
<a href="#method-i-rollback-21">rollback!</a>
|
185
|
+
</li>
|
186
|
+
|
187
|
+
</ul>
|
188
|
+
</dd>
|
189
|
+
|
190
|
+
<dt>S</dt>
|
191
|
+
<dd>
|
192
|
+
<ul>
|
193
|
+
|
194
|
+
|
195
|
+
<li>
|
196
|
+
<a href="#method-i-set_fen-21">set_fen!</a>,
|
197
|
+
</li>
|
198
|
+
|
199
|
+
|
200
|
+
<li>
|
201
|
+
<a href="#method-i-size">size</a>
|
202
|
+
</li>
|
203
|
+
|
204
|
+
</ul>
|
205
|
+
</dd>
|
206
|
+
|
207
|
+
<dt>T</dt>
|
208
|
+
<dd>
|
209
|
+
<ul>
|
210
|
+
|
211
|
+
|
212
|
+
<li>
|
213
|
+
<a href="#method-i-threefold_repetition-3F">threefold_repetition?</a>,
|
214
|
+
</li>
|
215
|
+
|
216
|
+
|
217
|
+
<li>
|
218
|
+
<a href="#method-i-to_s">to_s</a>
|
219
|
+
</li>
|
220
|
+
|
221
|
+
</ul>
|
222
|
+
</dd>
|
223
|
+
|
224
|
+
</dl>
|
225
|
+
|
226
|
+
|
227
|
+
|
228
|
+
|
229
|
+
|
230
|
+
|
231
|
+
|
232
|
+
|
233
|
+
|
234
|
+
|
235
|
+
|
236
|
+
|
237
|
+
|
238
|
+
|
239
|
+
|
240
|
+
|
241
|
+
|
242
|
+
|
243
|
+
<!-- Methods -->
|
244
|
+
|
245
|
+
<div class="sectiontitle">Instance Public methods</div>
|
246
|
+
|
247
|
+
<div class="method">
|
248
|
+
<div class="title method-title" id="method-i-5B-5D">
|
249
|
+
|
250
|
+
<b>[n]
|
251
|
+
</b>
|
252
|
+
|
253
|
+
<a href="../../classes/Chess/CGame.html#method-i-5B-5D" name="method-i-5B-5D" class="permalink">Link</a>
|
254
|
+
</div>
|
255
|
+
|
256
|
+
|
257
|
+
<div class="description">
|
258
|
+
<p>Returns the <code>n</code>-th <a href="Board.html">Board</a> of the <a
|
259
|
+
href="Game.html">Game</a> or <code>nil</code> if the <code>n</code>-th <a
|
260
|
+
href="Board.html">Board</a> does not exist.</p>
|
261
|
+
</div>
|
262
|
+
|
263
|
+
|
264
|
+
|
265
|
+
|
266
|
+
|
267
|
+
|
268
|
+
|
269
|
+
|
270
|
+
<div class="sourcecode">
|
271
|
+
|
272
|
+
<p class="source-link">
|
273
|
+
Source:
|
274
|
+
<a href="javascript:toggleSource('method-i-5B-5D_source')" id="l_method-i-5B-5D_source">show</a>
|
275
|
+
|
276
|
+
</p>
|
277
|
+
<div id="method-i-5B-5D_source" class="dyn-source">
|
278
|
+
<pre>VALUE
|
279
|
+
game_boards (VALUE self, VALUE index)
|
280
|
+
{
|
281
|
+
Game *g;
|
282
|
+
Data_Get_Struct (self, Game, g);
|
283
|
+
int n = FIX2INT (index);
|
284
|
+
Board *board = get_board (g, n);
|
285
|
+
if (board)
|
286
|
+
return Data_Wrap_Struct (board_klass, 0, 0, board);
|
287
|
+
return Qnil;
|
288
|
+
}</pre>
|
289
|
+
</div>
|
290
|
+
</div>
|
291
|
+
|
292
|
+
</div>
|
293
|
+
|
294
|
+
<div class="method">
|
295
|
+
<div class="title method-title" id="method-i-board">
|
296
|
+
|
297
|
+
<b>board</b>()
|
298
|
+
|
299
|
+
<a href="../../classes/Chess/CGame.html#method-i-board" name="method-i-board" class="permalink">Link</a>
|
300
|
+
</div>
|
301
|
+
|
302
|
+
|
303
|
+
<div class="description">
|
304
|
+
|
305
|
+
</div>
|
306
|
+
|
307
|
+
|
308
|
+
|
309
|
+
|
310
|
+
|
311
|
+
<div class="aka">
|
312
|
+
Alias for: <a href="CGame.html#method-i-current">current</a>
|
313
|
+
</div>
|
314
|
+
|
315
|
+
|
316
|
+
|
317
|
+
</div>
|
318
|
+
|
319
|
+
<div class="method">
|
320
|
+
<div class="title method-title" id="method-i-coord_moves">
|
321
|
+
|
322
|
+
<b>coord_moves
|
323
|
+
</b>
|
324
|
+
|
325
|
+
<a href="../../classes/Chess/CGame.html#method-i-coord_moves" name="method-i-coord_moves" class="permalink">Link</a>
|
326
|
+
</div>
|
327
|
+
|
328
|
+
|
329
|
+
<div class="description">
|
330
|
+
<p>Returns the array with all moves done in coordinate chess notation <em>(es:
|
331
|
+
b1c3)</em>.</p>
|
332
|
+
</div>
|
333
|
+
|
334
|
+
|
335
|
+
|
336
|
+
|
337
|
+
|
338
|
+
|
339
|
+
|
340
|
+
|
341
|
+
<div class="sourcecode">
|
342
|
+
|
343
|
+
<p class="source-link">
|
344
|
+
Source:
|
345
|
+
<a href="javascript:toggleSource('method-i-coord_moves_source')" id="l_method-i-coord_moves_source">show</a>
|
346
|
+
|
347
|
+
</p>
|
348
|
+
<div id="method-i-coord_moves_source" class="dyn-source">
|
349
|
+
<pre>VALUE
|
350
|
+
game_coord_moves (VALUE self)
|
351
|
+
{
|
352
|
+
Game *g;
|
353
|
+
Data_Get_Struct (self, Game, g);
|
354
|
+
int i;
|
355
|
+
VALUE moves = rb_ary_new ();
|
356
|
+
for (i = 0; i < g->current; i++)
|
357
|
+
rb_ary_push (moves, rb_str_new2 (g->coord_moves[i]));
|
358
|
+
return moves;
|
359
|
+
}</pre>
|
360
|
+
</div>
|
361
|
+
</div>
|
362
|
+
|
363
|
+
</div>
|
364
|
+
|
365
|
+
<div class="method">
|
366
|
+
<div class="title method-title" id="method-i-current">
|
367
|
+
|
368
|
+
<b>current
|
369
|
+
</b>
|
370
|
+
|
371
|
+
<a href="../../classes/Chess/CGame.html#method-i-current" name="method-i-current" class="permalink">Link</a>
|
372
|
+
</div>
|
373
|
+
|
374
|
+
|
375
|
+
<div class="description">
|
376
|
+
<p>Returns the current <a href="Board.html">Board</a> of the <a
|
377
|
+
href="Game.html">Game</a> (the current chess position of the game).</p>
|
378
|
+
</div>
|
379
|
+
|
380
|
+
|
381
|
+
|
382
|
+
<div class="aka">
|
383
|
+
Also aliased as: <a href="CGame.html#method-i-board">board</a>
|
384
|
+
</div>
|
385
|
+
|
386
|
+
|
387
|
+
|
388
|
+
|
389
|
+
|
390
|
+
|
391
|
+
<div class="sourcecode">
|
392
|
+
|
393
|
+
<p class="source-link">
|
394
|
+
Source:
|
395
|
+
<a href="javascript:toggleSource('method-i-current_source')" id="l_method-i-current_source">show</a>
|
396
|
+
|
397
|
+
</p>
|
398
|
+
<div id="method-i-current_source" class="dyn-source">
|
399
|
+
<pre>VALUE
|
400
|
+
game_current_board (VALUE self)
|
401
|
+
{
|
402
|
+
Game *g;
|
403
|
+
Data_Get_Struct (self, Game, g);
|
404
|
+
return game_boards (self, INT2FIX (g->current-1));
|
405
|
+
}</pre>
|
406
|
+
</div>
|
407
|
+
</div>
|
408
|
+
|
409
|
+
</div>
|
410
|
+
|
411
|
+
<div class="method">
|
412
|
+
<div class="title method-title" id="method-i-draw">
|
413
|
+
|
414
|
+
<b>draw
|
415
|
+
</b>
|
416
|
+
|
417
|
+
<a href="../../classes/Chess/CGame.html#method-i-draw" name="method-i-draw" class="permalink">Link</a>
|
418
|
+
</div>
|
419
|
+
|
420
|
+
|
421
|
+
<div class="description">
|
422
|
+
<p>The game result is set to draw.</p>
|
423
|
+
</div>
|
424
|
+
|
425
|
+
|
426
|
+
|
427
|
+
|
428
|
+
|
429
|
+
|
430
|
+
|
431
|
+
|
432
|
+
<div class="sourcecode">
|
433
|
+
|
434
|
+
<p class="source-link">
|
435
|
+
Source:
|
436
|
+
<a href="javascript:toggleSource('method-i-draw_source')" id="l_method-i-draw_source">show</a>
|
437
|
+
|
438
|
+
</p>
|
439
|
+
<div id="method-i-draw_source" class="dyn-source">
|
440
|
+
<pre>VALUE
|
441
|
+
game_draw (VALUE self)
|
442
|
+
{
|
443
|
+
Game *g;
|
444
|
+
Data_Get_Struct (self, Game, g);
|
445
|
+
g->result = DRAW;
|
446
|
+
return Qnil;
|
447
|
+
}</pre>
|
448
|
+
</div>
|
449
|
+
</div>
|
450
|
+
|
451
|
+
</div>
|
452
|
+
|
453
|
+
<div class="method">
|
454
|
+
<div class="title method-title" id="method-i-each">
|
455
|
+
|
456
|
+
<b>each { |board, move, full_move, index| block }
|
457
|
+
</b>
|
458
|
+
|
459
|
+
<a href="../../classes/Chess/CGame.html#method-i-each" name="method-i-each" class="permalink">Link</a>
|
460
|
+
</div>
|
461
|
+
|
462
|
+
|
463
|
+
<div class="description">
|
464
|
+
<p>Calls <code>block</code> once for each <code>board</code> in self, passing
|
465
|
+
that <code>board</code>, <code>move</code>, <code>full_move</code> and
|
466
|
+
<code>index</code> as parameters. Return self. If no block is given, the
|
467
|
+
array of game moves is returned instead.</p>
|
468
|
+
</div>
|
469
|
+
|
470
|
+
|
471
|
+
|
472
|
+
|
473
|
+
|
474
|
+
|
475
|
+
|
476
|
+
|
477
|
+
<div class="sourcecode">
|
478
|
+
|
479
|
+
<p class="source-link">
|
480
|
+
Source:
|
481
|
+
<a href="javascript:toggleSource('method-i-each_source')" id="l_method-i-each_source">show</a>
|
482
|
+
|
483
|
+
</p>
|
484
|
+
<div id="method-i-each_source" class="dyn-source">
|
485
|
+
<pre>VALUE
|
486
|
+
game_each (VALUE self)
|
487
|
+
{
|
488
|
+
if (!rb_block_given_p ())
|
489
|
+
return game_moves(self);
|
490
|
+
int i;
|
491
|
+
Game *g;
|
492
|
+
Data_Get_Struct (self, Game, g);
|
493
|
+
for (i = 0; i < g->current; i++)
|
494
|
+
rb_yield_values (4, Data_Wrap_Struct (board_klass, 0, 0, get_board (g, i)),
|
495
|
+
rb_str_new2 (g->moves[i]), rb_str_new2 (g->coord_moves[i]),
|
496
|
+
INT2FIX (i));
|
497
|
+
return self;
|
498
|
+
}</pre>
|
499
|
+
</div>
|
500
|
+
</div>
|
501
|
+
|
502
|
+
</div>
|
503
|
+
|
504
|
+
<div class="method">
|
505
|
+
<div class="title method-title" id="method-i-full_moves">
|
506
|
+
|
507
|
+
<b>full_moves</b>()
|
508
|
+
|
509
|
+
<a href="../../classes/Chess/CGame.html#method-i-full_moves" name="method-i-full_moves" class="permalink">Link</a>
|
510
|
+
</div>
|
511
|
+
|
512
|
+
|
513
|
+
<div class="description">
|
514
|
+
|
515
|
+
</div>
|
516
|
+
|
517
|
+
|
518
|
+
|
519
|
+
|
520
|
+
|
521
|
+
|
522
|
+
|
523
|
+
|
524
|
+
<div class="sourcecode">
|
525
|
+
|
526
|
+
<p class="source-link">
|
527
|
+
Source:
|
528
|
+
<a href="javascript:toggleSource('method-i-full_moves_source')" id="l_method-i-full_moves_source">show</a>
|
529
|
+
|
530
|
+
</p>
|
531
|
+
<div id="method-i-full_moves_source" class="dyn-source">
|
532
|
+
<pre>VALUE
|
533
|
+
game_full_moves (VALUE self)
|
534
|
+
{
|
535
|
+
printf ("DEPRECATION WARNING: `full_moves` is deprecated and will be removed, please use `coord_moves` to get the array with all moves done in coordinate chess notation.\n");
|
536
|
+
return game_coord_moves (self);
|
537
|
+
}</pre>
|
538
|
+
</div>
|
539
|
+
</div>
|
540
|
+
|
541
|
+
</div>
|
542
|
+
|
543
|
+
<div class="method">
|
544
|
+
<div class="title method-title" id="method-i-move">
|
545
|
+
|
546
|
+
<b>move(piece, disambiguating, to_coord, promote_in)
|
547
|
+
</b>
|
548
|
+
|
549
|
+
<a href="../../classes/Chess/CGame.html#method-i-move" name="method-i-move" class="permalink">Link</a>
|
550
|
+
</div>
|
551
|
+
|
552
|
+
|
553
|
+
<div class="description">
|
554
|
+
<p>Make a move. This add a new <a href="Board.html">Board</a> in the <a
|
555
|
+
href="Game.html">Game</a>.</p>
|
556
|
+
|
557
|
+
<p>Parameters are:</p>
|
558
|
+
<dl class="rdoc-list note-list"><dt>piece
|
559
|
+
<dd>
|
560
|
+
<p>the character of the moving piece <em>('P', 'R',
|
561
|
+
'N', 'B', 'Q', 'K')</em>.</p>
|
562
|
+
</dd><dt><code>disambiguating</code>
|
563
|
+
<dd>
|
564
|
+
<p>when two (or more) identical pieces can move to the same square, the moving
|
565
|
+
piece is uniquely identified by specifying the piece's letter, followed
|
566
|
+
by (in descending order of preference):</p>
|
567
|
+
<ul><li>
|
568
|
+
<p>the file of departure (if they differ); or</p>
|
569
|
+
</li><li>
|
570
|
+
<p>the rank of departure (if the files are the same but the ranks differ); or</p>
|
571
|
+
</li><li>
|
572
|
+
<p>both the rank and file (if neither alone is sufficient to identify the
|
573
|
+
piece—which occurs only in rare cases where one or more pawns have
|
574
|
+
promoted, resulting in a player having three or more identical pieces able
|
575
|
+
to reach the same square).</p>
|
576
|
+
</li></ul>
|
577
|
+
|
578
|
+
<p>Keep blank if no needed.</p>
|
579
|
+
</dd><dt><code>to_coord</code>
|
580
|
+
<dd>
|
581
|
+
<p>the square where the moving piece will <em>('a1', 'a2', … ,
|
582
|
+
'h7', 'h8')</em>.</p>
|
583
|
+
</dd><dt><code>promote_in</code>
|
584
|
+
<dd>
|
585
|
+
<p>the character of promotion piece <em>('R', 'N',
|
586
|
+
'B', 'Q')</em>. If no promotion occured, this param will be
|
587
|
+
ignored. If no value is passed, 'Q' is the default.</p>
|
588
|
+
</dd></dl>
|
589
|
+
|
590
|
+
<p>This method returns a string that represents the short algebraic chess
|
591
|
+
notation of the move or raise an <a
|
592
|
+
href="IllegalMoveError.html">IllegalMoveError</a> if the move is illegal.</p>
|
593
|
+
</div>
|
594
|
+
|
595
|
+
|
596
|
+
|
597
|
+
|
598
|
+
|
599
|
+
|
600
|
+
|
601
|
+
|
602
|
+
<div class="sourcecode">
|
603
|
+
|
604
|
+
<p class="source-link">
|
605
|
+
Source:
|
606
|
+
<a href="javascript:toggleSource('method-i-move_source')" id="l_method-i-move_source">show</a>
|
607
|
+
|
608
|
+
</p>
|
609
|
+
<div id="method-i-move_source" class="dyn-source">
|
610
|
+
<pre>VALUE
|
611
|
+
game_move (VALUE self, VALUE rb_piece, VALUE rb_disambiguating, VALUE rb_to_coord, VALUE rb_promote_in)
|
612
|
+
{
|
613
|
+
Game *g;
|
614
|
+
Data_Get_Struct (self, Game, g);
|
615
|
+
Board *board = current_board (g);
|
616
|
+
char piece = StringValuePtr (rb_piece)[0];
|
617
|
+
char *disambiguating = StringValuePtr (rb_disambiguating);
|
618
|
+
char *to_coord = StringValuePtr (rb_to_coord);
|
619
|
+
char promote_in = StringValuePtr (rb_promote_in)[0];
|
620
|
+
int from, to;
|
621
|
+
get_coord (board, piece, disambiguating, to_coord, promote_in, &from, &to);
|
622
|
+
// printf ("From: %d, To: %d, Promo: %c\n", from , to , promote_in);
|
623
|
+
if (pseudo_legal_move (board, from, to) && apply_move (g, from, to, promote_in))
|
624
|
+
return rb_str_new2 (current_move (g));
|
625
|
+
else
|
626
|
+
rb_raise (illegal_move_error, "Illegal move");
|
627
|
+
}</pre>
|
628
|
+
</div>
|
629
|
+
</div>
|
630
|
+
|
631
|
+
</div>
|
632
|
+
|
633
|
+
<div class="method">
|
634
|
+
<div class="title method-title" id="method-i-move2">
|
635
|
+
|
636
|
+
<b>move2(from, to, promote_in)
|
637
|
+
</b>
|
638
|
+
|
639
|
+
<a href="../../classes/Chess/CGame.html#method-i-move2" name="method-i-move2" class="permalink">Link</a>
|
640
|
+
</div>
|
641
|
+
|
642
|
+
|
643
|
+
<div class="description">
|
644
|
+
<p>Make a move. This add a new <a href="Board.html">Board</a> in the <a
|
645
|
+
href="Game.html">Game</a>.</p>
|
646
|
+
|
647
|
+
<p>Parameters are:</p>
|
648
|
+
<dl class="rdoc-list note-list"><dt>from
|
649
|
+
<dd>
|
650
|
+
<p>the 2 character string representing the starting square of the moving piece
|
651
|
+
<em>('a1', 'a2', … , 'h7', 'h8')</em>.</p>
|
652
|
+
</dd><dt><code>to</code>
|
653
|
+
<dd>
|
654
|
+
<p>the 2 character string representing the ending square of the moving piece
|
655
|
+
<em>('a1', 'a2', … , 'h7', 'h8')</em>.</p>
|
656
|
+
</dd><dt><code>promote_in</code>
|
657
|
+
<dd>
|
658
|
+
<p>the character of promotion piece <em>('R', 'N',
|
659
|
+
'B', 'Q')</em>. If no promotion occured, this param will be
|
660
|
+
ignored. If no value is passed, 'Q' is the default.</p>
|
661
|
+
</dd></dl>
|
662
|
+
|
663
|
+
<p>This method returns a string that represents the short algebraic chess
|
664
|
+
notation of the move or raise an <a
|
665
|
+
href="IllegalMoveError.html">IllegalMoveError</a> if the move is illegal.</p>
|
666
|
+
</div>
|
667
|
+
|
668
|
+
|
669
|
+
|
670
|
+
|
671
|
+
|
672
|
+
|
673
|
+
|
674
|
+
|
675
|
+
<div class="sourcecode">
|
676
|
+
|
677
|
+
<p class="source-link">
|
678
|
+
Source:
|
679
|
+
<a href="javascript:toggleSource('method-i-move2_source')" id="l_method-i-move2_source">show</a>
|
680
|
+
|
681
|
+
</p>
|
682
|
+
<div id="method-i-move2_source" class="dyn-source">
|
683
|
+
<pre>VALUE
|
684
|
+
game_move2 (VALUE self, VALUE rb_from, VALUE rb_to, VALUE rb_promote_in)
|
685
|
+
{
|
686
|
+
Game *g;
|
687
|
+
Data_Get_Struct (self, Game, g);
|
688
|
+
Board *board = current_board (g);
|
689
|
+
int from = coord_to_square (StringValuePtr (rb_from));
|
690
|
+
int to = coord_to_square (StringValuePtr (rb_to));
|
691
|
+
char promote_in = StringValuePtr (rb_promote_in)[0];
|
692
|
+
if (pseudo_legal_move (board, from, to) && apply_move (g, from, to, promote_in))
|
693
|
+
return rb_str_new2 (current_move (g));
|
694
|
+
else
|
695
|
+
rb_raise (illegal_move_error, "Illegal move");
|
696
|
+
}</pre>
|
697
|
+
</div>
|
698
|
+
</div>
|
699
|
+
|
700
|
+
</div>
|
701
|
+
|
702
|
+
<div class="method">
|
703
|
+
<div class="title method-title" id="method-i-move3">
|
704
|
+
|
705
|
+
<b>move3(from, to, promote_in)
|
706
|
+
</b>
|
707
|
+
|
708
|
+
<a href="../../classes/Chess/CGame.html#method-i-move3" name="method-i-move3" class="permalink">Link</a>
|
709
|
+
</div>
|
710
|
+
|
711
|
+
|
712
|
+
<div class="description">
|
713
|
+
<p>Make a move. This add a new <a href="Board.html">Board</a> in the <a
|
714
|
+
href="Game.html">Game</a>.</p>
|
715
|
+
|
716
|
+
<p>Each square on the chessboard is represented by an integer according to the
|
717
|
+
following scheme:</p>
|
718
|
+
|
719
|
+
<pre><code>8 | 56 57 58 59 60 61 62 63
|
720
|
+
7 | 48 49 50 51 52 53 54 55
|
721
|
+
6 | 40 41 42 43 44 45 46 47
|
722
|
+
5 | 32 33 34 35 36 37 38 39
|
723
|
+
4 | 24 25 26 27 28 29 30 31
|
724
|
+
3 | 16 17 18 19 20 21 22 23
|
725
|
+
2 | 8 9 10 11 12 13 14 15
|
726
|
+
1 | 0 1 2 3 4 5 6 7
|
727
|
+
+-------------------------
|
728
|
+
a b c d e f g h</code></pre>
|
729
|
+
|
730
|
+
<p>Parameters are:</p>
|
731
|
+
<dl class="rdoc-list note-list"><dt><code>from</code>
|
732
|
+
<dd>
|
733
|
+
<p>the integer representing the starting square of the moving piece.</p>
|
734
|
+
</dd><dt><code>to</code>
|
735
|
+
<dd>
|
736
|
+
<p>the integer representing the ending square of the moving piece.</p>
|
737
|
+
</dd><dt><code>promote_in</code>
|
738
|
+
<dd>
|
739
|
+
<p>the character of promotion piece <em>('R', 'N',
|
740
|
+
'B', 'Q')</em>. If no promotion occured, this param will be
|
741
|
+
ignored. If no value is passed, 'Q' is the default.</p>
|
742
|
+
</dd></dl>
|
743
|
+
|
744
|
+
<p>This method returns a string that represents the short algebraic chess
|
745
|
+
notation of the move or raise an <a
|
746
|
+
href="IllegalMoveError.html">IllegalMoveError</a> if the move is illegal.</p>
|
747
|
+
</div>
|
748
|
+
|
749
|
+
|
750
|
+
|
751
|
+
|
752
|
+
|
753
|
+
|
754
|
+
|
755
|
+
|
756
|
+
<div class="sourcecode">
|
757
|
+
|
758
|
+
<p class="source-link">
|
759
|
+
Source:
|
760
|
+
<a href="javascript:toggleSource('method-i-move3_source')" id="l_method-i-move3_source">show</a>
|
761
|
+
|
762
|
+
</p>
|
763
|
+
<div id="method-i-move3_source" class="dyn-source">
|
764
|
+
<pre>VALUE
|
765
|
+
game_move3 (VALUE self, VALUE rb_from, VALUE rb_to, VALUE rb_promote_in)
|
766
|
+
{
|
767
|
+
Game *g;
|
768
|
+
Data_Get_Struct (self, Game, g);
|
769
|
+
Board *board = current_board (g);
|
770
|
+
int from = FIX2INT (rb_from);
|
771
|
+
int to = FIX2INT (rb_to);
|
772
|
+
char promote_in = StringValuePtr (rb_promote_in)[0];
|
773
|
+
if (pseudo_legal_move (board, from, to) && apply_move (g, from, to, promote_in))
|
774
|
+
return rb_str_new2 (current_move (g));
|
775
|
+
else
|
776
|
+
rb_raise (illegal_move_error, "Illegal move");
|
777
|
+
}</pre>
|
778
|
+
</div>
|
779
|
+
</div>
|
780
|
+
|
781
|
+
</div>
|
782
|
+
|
783
|
+
<div class="method">
|
784
|
+
<div class="title method-title" id="method-i-moves">
|
785
|
+
|
786
|
+
<b>moves
|
787
|
+
</b>
|
788
|
+
|
789
|
+
<a href="../../classes/Chess/CGame.html#method-i-moves" name="method-i-moves" class="permalink">Link</a>
|
790
|
+
</div>
|
791
|
+
|
792
|
+
|
793
|
+
<div class="description">
|
794
|
+
<p>Returns the array with all moves done <em>(es: Nc3)</em>.</p>
|
795
|
+
</div>
|
796
|
+
|
797
|
+
|
798
|
+
|
799
|
+
|
800
|
+
|
801
|
+
|
802
|
+
|
803
|
+
|
804
|
+
<div class="sourcecode">
|
805
|
+
|
806
|
+
<p class="source-link">
|
807
|
+
Source:
|
808
|
+
<a href="javascript:toggleSource('method-i-moves_source')" id="l_method-i-moves_source">show</a>
|
809
|
+
|
810
|
+
</p>
|
811
|
+
<div id="method-i-moves_source" class="dyn-source">
|
812
|
+
<pre>VALUE
|
813
|
+
game_moves (VALUE self)
|
814
|
+
{
|
815
|
+
Game *g;
|
816
|
+
Data_Get_Struct (self, Game, g);
|
817
|
+
int i;
|
818
|
+
VALUE moves = rb_ary_new ();
|
819
|
+
for (i = 0; i < g->current; i++)
|
820
|
+
rb_ary_push (moves, rb_str_new2 (g->moves[i]));
|
821
|
+
return moves;
|
822
|
+
}</pre>
|
823
|
+
</div>
|
824
|
+
</div>
|
825
|
+
|
826
|
+
</div>
|
827
|
+
|
828
|
+
<div class="method">
|
829
|
+
<div class="title method-title" id="method-i-resign">
|
830
|
+
|
831
|
+
<b>resign(color)
|
832
|
+
</b>
|
833
|
+
|
834
|
+
<a href="../../classes/Chess/CGame.html#method-i-resign" name="method-i-resign" class="permalink">Link</a>
|
835
|
+
</div>
|
836
|
+
|
837
|
+
|
838
|
+
<div class="description">
|
839
|
+
<p>The game result is set to '1-0' if <code>color</code> is “black”,
|
840
|
+
otherwise is set to '0-1' if color is “white”.</p>
|
841
|
+
|
842
|
+
<p>Parameters are:</p>
|
843
|
+
<dl class="rdoc-list note-list"><dt><code>color</code>
|
844
|
+
<dd>
|
845
|
+
<p>the color of the player who resigns the game; it can be <code>:white</code>
|
846
|
+
or <code>:black</code>.</p>
|
847
|
+
</dd></dl>
|
848
|
+
</div>
|
849
|
+
|
850
|
+
|
851
|
+
|
852
|
+
|
853
|
+
|
854
|
+
|
855
|
+
|
856
|
+
|
857
|
+
<div class="sourcecode">
|
858
|
+
|
859
|
+
<p class="source-link">
|
860
|
+
Source:
|
861
|
+
<a href="javascript:toggleSource('method-i-resign_source')" id="l_method-i-resign_source">show</a>
|
862
|
+
|
863
|
+
</p>
|
864
|
+
<div id="method-i-resign_source" class="dyn-source">
|
865
|
+
<pre>VALUE
|
866
|
+
game_resign (VALUE self, VALUE color)
|
867
|
+
{
|
868
|
+
Game *g;
|
869
|
+
Data_Get_Struct (self, Game, g);
|
870
|
+
const char *c;
|
871
|
+
if (TYPE (color) == T_SYMBOL)
|
872
|
+
c = rb_id2name (SYM2ID (color));
|
873
|
+
else
|
874
|
+
c = StringValuePtr (color);
|
875
|
+
if (strcmp (c, "black") == 0)
|
876
|
+
g->result = WHITE_WON;
|
877
|
+
else if (strcmp (c, "white") == 0)
|
878
|
+
g->result = BLACK_WON;
|
879
|
+
return Qnil;
|
880
|
+
}</pre>
|
881
|
+
</div>
|
882
|
+
</div>
|
883
|
+
|
884
|
+
</div>
|
885
|
+
|
886
|
+
<div class="method">
|
887
|
+
<div class="title method-title" id="method-i-result">
|
888
|
+
|
889
|
+
<b>result
|
890
|
+
</b>
|
891
|
+
|
892
|
+
<a href="../../classes/Chess/CGame.html#method-i-result" name="method-i-result" class="permalink">Link</a>
|
893
|
+
</div>
|
894
|
+
|
895
|
+
|
896
|
+
<div class="description">
|
897
|
+
<p>Returns the result of the game:</p>
|
898
|
+
<dl class="rdoc-list note-list"><dt>*
|
899
|
+
<dd>
|
900
|
+
<p>game in progress;</p>
|
901
|
+
</dd><dt>1-0
|
902
|
+
<dd>
|
903
|
+
<p>white won;</p>
|
904
|
+
</dd><dt>0-1
|
905
|
+
<dd>
|
906
|
+
<p>black won;</p>
|
907
|
+
</dd><dt>1/2-1/2
|
908
|
+
<dd>
|
909
|
+
<p>draw</p>
|
910
|
+
</dd></dl>
|
911
|
+
</div>
|
912
|
+
|
913
|
+
|
914
|
+
|
915
|
+
|
916
|
+
|
917
|
+
|
918
|
+
|
919
|
+
|
920
|
+
<div class="sourcecode">
|
921
|
+
|
922
|
+
<p class="source-link">
|
923
|
+
Source:
|
924
|
+
<a href="javascript:toggleSource('method-i-result_source')" id="l_method-i-result_source">show</a>
|
925
|
+
|
926
|
+
</p>
|
927
|
+
<div id="method-i-result_source" class="dyn-source">
|
928
|
+
<pre>VALUE
|
929
|
+
game_result (VALUE self)
|
930
|
+
{
|
931
|
+
Game *g;
|
932
|
+
Data_Get_Struct (self, Game, g);
|
933
|
+
char *result = result_to_s (g->result);
|
934
|
+
VALUE rb_result = rb_str_new2 (result);
|
935
|
+
free (result);
|
936
|
+
return rb_result;
|
937
|
+
}</pre>
|
938
|
+
</div>
|
939
|
+
</div>
|
940
|
+
|
941
|
+
</div>
|
942
|
+
|
943
|
+
<div class="method">
|
944
|
+
<div class="title method-title" id="method-i-rollback-21">
|
945
|
+
|
946
|
+
<b>rollback!
|
947
|
+
</b>
|
948
|
+
|
949
|
+
<a href="../../classes/Chess/CGame.html#method-i-rollback-21" name="method-i-rollback-21" class="permalink">Link</a>
|
950
|
+
</div>
|
951
|
+
|
952
|
+
|
953
|
+
<div class="description">
|
954
|
+
<p>Rollback last move.</p>
|
955
|
+
</div>
|
956
|
+
|
957
|
+
|
958
|
+
|
959
|
+
|
960
|
+
|
961
|
+
|
962
|
+
|
963
|
+
|
964
|
+
<div class="sourcecode">
|
965
|
+
|
966
|
+
<p class="source-link">
|
967
|
+
Source:
|
968
|
+
<a href="javascript:toggleSource('method-i-rollback-21_source')" id="l_method-i-rollback-21_source">show</a>
|
969
|
+
|
970
|
+
</p>
|
971
|
+
<div id="method-i-rollback-21_source" class="dyn-source">
|
972
|
+
<pre>VALUE
|
973
|
+
game_rollback (VALUE self)
|
974
|
+
{
|
975
|
+
Game *g;
|
976
|
+
Data_Get_Struct (self, Game, g);
|
977
|
+
rollback (g);
|
978
|
+
return self;
|
979
|
+
}</pre>
|
980
|
+
</div>
|
981
|
+
</div>
|
982
|
+
|
983
|
+
</div>
|
984
|
+
|
985
|
+
<div class="method">
|
986
|
+
<div class="title method-title" id="method-i-set_fen-21">
|
987
|
+
|
988
|
+
<b>set_fen!(fen)
|
989
|
+
</b>
|
990
|
+
|
991
|
+
<a href="../../classes/Chess/CGame.html#method-i-set_fen-21" name="method-i-set_fen-21" class="permalink">Link</a>
|
992
|
+
</div>
|
993
|
+
|
994
|
+
|
995
|
+
<div class="description">
|
996
|
+
<p>Set the game position with a FEN string.</p>
|
997
|
+
|
998
|
+
<p>Parameters are:</p>
|
999
|
+
<dl class="rdoc-list note-list"><dt>fen
|
1000
|
+
<dd>
|
1001
|
+
<p>the FEN (Forsyth–Edwards Notation) string notation used to set the game
|
1002
|
+
position.</p>
|
1003
|
+
</dd></dl>
|
1004
|
+
</div>
|
1005
|
+
|
1006
|
+
|
1007
|
+
|
1008
|
+
|
1009
|
+
|
1010
|
+
|
1011
|
+
|
1012
|
+
|
1013
|
+
<div class="sourcecode">
|
1014
|
+
|
1015
|
+
<p class="source-link">
|
1016
|
+
Source:
|
1017
|
+
<a href="javascript:toggleSource('method-i-set_fen-21_source')" id="l_method-i-set_fen-21_source">show</a>
|
1018
|
+
|
1019
|
+
</p>
|
1020
|
+
<div id="method-i-set_fen-21_source" class="dyn-source">
|
1021
|
+
<pre>VALUE
|
1022
|
+
game_set_fen (VALUE self, VALUE fen)
|
1023
|
+
{
|
1024
|
+
Game *g;
|
1025
|
+
Data_Get_Struct (self, Game, g);
|
1026
|
+
set_fen (g, StringValuePtr (fen));
|
1027
|
+
return self;
|
1028
|
+
}</pre>
|
1029
|
+
</div>
|
1030
|
+
</div>
|
1031
|
+
|
1032
|
+
</div>
|
1033
|
+
|
1034
|
+
<div class="method">
|
1035
|
+
<div class="title method-title" id="method-i-size">
|
1036
|
+
|
1037
|
+
<b>size
|
1038
|
+
</b>
|
1039
|
+
|
1040
|
+
<a href="../../classes/Chess/CGame.html#method-i-size" name="method-i-size" class="permalink">Link</a>
|
1041
|
+
</div>
|
1042
|
+
|
1043
|
+
|
1044
|
+
<div class="description">
|
1045
|
+
<p>Returns the number of moves done.</p>
|
1046
|
+
</div>
|
1047
|
+
|
1048
|
+
|
1049
|
+
|
1050
|
+
|
1051
|
+
|
1052
|
+
|
1053
|
+
|
1054
|
+
|
1055
|
+
<div class="sourcecode">
|
1056
|
+
|
1057
|
+
<p class="source-link">
|
1058
|
+
Source:
|
1059
|
+
<a href="javascript:toggleSource('method-i-size_source')" id="l_method-i-size_source">show</a>
|
1060
|
+
|
1061
|
+
</p>
|
1062
|
+
<div id="method-i-size_source" class="dyn-source">
|
1063
|
+
<pre>VALUE
|
1064
|
+
game_size (VALUE self)
|
1065
|
+
{
|
1066
|
+
Game *g;
|
1067
|
+
Data_Get_Struct (self, Game, g);
|
1068
|
+
return INT2FIX (g->current);
|
1069
|
+
}</pre>
|
1070
|
+
</div>
|
1071
|
+
</div>
|
1072
|
+
|
1073
|
+
</div>
|
1074
|
+
|
1075
|
+
<div class="method">
|
1076
|
+
<div class="title method-title" id="method-i-threefold_repetition-3F">
|
1077
|
+
|
1078
|
+
<b>threefold_repetition?
|
1079
|
+
</b>
|
1080
|
+
|
1081
|
+
<a href="../../classes/Chess/CGame.html#method-i-threefold_repetition-3F" name="method-i-threefold_repetition-3F" class="permalink">Link</a>
|
1082
|
+
</div>
|
1083
|
+
|
1084
|
+
|
1085
|
+
<div class="description">
|
1086
|
+
<p>Returns <code>true</code> if a player can claim draw by the threefold
|
1087
|
+
repetition rule, <code>false</code> otherwise.</p>
|
1088
|
+
</div>
|
1089
|
+
|
1090
|
+
|
1091
|
+
|
1092
|
+
|
1093
|
+
|
1094
|
+
|
1095
|
+
|
1096
|
+
|
1097
|
+
<div class="sourcecode">
|
1098
|
+
|
1099
|
+
<p class="source-link">
|
1100
|
+
Source:
|
1101
|
+
<a href="javascript:toggleSource('method-i-threefold_repetition-3F_source')" id="l_method-i-threefold_repetition-3F_source">show</a>
|
1102
|
+
|
1103
|
+
</p>
|
1104
|
+
<div id="method-i-threefold_repetition-3F_source" class="dyn-source">
|
1105
|
+
<pre>VALUE
|
1106
|
+
game_threefold_repetition (VALUE self)
|
1107
|
+
{
|
1108
|
+
Game *g;
|
1109
|
+
Data_Get_Struct (self, Game, g);
|
1110
|
+
if (threefold_repetition (g))
|
1111
|
+
return Qtrue;
|
1112
|
+
else
|
1113
|
+
return Qfalse;
|
1114
|
+
}</pre>
|
1115
|
+
</div>
|
1116
|
+
</div>
|
1117
|
+
|
1118
|
+
</div>
|
1119
|
+
|
1120
|
+
<div class="method">
|
1121
|
+
<div class="title method-title" id="method-i-to_s">
|
1122
|
+
|
1123
|
+
<b>to_s
|
1124
|
+
</b>
|
1125
|
+
|
1126
|
+
<a href="../../classes/Chess/CGame.html#method-i-to_s" name="method-i-to_s" class="permalink">Link</a>
|
1127
|
+
</div>
|
1128
|
+
|
1129
|
+
|
1130
|
+
<div class="description">
|
1131
|
+
<p>Current board to string.</p>
|
1132
|
+
</div>
|
1133
|
+
|
1134
|
+
|
1135
|
+
|
1136
|
+
|
1137
|
+
|
1138
|
+
|
1139
|
+
|
1140
|
+
|
1141
|
+
<div class="sourcecode">
|
1142
|
+
|
1143
|
+
<p class="source-link">
|
1144
|
+
Source:
|
1145
|
+
<a href="javascript:toggleSource('method-i-to_s_source')" id="l_method-i-to_s_source">show</a>
|
1146
|
+
|
1147
|
+
</p>
|
1148
|
+
<div id="method-i-to_s_source" class="dyn-source">
|
1149
|
+
<pre>VALUE
|
1150
|
+
game_to_s (VALUE self)
|
1151
|
+
{
|
1152
|
+
Game *g;
|
1153
|
+
Data_Get_Struct (self, Game, g);
|
1154
|
+
Board *b = get_board (g, g->current-1);
|
1155
|
+
char *s = print_board (b);
|
1156
|
+
VALUE rb_s = rb_str_new2 (s);
|
1157
|
+
free (s);
|
1158
|
+
return rb_s;
|
1159
|
+
}</pre>
|
1160
|
+
</div>
|
1161
|
+
</div>
|
1162
|
+
|
1163
|
+
</div>
|
1164
|
+
</div>
|
1165
|
+
|
1166
|
+
</div>
|
1167
|
+
</body>
|
1168
|
+
</html>
|