OSDN Git Service

New feature: Zero least time per move.
[shogi-server/shogi-server.git] / shogi_server / handicapped_boards.rb
1 ## $Id$
2
3 ## Copyright (C) 2004 NABEYA Kenichi (aka nanami@2ch)
4 ## Copyright (C) 2007-2012 Daigo Moriwaki (daigo at debian dot org)
5 ##
6 ## This program is free software; you can redistribute it and/or modify
7 ## it under the terms of the GNU General Public License as published by
8 ## the Free Software Foundation; either version 2 of the License, or
9 ## (at your option) any later version.
10 ##
11 ## This program is distributed in the hope that it will be useful,
12 ## but WITHOUT ANY WARRANTY; without even the implied warranty of
13 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 ## GNU General Public License for more details.
15 ##
16 ## You should have received a copy of the GNU General Public License
17 ## along with this program; if not, write to the Free Software
18 ## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19
20 require 'shogi_server/board'
21
22 module ShogiServer # for a namespace
23
24 # Handicapped game eliminating KY.
25 #
26 class HCKYBoard < Board
27   def initial
28     PieceKY::new(self, 1, 1, false)
29     PieceKE::new(self, 2, 1, false)
30     PieceGI::new(self, 3, 1, false)
31     PieceKI::new(self, 4, 1, false)
32     PieceOU::new(self, 5, 1, false)
33     PieceKI::new(self, 6, 1, false)
34     PieceGI::new(self, 7, 1, false)
35     PieceKE::new(self, 8, 1, false)
36     PieceKY::new(self, 9, 1, false)
37     PieceKA::new(self, 2, 2, false)
38     PieceHI::new(self, 8, 2, false)
39     (1..9).each do |i|
40       PieceFU::new(self, i, 3, false)
41     end
42
43     PieceKY::new(self, 1, 9, true)
44     PieceKE::new(self, 2, 9, true)
45     PieceGI::new(self, 3, 9, true)
46     PieceKI::new(self, 4, 9, true)
47     PieceOU::new(self, 5, 9, true)
48     PieceKI::new(self, 6, 9, true)
49     PieceGI::new(self, 7, 9, true)
50     PieceKE::new(self, 8, 9, true)
51     #PieceKY::new(self, 9, 9, true)
52     PieceKA::new(self, 8, 8, true)
53     PieceHI::new(self, 2, 8, true)
54     (1..9).each do |i|
55       PieceFU::new(self, i, 7, true)
56     end
57     @teban = true
58   end
59 end
60
61 # Handicapped game eliminating KA.
62 #
63 class HCKABoard < Board
64   def initial
65     PieceKY::new(self, 1, 1, false)
66     PieceKE::new(self, 2, 1, false)
67     PieceGI::new(self, 3, 1, false)
68     PieceKI::new(self, 4, 1, false)
69     PieceOU::new(self, 5, 1, false)
70     PieceKI::new(self, 6, 1, false)
71     PieceGI::new(self, 7, 1, false)
72     PieceKE::new(self, 8, 1, false)
73     PieceKY::new(self, 9, 1, false)
74     PieceKA::new(self, 2, 2, false)
75     PieceHI::new(self, 8, 2, false)
76     (1..9).each do |i|
77       PieceFU::new(self, i, 3, false)
78     end
79
80     PieceKY::new(self, 1, 9, true)
81     PieceKE::new(self, 2, 9, true)
82     PieceGI::new(self, 3, 9, true)
83     PieceKI::new(self, 4, 9, true)
84     PieceOU::new(self, 5, 9, true)
85     PieceKI::new(self, 6, 9, true)
86     PieceGI::new(self, 7, 9, true)
87     PieceKE::new(self, 8, 9, true)
88     PieceKY::new(self, 9, 9, true)
89     #PieceKA::new(self, 8, 8, true)
90     PieceHI::new(self, 2, 8, true)
91     (1..9).each do |i|
92       PieceFU::new(self, i, 7, true)
93     end
94     @teban = true
95   end
96 end
97
98 # Handicapped game eliminating HI.
99 #
100 class HCHIBoard < Board
101   def initial
102     PieceKY::new(self, 1, 1, false)
103     PieceKE::new(self, 2, 1, false)
104     PieceGI::new(self, 3, 1, false)
105     PieceKI::new(self, 4, 1, false)
106     PieceOU::new(self, 5, 1, false)
107     PieceKI::new(self, 6, 1, false)
108     PieceGI::new(self, 7, 1, false)
109     PieceKE::new(self, 8, 1, false)
110     PieceKY::new(self, 9, 1, false)
111     PieceKA::new(self, 2, 2, false)
112     PieceHI::new(self, 8, 2, false)
113     (1..9).each do |i|
114       PieceFU::new(self, i, 3, false)
115     end
116
117     PieceKY::new(self, 1, 9, true)
118     PieceKE::new(self, 2, 9, true)
119     PieceGI::new(self, 3, 9, true)
120     PieceKI::new(self, 4, 9, true)
121     PieceOU::new(self, 5, 9, true)
122     PieceKI::new(self, 6, 9, true)
123     PieceGI::new(self, 7, 9, true)
124     PieceKE::new(self, 8, 9, true)
125     PieceKY::new(self, 9, 9, true)
126     PieceKA::new(self, 8, 8, true)
127     #PieceHI::new(self, 2, 8, true)
128     (1..9).each do |i|
129       PieceFU::new(self, i, 7, true)
130     end
131     @teban = true
132   end
133 end
134
135 # Handicapped game eliminating HI and KY.
136 #
137 class HCHIKYBoard < Board
138   def initial
139     PieceKY::new(self, 1, 1, false)
140     PieceKE::new(self, 2, 1, false)
141     PieceGI::new(self, 3, 1, false)
142     PieceKI::new(self, 4, 1, false)
143     PieceOU::new(self, 5, 1, false)
144     PieceKI::new(self, 6, 1, false)
145     PieceGI::new(self, 7, 1, false)
146     PieceKE::new(self, 8, 1, false)
147     PieceKY::new(self, 9, 1, false)
148     PieceKA::new(self, 2, 2, false)
149     PieceHI::new(self, 8, 2, false)
150     (1..9).each do |i|
151       PieceFU::new(self, i, 3, false)
152     end
153
154     PieceKY::new(self, 1, 9, true)
155     PieceKE::new(self, 2, 9, true)
156     PieceGI::new(self, 3, 9, true)
157     PieceKI::new(self, 4, 9, true)
158     PieceOU::new(self, 5, 9, true)
159     PieceKI::new(self, 6, 9, true)
160     PieceGI::new(self, 7, 9, true)
161     PieceKE::new(self, 8, 9, true)
162     #PieceKY::new(self, 9, 9, true)
163     PieceKA::new(self, 8, 8, true)
164     #PieceHI::new(self, 2, 8, true)
165     (1..9).each do |i|
166       PieceFU::new(self, i, 7, true)
167     end
168     @teban = true
169   end
170 end
171
172 # Handicapped game eliminating HI and KA.
173 #
174 class HC2PBoard < Board
175   def initial
176     PieceKY::new(self, 1, 1, false)
177     PieceKE::new(self, 2, 1, false)
178     PieceGI::new(self, 3, 1, false)
179     PieceKI::new(self, 4, 1, false)
180     PieceOU::new(self, 5, 1, false)
181     PieceKI::new(self, 6, 1, false)
182     PieceGI::new(self, 7, 1, false)
183     PieceKE::new(self, 8, 1, false)
184     PieceKY::new(self, 9, 1, false)
185     PieceKA::new(self, 2, 2, false)
186     PieceHI::new(self, 8, 2, false)
187     (1..9).each do |i|
188       PieceFU::new(self, i, 3, false)
189     end
190
191     PieceKY::new(self, 1, 9, true)
192     PieceKE::new(self, 2, 9, true)
193     PieceGI::new(self, 3, 9, true)
194     PieceKI::new(self, 4, 9, true)
195     PieceOU::new(self, 5, 9, true)
196     PieceKI::new(self, 6, 9, true)
197     PieceGI::new(self, 7, 9, true)
198     PieceKE::new(self, 8, 9, true)
199     PieceKY::new(self, 9, 9, true)
200     #PieceKA::new(self, 8, 8, true)
201     #PieceHI::new(self, 2, 8, true)
202     (1..9).each do |i|
203       PieceFU::new(self, i, 7, true)
204     end
205     @teban = true
206   end
207 end
208
209 # Handicapped game eliminating HI, KA and two KYs.
210 #
211 class HC4PBoard < Board
212   def initial
213     PieceKY::new(self, 1, 1, false)
214     PieceKE::new(self, 2, 1, false)
215     PieceGI::new(self, 3, 1, false)
216     PieceKI::new(self, 4, 1, false)
217     PieceOU::new(self, 5, 1, false)
218     PieceKI::new(self, 6, 1, false)
219     PieceGI::new(self, 7, 1, false)
220     PieceKE::new(self, 8, 1, false)
221     PieceKY::new(self, 9, 1, false)
222     PieceKA::new(self, 2, 2, false)
223     PieceHI::new(self, 8, 2, false)
224     (1..9).each do |i|
225       PieceFU::new(self, i, 3, false)
226     end
227
228     #PieceKY::new(self, 1, 9, true)
229     PieceKE::new(self, 2, 9, true)
230     PieceGI::new(self, 3, 9, true)
231     PieceKI::new(self, 4, 9, true)
232     PieceOU::new(self, 5, 9, true)
233     PieceKI::new(self, 6, 9, true)
234     PieceGI::new(self, 7, 9, true)
235     PieceKE::new(self, 8, 9, true)
236     #PieceKY::new(self, 9, 9, true)
237     #PieceKA::new(self, 8, 8, true)
238     #PieceHI::new(self, 2, 8, true)
239     (1..9).each do |i|
240       PieceFU::new(self, i, 7, true)
241     end
242     @teban = true
243   end
244 end
245
246 # Handicapped game eliminating HI, KA, two KYs and two KE.
247 #
248 class HC6PBoard < Board
249   def initial
250     PieceKY::new(self, 1, 1, false)
251     PieceKE::new(self, 2, 1, false)
252     PieceGI::new(self, 3, 1, false)
253     PieceKI::new(self, 4, 1, false)
254     PieceOU::new(self, 5, 1, false)
255     PieceKI::new(self, 6, 1, false)
256     PieceGI::new(self, 7, 1, false)
257     PieceKE::new(self, 8, 1, false)
258     PieceKY::new(self, 9, 1, false)
259     PieceKA::new(self, 2, 2, false)
260     PieceHI::new(self, 8, 2, false)
261     (1..9).each do |i|
262       PieceFU::new(self, i, 3, false)
263     end
264
265     #PieceKY::new(self, 1, 9, true)
266     #PieceKE::new(self, 2, 9, true)
267     PieceGI::new(self, 3, 9, true)
268     PieceKI::new(self, 4, 9, true)
269     PieceOU::new(self, 5, 9, true)
270     PieceKI::new(self, 6, 9, true)
271     PieceGI::new(self, 7, 9, true)
272     #PieceKE::new(self, 8, 9, true)
273     #PieceKY::new(self, 9, 9, true)
274     #PieceKA::new(self, 8, 8, true)
275     #PieceHI::new(self, 2, 8, true)
276     (1..9).each do |i|
277       PieceFU::new(self, i, 7, true)
278     end
279     @teban = true
280   end
281 end
282
283 # Handicapped game eliminating HI, KA, two KYs, two KE and two GIs
284 #
285 class HC8PBoard < Board
286   def initial
287     PieceKY::new(self, 1, 1, false)
288     PieceKE::new(self, 2, 1, false)
289     PieceGI::new(self, 3, 1, false)
290     PieceKI::new(self, 4, 1, false)
291     PieceOU::new(self, 5, 1, false)
292     PieceKI::new(self, 6, 1, false)
293     PieceGI::new(self, 7, 1, false)
294     PieceKE::new(self, 8, 1, false)
295     PieceKY::new(self, 9, 1, false)
296     PieceKA::new(self, 2, 2, false)
297     PieceHI::new(self, 8, 2, false)
298     (1..9).each do |i|
299       PieceFU::new(self, i, 3, false)
300     end
301
302     #PieceKY::new(self, 1, 9, true)
303     #PieceKE::new(self, 2, 9, true)
304     #PieceGI::new(self, 3, 9, true)
305     PieceKI::new(self, 4, 9, true)
306     PieceOU::new(self, 5, 9, true)
307     PieceKI::new(self, 6, 9, true)
308     #PieceGI::new(self, 7, 9, true)
309     #PieceKE::new(self, 8, 9, true)
310     #PieceKY::new(self, 9, 9, true)
311     #PieceKA::new(self, 8, 8, true)
312     #PieceHI::new(self, 2, 8, true)
313     (1..9).each do |i|
314       PieceFU::new(self, i, 7, true)
315     end
316     @teban = true
317   end
318 end
319
320 # Handicapped game eliminating HI, KA, two KYs, two KE, two GIs and two KIs.
321 #
322 class HC10PBoard < Board
323   def initial
324     PieceKY::new(self, 1, 1, false)
325     PieceKE::new(self, 2, 1, false)
326     PieceGI::new(self, 3, 1, false)
327     PieceKI::new(self, 4, 1, false)
328     PieceOU::new(self, 5, 1, false)
329     PieceKI::new(self, 6, 1, false)
330     PieceGI::new(self, 7, 1, false)
331     PieceKE::new(self, 8, 1, false)
332     PieceKY::new(self, 9, 1, false)
333     PieceKA::new(self, 2, 2, false)
334     PieceHI::new(self, 8, 2, false)
335     (1..9).each do |i|
336       PieceFU::new(self, i, 3, false)
337     end
338
339     #PieceKY::new(self, 1, 9, true)
340     #PieceKE::new(self, 2, 9, true)
341     #PieceGI::new(self, 3, 9, true)
342     #PieceKI::new(self, 4, 9, true)
343     PieceOU::new(self, 5, 9, true)
344     #PieceKI::new(self, 6, 9, true)
345     #PieceGI::new(self, 7, 9, true)
346     #PieceKE::new(self, 8, 9, true)
347     #PieceKY::new(self, 9, 9, true)
348     #PieceKA::new(self, 8, 8, true)
349     #PieceHI::new(self, 2, 8, true)
350     (1..9).each do |i|
351       PieceFU::new(self, i, 7, true)
352     end
353     @teban = true
354   end
355 end
356
357 end # ShogiServer
358