public static CEngine ChooseOpponent(CEngine engine, CEngine engine1, CEngine engine2) { tourList.CountGames(engine.name, engine1.name, out int rw1, out int rl1, out int rd1); tourList.CountGames(engine.name, engine2.name, out int rw2, out int rl2, out int rd2); if ((engine.GetElo() > engine1.GetElo()) != (rw1 > rl1)) { return(engine1); } if ((engine.GetElo() > engine2.GetElo()) != (rw2 > rl2)) { return(engine2); } int count1 = (rw1 + rl1 + rd1); int count2 = (rw2 + rl2 + rd2); if (count1 * 1.1 <= count2 << 1) { return(engine1); } if (count2 * 1.1 <= count1 >> 1) { return(engine2); } return(null); }
public static void SetRepeition(CEngine e, CEngine o) { if ((engine != e.name) || (opponent != o.name)) { engine = e.name; opponent = o.name; SaveToIni(); tourList.CountGames(e.name, o.name, out int rw, out int rl, out _); if (games == 0) { repetition = e.tournament; if ((e.GetElo() > o.GetElo()) != (rw > rl)) { repetition++; } if (e.hisElo.list.Count < o.hisElo.list.Count) { repetition++; } rotate = true; } } games++; rotate ^= true; }