Alter Makefile to force 32-bit compile
[capablanca.git] / lasker-2.2.3 / bots / mamer / TourneyPlayers.cc
1 //--------------------------------------------------------------------------
2 // TourneyPlayers.cc - Source file for the TourneyPlayers class
3 //
4 // Matthew E. Moses && Michael A. Long
5 //
6 // $Revision: 1.7 $
7 // $Date: 1998/09/10 19:57:17 $
8 //
9 // $Author: mlong $
10 // $Locker:  $
11 //
12 // $Log: TourneyPlayers.cc,v $
13 // Revision 1.7  1998/09/10 19:57:17  mlong
14 // lots of little bug fixes and a few new features
15 //
16 // Revision 1.6  1998/04/29 15:23:19  mlong
17 // prepairing for the move to daimi
18 // new sorting routine.
19 //
20 //
21 // Revision 1.2  1997/10/08 21:03:35  chess
22 // preparing for move to oracle machine at eworks.
23 //
24 // Revision 1.1  1997/05/14 16:59:13  chess
25 // Initial revision
26 //
27 //
28 //--------------------------------------------------------------------------
29
30 // static char RCSid[] = "$Id: TourneyPlayers.cc,v 1.7 1998/09/10 19:57:17 mlong Exp $";
31
32 #include "TourneyPlayers.hh"
33
34 //- Constructor -----------------------------------------------------------
35 TourneyPlayers::TourneyPlayers(char *n, int r, float s) {
36   perform=0;
37   upset=0;
38
39   totalWhites = 0;
40   totalBlacks = 0;
41   consecutiveBlacks = 0;
42   consecutiveWhites = 0;
43
44   activeFlag = 1;
45   sortValue = r/10000.0;
46
47   dueColor = 0;
48   paired = 0;
49
50   memset(oppName, '\0', NAMELEN);
51
52   memset(name, '\0', NAMELEN);
53   strcpy(name, n);
54
55   rating = r;
56   score = s;
57
58   oppChoice=0;
59   location=ONLINE;
60 }
61
62 //- Constructor -----------------------------------------------------------
63 TourneyPlayers::TourneyPlayers() {
64   perform=0;
65   upset=0;
66
67   totalWhites = 0;
68   totalBlacks = 0;
69   consecutiveBlacks = 0;
70   consecutiveWhites = 0;
71
72   activeFlag = 1;
73   sortValue = 0.0;
74
75   dueColor = 0;
76   paired = 0;
77
78   memset(oppName, '\0', NAMELEN);
79
80   memset(name, '\0', NAMELEN);
81   rating = 0;
82   score = 0;
83
84   oppChoice=0;
85   location=ONLINE;
86 }
87
88 //- DeConstructor ---------------------------------------------------------
89 TourneyPlayers::~TourneyPlayers() {
90 }
91
92 //- AlreadyPlayed --------------------------------------------------------
93 int TourneyPlayers::AlreadyPlayed(char *oppName) {
94   Player *temp;
95
96   LinkListIter<Player> opponentIter(opponentList);
97
98   while((temp = opponentIter.Next())) {
99     if(!strcmp(oppName, temp->name)) {
100       return 1;
101     }
102   }
103
104   return 0;
105 }
106
107 //- Start of RemovePotentialOppList
108 int TourneyPlayers::RemovePotentialOppList() {
109   Player *temp;
110
111   LinkListIter<Player> opponentIter(potentialOpponentList);
112   
113   while((temp = opponentIter.Next())) {
114     potentialOpponentList.Delete(temp);
115   }
116   return 1;
117 }//- end of RemovePotentialOppList
118
119 //- Start of RemoveFromOppList -------------------------------------------------
120 void TourneyPlayers::RemoveFromOppList(char *name) {
121   Player *p=NULL;
122
123   LinkListIter<Player> opponentIter(opponentList);
124
125   while((p = opponentIter.Next())) {
126     if(strcasecmp(p->name, name) == 0) {
127       opponentList.Delete(p);
128       break;
129     }
130   }
131 }//- end RemoveFromOppList -----------------------------------------------------
132
133 //- Start of RemoveLastOpponent -------------------------------------------------
134 void TourneyPlayers::RemoveLastOpponent() {
135   Player *p=NULL, *last=NULL;
136   LinkListIter<Player> opponentIter(opponentList);
137
138   opponentIter.Reset();
139   while((p = opponentIter.Next()))
140     last = p;
141
142   cout << name << " " << last->name << endl;  
143   opponentList.Delete(last);
144 }//- end RemoveLastOpponent -----------------------------------------------------    
145        
146 //- Start GetOpponentPlayer --------------------------------------------------------
147 Player *TourneyPlayers::GetOpponentPlayer(char *oppName) {
148   Player *temp=NULL;
149   LinkListIter<Player> opponentIter(opponentList);
150
151   while((temp = opponentIter.Next())) {
152     if(!strcmp(oppName, temp->name)) {
153       return temp;
154     }
155   }
156
157   return NULL;
158 }//- end of GetOpponentPlayer
159
160 //- IsPaired ---------------------------------
161 int TourneyPlayers::IsPaired(void) {
162   return paired;
163 }//- end IsPaired
164
165 //- ColorDue ---------------------------------
166 int TourneyPlayers::ColorDue(void) {
167   return dueColor;
168 }//- end colorDue
169
170 //- NowPaired ---------------------------------
171 void TourneyPlayers::NowPaired(int value) {
172   paired = value;
173 }//- end NowPaired
174
175 //-ChangeColorDue ---------------------------------
176 void TourneyPlayers::ChangeColorDue(int value) {
177   dueColor = value;
178 }//- end ToggleColorDue
179
180 //- AddWhite ---------------------------------
181 void TourneyPlayers::AddWhite(void) {
182   consecutiveWhites++;
183   totalWhites++; // [HGM] this varable did not seem to get updater anywhere
184   ChangeColorDue(0);
185   ClearBlacks();
186 }//- end AddWhite  
187
188 //- AddBlack ---------------------------------
189 void TourneyPlayers::AddBlack(void) {
190   consecutiveBlacks++;
191   totalBlacks++; // [HGM] this varable did not seem to get updater anywhere
192   ChangeColorDue(1);
193   ClearWhites();
194 }//- end AddBlack
195
196 //- ClearWhites ---------------------------------
197 void TourneyPlayers::ClearWhites(void) {
198   consecutiveWhites = 0;
199 }//- end ClearWhites
200
201 //- ClearBlacks ---------------------------------
202 void TourneyPlayers::ClearBlacks(void) {
203   consecutiveBlacks = 0;
204 }//- end ClearBlacks
205
206 //- ClearTotalWhites ---------------------------------
207 void TourneyPlayers::ClearTotalWhites(void) {
208   totalWhites = 0;
209 }//- end ClearTotalWhites
210
211 //- ClearTotalBlacks ---------------------------------
212 void TourneyPlayers::ClearTotalBlacks(void) {
213   totalBlacks = 0;
214 }//- end ClearTotalBlacks
215
216 //- GetTotalWhites ---------------------------------
217 int TourneyPlayers::GetTotalWhites(void) {
218   return totalWhites;
219 }//- end GetTotalWhites
220
221 //- GetTotalBlacks ---------------------------------
222 int TourneyPlayers::GetTotalBlacks(void) {
223   return totalBlacks;
224 }//- end GetTotalBlacks
225
226 //- GetConsecutiveWhites ---------------------------------
227 int TourneyPlayers::GetConsecutiveWhites(void) {
228   return consecutiveWhites;
229 }//- end GetConsecutiveWhites
230
231 //- GetConsecutiveBlacks ---------------------------------
232 int TourneyPlayers::GetConsecutiveBlacks(void) {
233   return consecutiveBlacks;
234 }//- end GetConsecutiveBlacks
235
236 //- CalculateScore --------------------------------------
237 void TourneyPlayers::CalculateScore(void) {
238   score = 0.0;
239   Player *opp;
240   LinkListIter<Player> opponentIter(opponentList);
241
242   while((opp = opponentIter.Next())) {
243     if(opp->floatValue > 0.0) {
244       score += opp->floatValue;
245     }
246   }
247   CalculatePerform();
248 }//- End of CalculateScore -------------------
249
250 //- CalculatePerform --------------------------------------
251 void TourneyPlayers::CalculatePerform(void) {
252   int total=0, counter=0, upsetpoints=0, rtng=0;
253   Player *opp;
254   LinkListIter<Player> opponentIter(opponentList);
255
256   while((opp = opponentIter.Next())) {
257     if(!strcmp(opp->name, "_BYE_")) continue;
258     rtng = opp->rating;
259     if(opp->rating <= 0) rtng = 1675;
260     if(opp->floatValue == 0.5) {
261       total += rtng;
262       if(rtng > rating)
263         upsetpoints += (rtng - rating)/2;
264     } else if(opp->floatValue == 1.0) {
265       total += (rtng + 400);
266       if(rtng > rating)
267         upsetpoints += (rtng - rating);
268     } else if(opp->floatValue == 0.0) {
269       total += (rtng - 400);
270     }
271     counter++;
272   }
273
274   if(counter > 0)
275     perform = total/counter;
276   else
277     perform = 0;
278   upset = upsetpoints;
279 }//- End of CalculatePerform -------------------
280
281
282