X-Git-Url: http://winboard.nl/cgi-bin?p=capablanca.git;a=blobdiff_plain;f=lasker-2.2.3%2Fbots%2Fmamer%2FTourney.cc;h=56a4b141e03784ddeac7430cf320c9c463f8e507;hp=c2e3a8763f04bca52d9d5905f81264c00c71f76b;hb=de64701702c2b4d4d951be0e77afeda5177bc494;hpb=0ff5591bb1fcb56b4ebf451eb30fb3c413eaad2d diff --git a/lasker-2.2.3/bots/mamer/Tourney.cc b/lasker-2.2.3/bots/mamer/Tourney.cc index c2e3a87..56a4b14 100644 --- a/lasker-2.2.3/bots/mamer/Tourney.cc +++ b/lasker-2.2.3/bots/mamer/Tourney.cc @@ -85,6 +85,7 @@ void Tourney::InitTourney(int n, User *u, int t, int i, char m, char s, int r, c lastCshouted = 0; status = NEW; + paused = FALSE; } //- Deconstructor --------------------------------------------------------- @@ -629,7 +630,20 @@ void Tourney::SetPairingScores(TourneyPlayers *tp) { playerIter.Reset(); while((opponent = playerIter.Next())) { if(strcmp(tp->name, opponent->name) && (tp->activeFlag !=0)) { // If this isn't MY name & I am active - if((!tp->AlreadyPlayed(opponent->name)) && (!opponent->IsPaired()) && (opponent->activeFlag != 0)) { + if((!tp->AlreadyPlayed(opponent->name)) && (!opponent->IsPaired()) && (opponent->activeFlag != 0) + && (tp->ColorDue() != opponent->ColorDue() // they are due different color, never a problem + || tp->ColorDue() ? // both are due white. Check if one of them could accept black without breaking 'absolute' color rules + tp->GetConsecutiveBlacks() < 2 && + tp->GetTotalBlacks() - tp->GetTotalWhites() < 2 || + opponent->GetConsecutiveBlacks() < 2 && + opponent->GetTotalBlacks() - opponent->GetTotalWhites() < 2 + : // both are due black. Check if any of them can accept white + tp->GetConsecutiveWhites() < 2 && + tp->GetTotalWhites() - tp->GetTotalBlacks() < 2 || + opponent->GetConsecutiveWhites() < 2 && + opponent->GetTotalWhites() - opponent->GetTotalBlacks() < 2 + ) + ) { // and I haven't played this person and this person is active. (not forfeited) t = GetSortPlayer(opponent->name); score = ((abs(t->value - (me->value + offset))) * 1000); @@ -798,6 +812,16 @@ void Tourney::EndTourney(void) { status = DONE; }//- End EndTourney +//- IsPaused -------------------------------------------------------- +int Tourney::IsPaused(void) { + return paused; +} + +//- SetPause ----------------------- +void Tourney::SetPause(int x) { + paused = x; +}//- End SetPause + //- Announce ---------------------------------------------------------- void Tourney::Announce(void) { char temp[128]; @@ -947,6 +971,7 @@ void Tourney::TellThemWhoTheyPlay() { while((g = gameIter.Next())) { /* note that we rely on rmatch and on the ; separated commands from lasker */ + sleep(2); gMamer.XServerCom("rmatch %s %s %i %i %c %s white ; rmatch %s %s %i %i %c %s black\n", g->whiteName, g->blackName, g->time, g->inc, params.mode, Variant, g->blackName, g->whiteName, g->time, g->inc, params.mode, Variant);