chess 0.1.3 → 0.1.4
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 +2 -0
- data/README.md +44 -0
- data/Rakefile +6 -7
- data/chess.gemspec +1 -1
- data/ext/bitboard.c +24 -0
- data/ext/board.c +78 -24
- data/ext/board.h +4 -2
- data/ext/chess.c +216 -196
- data/ext/chess.h +1 -0
- data/ext/common.c +10 -0
- data/ext/game.c +33 -16
- data/ext/special.c +14 -11
- data/ext/special.h +1 -2
- data/lib/chess/exceptions.rb +7 -10
- data/lib/chess/game.rb +66 -50
- data/lib/chess/gnuchess.rb +19 -25
- data/lib/chess/pgn.rb +49 -9
- data/lib/chess/utf8_notation.rb +11 -9
- data/lib/chess/version.rb +1 -1
- data/test/pgn_collection/illegal/0001.pgn +18 -0
- data/test/pgn_collection/illegal/0002.pgn +17 -0
- data/test/pgn_collection/illegal/0003.pgn +13 -0
- data/test/pgn_collection/illegal/0004.pgn +15 -0
- data/test/pgn_collection/illegal/0005.pgn +16 -0
- data/test/pgn_collection/invalid/0001.pgn +20 -0
- data/test/pgn_collection/invalid/0002.pgn +16 -0
- data/test/pgn_collection/invalid/0003.pgn +13 -0
- data/test/pgn_collection/invalid/0004.pgn +15 -0
- data/test/pgn_collection/valid/0001.pgn +6 -7
- data/test/pgn_collection/valid/0002.pgn +8 -9
- data/test/pgn_collection/valid/0005.pgn +7 -8
- data/test/pgn_collection/valid/0009.pgn +14 -15
- data/test/pgn_collection/valid/0010.pgn +6 -7
- data/test/pgn_collection/valid/0011.pgn +5 -6
- data/test/pgn_collection/valid/0012.pgn +0 -1
- data/test/pgn_collection/valid/0013.pgn +5 -6
- data/test/pgn_collection/valid/0014.pgn +6 -7
- data/test/pgn_collection/valid/0020.pgn +6 -7
- data/test/pgn_collection/valid/0021.pgn +15 -16
- data/test/pgn_collection/valid/0971.pgn +22 -14
- data/test/test_big_pgn_collection.rb +12 -5
- data/test/test_helper.rb +1 -1
- data/test/test_illegal_moves.rb +14 -0
- data/test/test_insufficient_material.rb +13 -1
- data/test/test_particular_situations.rb +14 -0
- data/test/test_pgn.rb +24 -0
- data/test/test_pgn_collection.rb +1 -4
- metadata +30 -63
- data/README.rdoc +0 -44
- data/doc/Chess.html +0 -112
- data/doc/Chess/BadNotationError.html +0 -107
- data/doc/Chess/Board.html +0 -700
- data/doc/Chess/CGame.html +0 -1004
- data/doc/Chess/Game.html +0 -684
- data/doc/Chess/Gnuchess.html +0 -215
- data/doc/Chess/IllegalMoveError.html +0 -105
- data/doc/Chess/InvalidFenFormatError.html +0 -105
- data/doc/Chess/InvalidPgnFormatError.html +0 -105
- data/doc/Chess/Pgn.html +0 -309
- data/doc/Chess/UTF8Notation.html +0 -174
- data/doc/README_rdoc.html +0 -143
- data/doc/created.rid +0 -15
- data/doc/css/fonts.css +0 -167
- data/doc/css/rdoc.css +0 -590
- data/doc/fonts/Lato-Light.ttf +0 -0
- data/doc/fonts/Lato-LightItalic.ttf +0 -0
- data/doc/fonts/Lato-Regular.ttf +0 -0
- data/doc/fonts/Lato-RegularItalic.ttf +0 -0
- data/doc/fonts/SourceCodePro-Bold.ttf +0 -0
- data/doc/fonts/SourceCodePro-Regular.ttf +0 -0
- data/doc/images/add.png +0 -0
- data/doc/images/arrow_up.png +0 -0
- data/doc/images/brick.png +0 -0
- data/doc/images/brick_link.png +0 -0
- data/doc/images/bug.png +0 -0
- data/doc/images/bullet_black.png +0 -0
- data/doc/images/bullet_toggle_minus.png +0 -0
- data/doc/images/bullet_toggle_plus.png +0 -0
- data/doc/images/date.png +0 -0
- data/doc/images/delete.png +0 -0
- data/doc/images/find.png +0 -0
- data/doc/images/loadingAnimation.gif +0 -0
- data/doc/images/macFFBgHack.png +0 -0
- data/doc/images/package.png +0 -0
- data/doc/images/page_green.png +0 -0
- data/doc/images/page_white_text.png +0 -0
- data/doc/images/page_white_width.png +0 -0
- data/doc/images/plugin.png +0 -0
- data/doc/images/ruby.png +0 -0
- data/doc/images/tag_blue.png +0 -0
- data/doc/images/tag_green.png +0 -0
- data/doc/images/transparent.png +0 -0
- data/doc/images/wrench.png +0 -0
- data/doc/images/wrench_orange.png +0 -0
- data/doc/images/zoom.png +0 -0
- data/doc/index.html +0 -160
- data/doc/js/darkfish.js +0 -161
- data/doc/js/jquery.js +0 -4
- data/doc/js/navigation.js +0 -142
- data/doc/js/navigation.js.gz +0 -0
- data/doc/js/search.js +0 -109
- data/doc/js/search_index.js +0 -1
- data/doc/js/search_index.js.gz +0 -0
- data/doc/js/searcher.js +0 -229
- data/doc/js/searcher.js.gz +0 -0
- data/doc/table_of_contents.html +0 -331
data/doc/Chess/Game.html
DELETED
@@ -1,684 +0,0 @@
|
|
1
|
-
<!DOCTYPE html>
|
2
|
-
|
3
|
-
<html>
|
4
|
-
<head>
|
5
|
-
<meta charset="UTF-8">
|
6
|
-
|
7
|
-
<title>class Chess::Game - Chess</title>
|
8
|
-
|
9
|
-
<script type="text/javascript">
|
10
|
-
var rdoc_rel_prefix = "../";
|
11
|
-
var index_rel_prefix = "../";
|
12
|
-
</script>
|
13
|
-
|
14
|
-
<script src="../js/jquery.js"></script>
|
15
|
-
<script src="../js/darkfish.js"></script>
|
16
|
-
|
17
|
-
<link href="../css/fonts.css" rel="stylesheet">
|
18
|
-
<link href="../css/rdoc.css" rel="stylesheet">
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
<body id="top" role="document" class="class">
|
23
|
-
<nav role="navigation">
|
24
|
-
<div id="project-navigation">
|
25
|
-
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
|
26
|
-
<h2>
|
27
|
-
<a href="../index.html" rel="home">Home</a>
|
28
|
-
</h2>
|
29
|
-
|
30
|
-
<div id="table-of-contents-navigation">
|
31
|
-
<a href="../table_of_contents.html#pages">Pages</a>
|
32
|
-
<a href="../table_of_contents.html#classes">Classes</a>
|
33
|
-
<a href="../table_of_contents.html#methods">Methods</a>
|
34
|
-
</div>
|
35
|
-
</div>
|
36
|
-
|
37
|
-
<div id="search-section" role="search" class="project-section initially-hidden">
|
38
|
-
<form action="#" method="get" accept-charset="utf-8">
|
39
|
-
<div id="search-field-wrapper">
|
40
|
-
<input id="search-field" role="combobox" aria-label="Search"
|
41
|
-
aria-autocomplete="list" aria-controls="search-results"
|
42
|
-
type="text" name="search" placeholder="Search" spellcheck="false"
|
43
|
-
title="Type to search, Up and Down to navigate, Enter to load">
|
44
|
-
</div>
|
45
|
-
|
46
|
-
<ul id="search-results" aria-label="Search Results"
|
47
|
-
aria-busy="false" aria-expanded="false"
|
48
|
-
aria-atomic="false" class="initially-hidden"></ul>
|
49
|
-
</form>
|
50
|
-
</div>
|
51
|
-
|
52
|
-
</div>
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
<div id="class-metadata">
|
57
|
-
|
58
|
-
<div id="parent-class-section" class="nav-section">
|
59
|
-
<h3>Parent</h3>
|
60
|
-
|
61
|
-
|
62
|
-
<p class="link"><a href="CGame.html">Chess::CGame</a>
|
63
|
-
|
64
|
-
</div>
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
<!-- Method Quickref -->
|
69
|
-
<div id="method-list-section" class="nav-section">
|
70
|
-
<h3>Methods</h3>
|
71
|
-
|
72
|
-
<ul class="link-list" role="directory">
|
73
|
-
|
74
|
-
<li ><a href="#method-c-load_fen">::load_fen</a>
|
75
|
-
|
76
|
-
<li ><a href="#method-c-load_pgn">::load_pgn</a>
|
77
|
-
|
78
|
-
<li ><a href="#method-c-new">::new</a>
|
79
|
-
|
80
|
-
<li ><a href="#method-i-3C-3C">#<<</a>
|
81
|
-
|
82
|
-
<li ><a href="#method-i-active_player">#active_player</a>
|
83
|
-
|
84
|
-
<li ><a href="#method-i-inactive_player">#inactive_player</a>
|
85
|
-
|
86
|
-
<li class="calls-super" ><a href="#method-i-move">#move</a>
|
87
|
-
|
88
|
-
<li ><a href="#method-i-move-3D">#move=</a>
|
89
|
-
|
90
|
-
<li ><a href="#method-i-moves-3D">#moves=</a>
|
91
|
-
|
92
|
-
<li ><a href="#method-i-over-3F">#over?</a>
|
93
|
-
|
94
|
-
<li ><a href="#method-i-pgn">#pgn</a>
|
95
|
-
|
96
|
-
<li ><a href="#method-i-status">#status</a>
|
97
|
-
|
98
|
-
</ul>
|
99
|
-
</div>
|
100
|
-
|
101
|
-
</div>
|
102
|
-
</nav>
|
103
|
-
|
104
|
-
<main role="main" aria-labelledby="class-Chess::Game">
|
105
|
-
<h1 id="class-Chess::Game" class="class">
|
106
|
-
class Chess::Game
|
107
|
-
</h1>
|
108
|
-
|
109
|
-
<section class="description">
|
110
|
-
|
111
|
-
<p>This class rappresents a chess game.</p>
|
112
|
-
|
113
|
-
</section>
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
<section id="5Buntitled-5D" class="documentation-section">
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
<section id="public-class-5Buntitled-5D-method-details" class="method-section">
|
129
|
-
<header>
|
130
|
-
<h3>Public Class Methods</h3>
|
131
|
-
</header>
|
132
|
-
|
133
|
-
|
134
|
-
<div id="method-c-load_fen" class="method-detail ">
|
135
|
-
|
136
|
-
<div class="method-heading">
|
137
|
-
<span class="method-name">load_fen</span><span
|
138
|
-
class="method-args">(fen)</span>
|
139
|
-
|
140
|
-
<span class="method-click-advice">click to toggle source</span>
|
141
|
-
|
142
|
-
</div>
|
143
|
-
|
144
|
-
|
145
|
-
<div class="method-description">
|
146
|
-
|
147
|
-
<p>Creates a new game from a FEN string.</p>
|
148
|
-
|
149
|
-
<p>May be raise an <a
|
150
|
-
href="InvalidFenFormatError.html">InvalidFenFormatError</a>.</p>
|
151
|
-
|
152
|
-
<p><strong>Warning</strong>: this game do not have history before the FEN
|
153
|
-
placement.</p>
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
<div class="method-source-code" id="load_fen-source">
|
159
|
-
<pre><span class="ruby-comment"># File lib/chess/game.rb, line 43</span>
|
160
|
-
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">load_fen</span>(<span class="ruby-identifier">fen</span>)
|
161
|
-
<span class="ruby-keyword">if</span> <span class="ruby-identifier">fen</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp">/^((?:[PRNBQKprnbqk1-8]{1,8}\/){7}[RNBQKPrnbqkp1-8]{1,8})\s(w|b)\s(K?Q?k?q?|-)\s([a-h][1-8]|-)\s(\d+)\s(\d+)$/</span>
|
162
|
-
<span class="ruby-identifier">game</span> = <span class="ruby-constant">Chess</span><span class="ruby-operator">::</span><span class="ruby-constant">Game</span>.<span class="ruby-identifier">new</span>
|
163
|
-
<span class="ruby-identifier">game</span>.<span class="ruby-identifier">set_fen!</span>(<span class="ruby-identifier">fen</span>)
|
164
|
-
<span class="ruby-keyword">return</span> <span class="ruby-identifier">game</span>
|
165
|
-
<span class="ruby-keyword">else</span>
|
166
|
-
<span class="ruby-identifier">raise</span> <span class="ruby-constant">InvalidFenFormatError</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">fen</span>)
|
167
|
-
<span class="ruby-keyword">end</span>
|
168
|
-
<span class="ruby-keyword">end</span></pre>
|
169
|
-
</div>
|
170
|
-
|
171
|
-
</div>
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
</div>
|
177
|
-
|
178
|
-
|
179
|
-
<div id="method-c-load_pgn" class="method-detail ">
|
180
|
-
|
181
|
-
<div class="method-heading">
|
182
|
-
<span class="method-name">load_pgn</span><span
|
183
|
-
class="method-args">(file)</span>
|
184
|
-
|
185
|
-
<span class="method-click-advice">click to toggle source</span>
|
186
|
-
|
187
|
-
</div>
|
188
|
-
|
189
|
-
|
190
|
-
<div class="method-description">
|
191
|
-
|
192
|
-
<p>Creates a new game from a file in PGN format.</p>
|
193
|
-
|
194
|
-
<p>May be raise an <a
|
195
|
-
href="InvalidPgnFormatError.html">InvalidPgnFormatError</a> or <a
|
196
|
-
href="IllegalMoveError.html">IllegalMoveError</a> or <a
|
197
|
-
href="BadNotationError.html">BadNotationError</a>.</p>
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
<div class="method-source-code" id="load_pgn-source">
|
203
|
-
<pre><span class="ruby-comment"># File lib/chess/game.rb, line 18</span>
|
204
|
-
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">load_pgn</span>(<span class="ruby-identifier">file</span>)
|
205
|
-
<span class="ruby-identifier">pgn</span> = <span class="ruby-constant">Chess</span><span class="ruby-operator">::</span><span class="ruby-constant">Pgn</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">file</span>)
|
206
|
-
<span class="ruby-identifier">game</span> = <span class="ruby-constant">Chess</span><span class="ruby-operator">::</span><span class="ruby-constant">Game</span>.<span class="ruby-identifier">new</span>
|
207
|
-
<span class="ruby-identifier">pgn</span>.<span class="ruby-identifier">moves</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">m</span><span class="ruby-operator">|</span> <span class="ruby-identifier">game</span>.<span class="ruby-identifier">move</span>(<span class="ruby-identifier">m</span>) }
|
208
|
-
<span class="ruby-keyword">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">game</span>.<span class="ruby-identifier">over?</span>
|
209
|
-
<span class="ruby-keyword">case</span> <span class="ruby-identifier">pgn</span>.<span class="ruby-identifier">result</span>
|
210
|
-
<span class="ruby-keyword">when</span> <span class="ruby-string">'1-0'</span>
|
211
|
-
<span class="ruby-identifier">game</span>.<span class="ruby-identifier">resign</span>(<span class="ruby-value">:black</span>)
|
212
|
-
<span class="ruby-keyword">when</span> <span class="ruby-string">'0-1'</span>
|
213
|
-
<span class="ruby-identifier">game</span>.<span class="ruby-identifier">resign</span>(<span class="ruby-value">:white</span>)
|
214
|
-
<span class="ruby-keyword">when</span> <span class="ruby-string">'1/2-1/2'</span>
|
215
|
-
<span class="ruby-keyword">if</span> <span class="ruby-identifier">game</span>.<span class="ruby-identifier">board</span>.<span class="ruby-identifier">insufficient_material?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">game</span>.<span class="ruby-identifier">board</span>.<span class="ruby-identifier">stalemate?</span> <span class="ruby-operator">||</span>
|
216
|
-
<span class="ruby-identifier">game</span>.<span class="ruby-identifier">threefold_repetition?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">game</span>.<span class="ruby-identifier">board</span>.<span class="ruby-identifier">fifty_rule_move?</span>
|
217
|
-
<span class="ruby-identifier">game</span>.<span class="ruby-identifier">draw</span>
|
218
|
-
<span class="ruby-keyword">end</span>
|
219
|
-
<span class="ruby-keyword">end</span>
|
220
|
-
<span class="ruby-keyword">end</span>
|
221
|
-
<span class="ruby-keyword">return</span> <span class="ruby-identifier">game</span>
|
222
|
-
<span class="ruby-keyword">end</span></pre>
|
223
|
-
</div>
|
224
|
-
|
225
|
-
</div>
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
</div>
|
231
|
-
|
232
|
-
|
233
|
-
<div id="method-c-new" class="method-detail ">
|
234
|
-
|
235
|
-
<div class="method-heading">
|
236
|
-
<span class="method-name">new</span><span
|
237
|
-
class="method-args">(moves = [])</span>
|
238
|
-
|
239
|
-
<span class="method-click-advice">click to toggle source</span>
|
240
|
-
|
241
|
-
</div>
|
242
|
-
|
243
|
-
|
244
|
-
<div class="method-description">
|
245
|
-
|
246
|
-
<p>Create a new game. If an array of moves is provided, the moves will be
|
247
|
-
performed.</p>
|
248
|
-
|
249
|
-
<p>May be raise an <a href="IllegalMoveError.html">IllegalMoveError</a> or <a
|
250
|
-
href="BadNotationError.html">BadNotationError</a>.</p>
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
<div class="method-source-code" id="new-source">
|
256
|
-
<pre><span class="ruby-comment"># File lib/chess/game.rb, line 11</span>
|
257
|
-
<span class="ruby-keyword">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">moves</span> = [])
|
258
|
-
<span class="ruby-identifier">moves</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">m</span><span class="ruby-operator">|</span> <span class="ruby-identifier">move</span>(<span class="ruby-identifier">m</span>) }
|
259
|
-
<span class="ruby-keyword">end</span></pre>
|
260
|
-
</div>
|
261
|
-
|
262
|
-
</div>
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
</div>
|
268
|
-
|
269
|
-
|
270
|
-
</section>
|
271
|
-
|
272
|
-
<section id="public-instance-5Buntitled-5D-method-details" class="method-section">
|
273
|
-
<header>
|
274
|
-
<h3>Public Instance Methods</h3>
|
275
|
-
</header>
|
276
|
-
|
277
|
-
|
278
|
-
<div id="method-i-3C-3C" class="method-detail method-alias">
|
279
|
-
|
280
|
-
<div class="method-heading">
|
281
|
-
<span class="method-name"><<</span><span
|
282
|
-
class="method-args">(m)</span>
|
283
|
-
|
284
|
-
</div>
|
285
|
-
|
286
|
-
|
287
|
-
<div class="method-description">
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
</div>
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
<div class="aliases">
|
300
|
-
Alias for: <a href="Game.html#method-i-move">move</a>
|
301
|
-
</div>
|
302
|
-
|
303
|
-
</div>
|
304
|
-
|
305
|
-
|
306
|
-
<div id="method-i-active_player" class="method-detail ">
|
307
|
-
|
308
|
-
<div class="method-heading">
|
309
|
-
<span class="method-name">active_player</span><span
|
310
|
-
class="method-args">()</span>
|
311
|
-
|
312
|
-
<span class="method-click-advice">click to toggle source</span>
|
313
|
-
|
314
|
-
</div>
|
315
|
-
|
316
|
-
|
317
|
-
<div class="method-description">
|
318
|
-
|
319
|
-
<p>Returns <code>:white</code> if the active player is the white player,
|
320
|
-
<code>:black</code> otherwise.</p>
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
<div class="method-source-code" id="active_player-source">
|
326
|
-
<pre><span class="ruby-comment"># File lib/chess/game.rb, line 87</span>
|
327
|
-
<span class="ruby-keyword">def</span> <span class="ruby-identifier">active_player</span>
|
328
|
-
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">board</span>.<span class="ruby-identifier">active_color</span> <span class="ruby-operator">?</span> <span class="ruby-value">:black</span> <span class="ruby-operator">:</span> <span class="ruby-value">:white</span>
|
329
|
-
<span class="ruby-keyword">end</span></pre>
|
330
|
-
</div>
|
331
|
-
|
332
|
-
</div>
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
</div>
|
338
|
-
|
339
|
-
|
340
|
-
<div id="method-i-inactive_player" class="method-detail ">
|
341
|
-
|
342
|
-
<div class="method-heading">
|
343
|
-
<span class="method-name">inactive_player</span><span
|
344
|
-
class="method-args">()</span>
|
345
|
-
|
346
|
-
<span class="method-click-advice">click to toggle source</span>
|
347
|
-
|
348
|
-
</div>
|
349
|
-
|
350
|
-
|
351
|
-
<div class="method-description">
|
352
|
-
|
353
|
-
<p>Returns <code>:white</code> if the inactive player is the white player,
|
354
|
-
<code>:black</code> otherwise.</p>
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
<div class="method-source-code" id="inactive_player-source">
|
360
|
-
<pre><span class="ruby-comment"># File lib/chess/game.rb, line 92</span>
|
361
|
-
<span class="ruby-keyword">def</span> <span class="ruby-identifier">inactive_player</span>
|
362
|
-
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">board</span>.<span class="ruby-identifier">active_color</span> <span class="ruby-operator">?</span> <span class="ruby-value">:white</span> <span class="ruby-operator">:</span> <span class="ruby-value">:black</span>
|
363
|
-
<span class="ruby-keyword">end</span></pre>
|
364
|
-
</div>
|
365
|
-
|
366
|
-
</div>
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
</div>
|
372
|
-
|
373
|
-
|
374
|
-
<div id="method-i-move" class="method-detail ">
|
375
|
-
|
376
|
-
<div class="method-heading">
|
377
|
-
<span class="method-name">move</span><span
|
378
|
-
class="method-args">(m)</span>
|
379
|
-
|
380
|
-
<span class="method-click-advice">click to toggle source</span>
|
381
|
-
|
382
|
-
</div>
|
383
|
-
|
384
|
-
|
385
|
-
<div class="method-description">
|
386
|
-
|
387
|
-
<p>Make a move. This add a new <a href="Board.html">Board</a> in the
|
388
|
-
Storyboard.</p>
|
389
|
-
|
390
|
-
<p>Parameters are:</p>
|
391
|
-
<dl class="rdoc-list note-list"><dt><code>m</code>
|
392
|
-
<dd>
|
393
|
-
<p>represents the short algebraic chess notation string of the move.
|
394
|
-
<code>m</code> can be <em>from_square</em> plus <em>to_square</em>
|
395
|
-
<em>('e2e4', …, 'b1c3')</em> (coordinate chess notation).</p>
|
396
|
-
</dd></dl>
|
397
|
-
|
398
|
-
<p>This method returns a string that represents the short algebraic chess
|
399
|
-
notation of the move.</p>
|
400
|
-
|
401
|
-
<p>Raise an <a href="IllegalMoveError.html">IllegalMoveError</a> if the move
|
402
|
-
is illegal. Raise an <a href="BadNotationError.html">BadNotationError</a>
|
403
|
-
if the short algebraic chess notation is malformed.</p>
|
404
|
-
|
405
|
-
|
406
|
-
<div class="method-calls-super">
|
407
|
-
Calls superclass method
|
408
|
-
<a href="CGame.html#method-i-move">Chess::CGame#move</a>
|
409
|
-
</div>
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
<div class="method-source-code" id="move-source">
|
414
|
-
<pre><span class="ruby-comment"># File lib/chess/game.rb, line 66</span>
|
415
|
-
<span class="ruby-keyword">def</span> <span class="ruby-identifier">move</span>(<span class="ruby-identifier">m</span>)
|
416
|
-
<span class="ruby-keyword">begin</span>
|
417
|
-
<span class="ruby-identifier">expand</span> = <span class="ruby-identifier">expand_move</span>(<span class="ruby-identifier">m</span>)
|
418
|
-
<span class="ruby-keyword">if</span> <span class="ruby-identifier">expand</span>[<span class="ruby-value">:from</span>]
|
419
|
-
<span class="ruby-identifier">move2</span>(<span class="ruby-identifier">expand</span>[<span class="ruby-value">:from</span>], <span class="ruby-identifier">expand</span>[<span class="ruby-value">:to</span>], <span class="ruby-identifier">expand</span>[<span class="ruby-value">:promotion</span>])
|
420
|
-
<span class="ruby-keyword">else</span>
|
421
|
-
<span class="ruby-keyword">super</span>(<span class="ruby-identifier">expand</span>[<span class="ruby-value">:name</span>], <span class="ruby-identifier">expand</span>[<span class="ruby-value">:dis</span>], <span class="ruby-identifier">expand</span>[<span class="ruby-value">:to</span>], <span class="ruby-identifier">expand</span>[<span class="ruby-value">:promotion</span>])
|
422
|
-
<span class="ruby-keyword">end</span>
|
423
|
-
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">IllegalMoveError</span>
|
424
|
-
<span class="ruby-identifier">raise</span> <span class="ruby-constant">IllegalMoveError</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">"Illegal move '#{m}'\n#{self.active_player} turn\n#{self.to_s}"</span>)
|
425
|
-
<span class="ruby-keyword">end</span>
|
426
|
-
<span class="ruby-keyword">end</span></pre>
|
427
|
-
</div>
|
428
|
-
|
429
|
-
</div>
|
430
|
-
|
431
|
-
|
432
|
-
<div class="aliases">
|
433
|
-
Also aliased as: <a href="Game.html#method-i-move-3D">move=</a>, <a href="Game.html#method-i-3C-3C"><<</a>
|
434
|
-
</div>
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
</div>
|
439
|
-
|
440
|
-
|
441
|
-
<div id="method-i-move-3D" class="method-detail method-alias">
|
442
|
-
|
443
|
-
<div class="method-heading">
|
444
|
-
<span class="method-name">move=</span><span
|
445
|
-
class="method-args">(m)</span>
|
446
|
-
|
447
|
-
</div>
|
448
|
-
|
449
|
-
|
450
|
-
<div class="method-description">
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
</div>
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
<div class="aliases">
|
463
|
-
Alias for: <a href="Game.html#method-i-move">move</a>
|
464
|
-
</div>
|
465
|
-
|
466
|
-
</div>
|
467
|
-
|
468
|
-
|
469
|
-
<div id="method-i-moves-3D" class="method-detail ">
|
470
|
-
|
471
|
-
<div class="method-heading">
|
472
|
-
<span class="method-name">moves=</span><span
|
473
|
-
class="method-args">(moves)</span>
|
474
|
-
|
475
|
-
<span class="method-click-advice">click to toggle source</span>
|
476
|
-
|
477
|
-
</div>
|
478
|
-
|
479
|
-
|
480
|
-
<div class="method-description">
|
481
|
-
|
482
|
-
<p>Make the array of moves.</p>
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
<div class="method-source-code" id="moves-3D-source">
|
488
|
-
<pre><span class="ruby-comment"># File lib/chess/game.rb, line 82</span>
|
489
|
-
<span class="ruby-keyword">def</span> <span class="ruby-identifier">moves=</span>(<span class="ruby-identifier">moves</span>)
|
490
|
-
<span class="ruby-identifier">moves</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">m</span><span class="ruby-operator">|</span> <span class="ruby-identifier">move</span>(<span class="ruby-identifier">m</span>) }
|
491
|
-
<span class="ruby-keyword">end</span></pre>
|
492
|
-
</div>
|
493
|
-
|
494
|
-
</div>
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
</div>
|
500
|
-
|
501
|
-
|
502
|
-
<div id="method-i-over-3F" class="method-detail ">
|
503
|
-
|
504
|
-
<div class="method-heading">
|
505
|
-
<span class="method-name">over?</span><span
|
506
|
-
class="method-args">()</span>
|
507
|
-
|
508
|
-
<span class="method-click-advice">click to toggle source</span>
|
509
|
-
|
510
|
-
</div>
|
511
|
-
|
512
|
-
|
513
|
-
<div class="method-description">
|
514
|
-
|
515
|
-
<p>Returns <code>true</code> if the game is over</p>
|
516
|
-
|
517
|
-
|
518
|
-
|
519
|
-
|
520
|
-
<div class="method-source-code" id="over-3F-source">
|
521
|
-
<pre><span class="ruby-comment"># File lib/chess/game.rb, line 140</span>
|
522
|
-
<span class="ruby-keyword">def</span> <span class="ruby-identifier">over?</span>
|
523
|
-
<span class="ruby-keyword">return</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">result</span> <span class="ruby-operator">!=</span> <span class="ruby-string">'*'</span>
|
524
|
-
<span class="ruby-keyword">end</span></pre>
|
525
|
-
</div>
|
526
|
-
|
527
|
-
</div>
|
528
|
-
|
529
|
-
|
530
|
-
|
531
|
-
|
532
|
-
</div>
|
533
|
-
|
534
|
-
|
535
|
-
<div id="method-i-pgn" class="method-detail ">
|
536
|
-
|
537
|
-
<div class="method-heading">
|
538
|
-
<span class="method-name">pgn</span><span
|
539
|
-
class="method-args">()</span>
|
540
|
-
|
541
|
-
<span class="method-click-advice">click to toggle source</span>
|
542
|
-
|
543
|
-
</div>
|
544
|
-
|
545
|
-
|
546
|
-
<div class="method-description">
|
547
|
-
|
548
|
-
<p>Returns the PGN rappresenting the game.</p>
|
549
|
-
|
550
|
-
|
551
|
-
|
552
|
-
|
553
|
-
<div class="method-source-code" id="pgn-source">
|
554
|
-
<pre><span class="ruby-comment"># File lib/chess/game.rb, line 145</span>
|
555
|
-
<span class="ruby-keyword">def</span> <span class="ruby-identifier">pgn</span>
|
556
|
-
<span class="ruby-identifier">pgn</span> = <span class="ruby-constant">Chess</span><span class="ruby-operator">::</span><span class="ruby-constant">Pgn</span>.<span class="ruby-identifier">new</span>
|
557
|
-
<span class="ruby-identifier">pgn</span>.<span class="ruby-identifier">moves</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">moves</span>
|
558
|
-
<span class="ruby-identifier">pgn</span>.<span class="ruby-identifier">result</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">result</span>
|
559
|
-
<span class="ruby-keyword">return</span> <span class="ruby-identifier">pgn</span>
|
560
|
-
<span class="ruby-keyword">end</span></pre>
|
561
|
-
</div>
|
562
|
-
|
563
|
-
</div>
|
564
|
-
|
565
|
-
|
566
|
-
|
567
|
-
|
568
|
-
</div>
|
569
|
-
|
570
|
-
|
571
|
-
<div id="method-i-status" class="method-detail ">
|
572
|
-
|
573
|
-
<div class="method-heading">
|
574
|
-
<span class="method-name">status</span><span
|
575
|
-
class="method-args">()</span>
|
576
|
-
|
577
|
-
<span class="method-click-advice">click to toggle source</span>
|
578
|
-
|
579
|
-
</div>
|
580
|
-
|
581
|
-
|
582
|
-
<div class="method-description">
|
583
|
-
|
584
|
-
<p>Returns the status of the game.</p>
|
585
|
-
|
586
|
-
<p>Possible states are:</p>
|
587
|
-
<ul><li><dl class="rdoc-list note-list"><dt><code>in_progress</code>
|
588
|
-
<dd>
|
589
|
-
<p>the game is in progress.</p>
|
590
|
-
</dd></dl>
|
591
|
-
</li><li><dl class="rdoc-list note-list"><dt><code>white_won</code>
|
592
|
-
<dd>
|
593
|
-
<p>white player has won with a checkmate.</p>
|
594
|
-
</dd></dl>
|
595
|
-
</li><li><dl class="rdoc-list note-list"><dt><code>black_won</code>
|
596
|
-
<dd>
|
597
|
-
<p>black player has won with a checkmate.</p>
|
598
|
-
</dd></dl>
|
599
|
-
</li><li><dl class="rdoc-list note-list"><dt><code>white_won_resign</code>
|
600
|
-
<dd>
|
601
|
-
<p>white player has won for resign.</p>
|
602
|
-
</dd></dl>
|
603
|
-
</li><li><dl class="rdoc-list note-list"><dt><code>black_won_resign</code>
|
604
|
-
<dd>
|
605
|
-
<p>black player has won for resign.</p>
|
606
|
-
</dd></dl>
|
607
|
-
</li><li><dl class="rdoc-list note-list"><dt><code>stalemate</code>
|
608
|
-
<dd>
|
609
|
-
<p>draw for stalemate.</p>
|
610
|
-
</dd></dl>
|
611
|
-
</li><li><dl class="rdoc-list note-list"><dt><code>insufficient_material</code>
|
612
|
-
<dd>
|
613
|
-
<p>draw for insufficient material to checkmate.</p>
|
614
|
-
</dd></dl>
|
615
|
-
</li><li><dl class="rdoc-list note-list"><dt><code>fifty_rule_move</code>
|
616
|
-
<dd>
|
617
|
-
<p>draw for fifty rule move.</p>
|
618
|
-
</dd></dl>
|
619
|
-
</li><li><dl class="rdoc-list note-list"><dt><code>threefold_repetition</code>
|
620
|
-
<dd>
|
621
|
-
<p>draw for threefold_repetition.</p>
|
622
|
-
</dd></dl>
|
623
|
-
</li><li><dl class="rdoc-list note-list"><dt><code>unknown</code>
|
624
|
-
<dd>
|
625
|
-
<p>something went wrong.</p>
|
626
|
-
</dd></dl>
|
627
|
-
</li></ul>
|
628
|
-
|
629
|
-
|
630
|
-
|
631
|
-
|
632
|
-
<div class="method-source-code" id="status-source">
|
633
|
-
<pre><span class="ruby-comment"># File lib/chess/game.rb, line 109</span>
|
634
|
-
<span class="ruby-keyword">def</span> <span class="ruby-identifier">status</span>
|
635
|
-
<span class="ruby-keyword">case</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">result</span>
|
636
|
-
<span class="ruby-keyword">when</span> <span class="ruby-string">'*'</span>
|
637
|
-
<span class="ruby-keyword">return</span> <span class="ruby-value">:in_progress</span>
|
638
|
-
<span class="ruby-keyword">when</span> <span class="ruby-string">'1-0'</span>
|
639
|
-
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">board</span>.<span class="ruby-identifier">checkmate?</span>
|
640
|
-
<span class="ruby-keyword">return</span> <span class="ruby-value">:white_won</span>
|
641
|
-
<span class="ruby-keyword">else</span>
|
642
|
-
<span class="ruby-keyword">return</span> <span class="ruby-value">:white_won_resign</span>
|
643
|
-
<span class="ruby-keyword">end</span>
|
644
|
-
<span class="ruby-keyword">when</span> <span class="ruby-string">'0-1'</span>
|
645
|
-
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">board</span>.<span class="ruby-identifier">checkmate?</span>
|
646
|
-
<span class="ruby-keyword">return</span> <span class="ruby-value">:black_won</span>
|
647
|
-
<span class="ruby-keyword">else</span>
|
648
|
-
<span class="ruby-keyword">return</span> <span class="ruby-value">:black_won_resign</span>
|
649
|
-
<span class="ruby-keyword">end</span>
|
650
|
-
<span class="ruby-keyword">when</span> <span class="ruby-string">'1/2-1/2'</span>
|
651
|
-
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">board</span>.<span class="ruby-identifier">stalemate?</span>
|
652
|
-
<span class="ruby-keyword">return</span> <span class="ruby-value">:stalemate</span>
|
653
|
-
<span class="ruby-keyword">elsif</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">board</span>.<span class="ruby-identifier">insufficient_material?</span>
|
654
|
-
<span class="ruby-keyword">return</span> <span class="ruby-value">:insufficient_material</span>
|
655
|
-
<span class="ruby-keyword">elsif</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">board</span>.<span class="ruby-identifier">fifty_rule_move?</span>
|
656
|
-
<span class="ruby-keyword">return</span> <span class="ruby-value">:fifty_rule_move</span>
|
657
|
-
<span class="ruby-keyword">elsif</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">threefold_repetition?</span>
|
658
|
-
<span class="ruby-keyword">return</span> <span class="ruby-value">:threefold_repetition</span>
|
659
|
-
<span class="ruby-keyword">end</span>
|
660
|
-
<span class="ruby-keyword">end</span>
|
661
|
-
<span class="ruby-keyword">return</span> <span class="ruby-value">:unknown</span>
|
662
|
-
<span class="ruby-keyword">end</span></pre>
|
663
|
-
</div>
|
664
|
-
|
665
|
-
</div>
|
666
|
-
|
667
|
-
|
668
|
-
|
669
|
-
|
670
|
-
</div>
|
671
|
-
|
672
|
-
|
673
|
-
</section>
|
674
|
-
|
675
|
-
</section>
|
676
|
-
</main>
|
677
|
-
|
678
|
-
|
679
|
-
<footer id="validator-badges" role="contentinfo">
|
680
|
-
<p><a href="http://validator.w3.org/check/referer">Validate</a>
|
681
|
-
<p>Generated by <a href="https://rdoc.github.io/rdoc">RDoc</a> 5.1.0.
|
682
|
-
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
|
683
|
-
</footer>
|
684
|
-
|