File Coverage

blib/lib/Chess/GameClock/GclkData.pm
Criterion Covered Total %
statement 6 6 100.0
branch n/a
condition n/a
subroutine 2 2 100.0
pod n/a
total 8 8 100.0


line stmt bran cond sub pod time code
1             ####-----------------------------------
2             ### File : GclkData.pm
3             ### Author : C.Minc
4             ### Purpose : Data for Game GameClock
5             ### Version : 1.8 2007/12/23
6             ####-----------------------------------
7              
8             package GclkData ;
9              
10             our $VERSION = '1.8' ;
11              
12             require Exporter ;
13 1     1   11 use strict ;
  1         3  
  1         30  
14 1     1   5 use warnings ;
  1         2  
  1         1868  
15              
16             # declaration des variables externes
17              
18             our @ISA=qw(Exporter) ;
19              
20             our @EXPORT_OK=qw (@menu
21             %sous_menu
22             %soussous
23             %cad
24             %aide
25             @Mode
26             ) ;
27              
28             our %EXPORT_TAGS=(tout=>[qw(@menu
29             %sous_menu
30             %soussous
31             %cad
32             %aide
33             @Mode)]) ;
34              
35             # données du menu principal
36             our @menu=("Blitz", "RapidesTournois", "ReglagesManuels","Byo-Yomi", "Aide") ;
37              
38             # données des sous-menus
39             my @Blitz=("Usuel", "Bronstein","Fischer","Fide") ;
40             my @RapideTournoi=("Classique","Fide","Fischer") ;
41             my @ReglagesManuels=("Cadence1","Cadence2","Cadence3","Cadence4","Mode","Options") ;
42             my @Aide=("En Bref") ;
43             my @ByoYomi=("Canadien","Japonais") ;
44              
45             # Définition des references aux sous-menus
46             our %sous_menu=(Blitz =>\@Blitz,
47             "RapidesTournois" =>\@RapideTournoi,
48             "ReglagesManuels" =>\@ReglagesManuels,
49             "Byo-Yomi" =>\@ByoYomi
50             ) ;
51              
52             our @Mode=("X 0.50",
53             "X 0.75",
54             "X 1.00") ;
55              
56             my @Usuel=(" 5mn",
57             "10mn",
58             "15mn"
59             ) ;
60             my @BU=([{qw/ct 5*60 mv 0 b 0 f 0 byo 1/}],
61             [{qw/ct 10*60 mv 0 b 0 f 0 byo 1/}],
62             [{qw/ct 15*60 mv 0 b 0 f 0 byo 1/}]) ;
63              
64             my @Bronstein=("5mn/3sec",
65             "20mn/10sec"
66             ) ;
67             my @BB=([{qw/ct 5*60 mv 0 b 3 f 0 byo 1/}],
68             [{qw/ct 20*60 mv 0 b 10 f 0 byo 1/}]) ;
69              
70              
71             my @Fischer=("3mn+5s/cps") ;
72              
73             my @BF=([{qw/ct 3*60 mv 0 b 0 f 5 byo 1/}]) ; ;
74              
75             my @Fide=("3mn puis 2s/cps",
76             "20mn puis 5s/cps"
77             ) ;
78              
79             my @BFi=([{qw/ct 3*60 mv 0 b 0 f 2 byo 1/} ],
80             [{qw/ct 20*60 mv 0 b 0 f 5 byo 1/}]) ;
81              
82             my @Classique=("25mn KO",
83             "61mn KO", #type A
84             "2h/40cps+1H KO", #type B
85             "2h/40cps+1H/20 cps+30mn KO", #type D
86             "2h/40cps+1H/20 cps+ 1H KO", #type C
87             "2h/40cps+1h/20 cps+repeating"
88             );
89             my @RC=( [{qw/ct 25*60 mv 0 b 0 f 0 byo 1/}], #0
90             [{qw/ct 61*60 mv 0 b 0 f 0 byo 1/}], #1
91             [{qw/ct 2*3600 mv 40 b 0 f 0 byo 1/}, #2
92             {
93             qw/ct 1*3600 mv 0 b 0 f 0 byo 1/}],
94             [{qw/ct 2*3600 mv 40 b 0 f 0 byo 1/}, #3
95             {
96             qw/ct 1*3600 mv 20 b 0 f 0 byo 1/},
97             {
98             qw/ct 30*60 mv 0 b 0 f 0 byo 1/}],
99             [{qw/ct 2*3600 mv 40 b 0 f 0 byo 1/}, #4
100             {
101             qw/ct 1*3600 mv 20 b 0 f 0 byo 1/},
102             {
103             qw/ct 1*3600 mv 0 b 0 f 0 byo 1/}],
104             [{qw/ct 2*3600 mv 40 b 0 f 0 byo 1/}, #5
105             {
106             qw/ct 1*3600 mv 20 b 0 f 0 byo 1/}]
107             );
108              
109              
110              
111              
112             my @FideT=("1H puis 10s/cps",
113             "1H15+30s/40cps puis 15mn+30s/cps KO",
114             #1h 15 + 30 secondes pour 40 coups puis 15 minutes + 30 secondes pour terminer la partie
115             "2H puis 20s/cps"
116             ) ;
117              
118             my @RFi=( [{qw/ct 1*3600 mv 40 b 0 f 0 byo 1/},
119             {
120             qw/ct 0 mv 0 b 0 f 10 byo 1/}],
121             [{qw/ct 1*3600+15*60 mv 40 b 0 f 0 byo 1/},
122             {
123             qw/ct 15*60 mv 0 b 0 f 30 byo 1/}],
124             [{qw/ct 2*3600 mv 40 b 0 f 0 byo 1/},
125             {
126             qw/ct 0 mv 0 b 0 f 20 byo 1/}],
127             );
128              
129             my @FischerT=("20mn+10/cps",
130             "80mn/40cps,40mn/20cps,1mn/cps",
131             "50mn+10s/cps", #type A
132             "1H40+30s/cps -40cps,40mn+30s/cps", #type B
133             "1H40+30s/cps -40cps,50mn+30s/cps -20cps,40mn+30s/cps", #type C
134             "1H40+30s/cps -40cps,50mn+30s/cps -20cps,10mn+30s/cps" #type D
135             ) ;
136              
137             my @RF=( [ {qw/ct 20*60 mv 0 b 0 f 10 byo 1/}],
138             [{qw/ct 80*60 mv 40 b 0 f 0 byo 1/},
139             {
140             qw/ct 40*60 mv 20 b 0 f 0 byo 1/},
141             {
142             qw/ct 0 mv 0 b 0 f 60 byo 1/}],
143             [{qw/ct 50*60 mv 0 b 0 f 10 byo 1/}],
144             [{qw/ct 100*60 mv 40 b 0 f 30 byo 1/},
145             {
146             qw/ct 40*60 mv 0 b 0 f 30 byo 1/}],
147             [{qw/ct 100*60 mv 40 b 0 f 30 byo 1/},
148             {
149             qw/ct 50*60 mv 20 b 0 f 30 byo 1/},
150             {
151             qw/ct 40*60 mv 0 b 0 f 30 byo 1/}],
152             [{qw/ct 100*60 mv 40 b 0 f 30 byo 1/},
153             {
154             qw/ct 50*60 mv 20 b 0 f 30 byo 1/},
155             {
156             qw/ct 10*60 mv 0 b 0 f 30 byo 1/}]
157             ) ;
158              
159             #
//
160             my @Canadien=("20mn+15mn/25cps"
161             ) ;
162             # + x.
163             my @Japonais=("60mn+5x60s",
164             "60mn+1x20s",
165             "120mn+1x30s"
166             );
167              
168             my @RCN=([{qw/ct 20*60 mv 0 b 0 f 0 byo 0/},
169             {
170             qw/ct 15*60 mv 25 b 0 f 0 byo 0/}]
171             );
172              
173             my @RJ=([{qw/ct 60*60 mv 0 b 0 f 0 byo 0/},
174             {
175             qw/ct 60*5 mv 1 b 60 f 0 byo 0/}],
176             [{qw/ct 60*60 mv 0 b 0 f 0 byo 0/},
177             {
178             qw/ct 20*1 mv 1 b 20 f 0 byo 0/}],
179             [{qw/ct 60*60 mv 0 b 0 f 0 byo 0/},
180             {
181             qw/ct 30*1 mv 1 b 30 f 0 byo 0/}]
182             );
183              
184             our %soussous=( Blitz =>{ Usuel =>\@Usuel,
185             Bronstein =>\@Bronstein,
186             Fischer =>\@Fischer,
187             Fide =>\@Fide
188             },
189              
190             "RapidesTournois"=>{Classique=>\@Classique,
191             Fide=>\@FideT,
192             Fischer=>\@FischerT
193             },
194            
195             "Byo-Yomi" =>{Canadien=>\@Canadien,
196             Japonais=>\@Japonais
197             },
198              
199             "ReglagesManuels"=>{Cadence1=>['Cadence1'],
200             Cadence2=>['Cadence2'],
201             Cadence3=>['Cadence3'],
202             Cadence4=>['Cadence4']}
203             # "Aide" =>{About=>['Help']}
204             ) ;
205              
206             # cadences de base pour les compteurs
207             # $type $cadence $paramètres
208              
209             our %cad=(Blitz =>{ Usuel =>\@BU,
210             Bronstein =>\@BB,
211             Fischer =>\@BF,
212             Fide =>\@BFi
213             },
214             "RapidesTournois"=>{Classique=>\@RC,
215             Fide=>\@RFi,
216             Fischer=>\@RF},
217            
218             "Byo-Yomi" =>{Canadien=>\@RCN,
219             Japonais=>\@RJ
220             },
221             "ReglagesManuels"=> {} #{ [{},{},{},{}]},
222              
223             ) ;
224              
225             our %aide ;
226              
227             $aide{En}= <
228             1. Select a clock rate (cadence) in the menu window \n
229             2. Press Ctrl-shift-0 (with "Perl Chess Clock"
230             selected)\n
231             3. When Blacks clicks on one of the mouse
232             button, they start the Whites counter and
233             get this button as their clock game button \n
234             4. You can stop the counters by pushing Ctrl-h
235             (The button Halt changes to red color) and so on.
236             Times shown, toggle between the elapsed or
237             remaining time with Alt-c \n
238             END
239             ;
240             $aide{Fr}= <
241             +++++++++++++++++++++++
242             GameClock V1.0
243             +++++++++++++++++++++++
244              
245             1. Choississez une cadence dans les menus\n
246             2. Appuyer sur les touches Ctrl-shift-0\n
247             3. Lorsque les Noirs appuie sur une touche,
248             le compteur des Blancs démarre et la touche
249             pressée est affectée à l'usage des Noirs.\n
250             4. La pendule peut être arrêtée en pressant
251             Ctrl-h (le bouton Halt devient rouge et vice-versa)
252             et l'on choisit l'affichage soit du temps
253             écoulé soit du temps restant par Alt-C.\n
254             -------------------------------------------
255              
256             END
257             ;
258              
259             =head1 NAME
260              
261             GclkData - The Package thats holds the datas for GameClock
262             most of them are dedicated to the set the cadence
263             (clock rate) of the game.
264              
265             =head1 VERSION
266              
267             Version 1.8
268              
269             =cut
270              
271              
272             =head1 SYNOPSIS
273              
274             [{qw/ct 15*60 mv 25 b 0 f 0 byo 1/},
275             {qw/ct 15*60 mv 0 b 0 f 0 byo 1/}]
276              
277             The Array here above has to be understood as having
278             two sequences.
279              
280             The first one: {qw/ct 15*60 mv 25 b 0 f 0 byo 1/}
281             will set the counting time avalaible "ct" 15*60 seconds thats means
282             900 seconds or 15 minutes.
283              
284             ct is evaluated so it can be written as a product for sake of lisibility.
285              
286             mv is the move number at which checking time will be done.
287              
288             b is the Bronstein time and f is the Fisher time. They are both a kind
289             of bonus.
290              
291             All the time are finally expressed in seconds.
292              
293             For Byo-Yomi, there some trick because it exists two kind for these
294             cadences:
295              
296             Canadian byo-yomi.
297              
298             Japonese byo-yomi.
299              
300             Byo-Yomi mode is set when byo=0.
301              
302             So finally, the rules for setting the clock rate are the following:
303              
304             ct : maintime could be time*60 | time*3600 | time
305              
306             if byo=1 means no Byo-Yomi
307              
308             b !=0 or f !=0 set the Bronstein or Fischer cadence.
309              
310             mv=0 sets the Sudden death or Guillotine.
311              
312             Loop on the cadence except Sudden death of course.
313              
314             If byo=0
315             First cadence is for maintime defined with ct (note here mv=0).
316              
317             Next cadence could be of Japonese type: b!=0 and ct=k*b where k
318             is an integer.
319             or Canadian type when b=0.
320              
321             Generally, for Canadian Byo-Yomi mv is an integer and for Japonese mv=1.
322              
323             =head1 AUTHOR
324              
325             Charles Minc, C<< >>
326              
327             =head1 BUGS
328              
329             Please report any bugs or feature requests to
330             C, or through the web interface at
331             L.
332             I will be notified, and then you'll automatically be notified of progress on
333             your bug as I make changes.
334              
335             =head1 SUPPORT
336              
337             You can find documentation for this module with the perldoc command.
338              
339             perldoc GameClock
340              
341             You can also look for information at:
342             http://en.wikipedia.org/wiki/Go_intro#Timing
343              
344              
345             =over 4
346              
347             =item * AnnoCPAN: Annotated CPAN documentation
348              
349             L
350              
351             =item * CPAN Ratings
352              
353             L
354              
355             =item * RT: CPAN's request tracker
356              
357             L
358              
359             =item * Search CPAN
360              
361             L
362              
363             =back
364              
365             =head1 ACKNOWLEDGEMENTS
366              
367              
368             =head1 COPYRIGHT & LICENSE
369              
370             Copyright 2006 Charles Minc, all rights reserved.
371              
372             This program is free software; you can redistribute it and/or modify it
373             under the same terms as Perl itself.
374              
375             =cut
376              
377             1; # End of GclkData
378              
379              
380