public static CPlayer ChooseOpponent(CPlayer player, CPlayer player1, CPlayer player2) { tourList.CountGames(player.name, player1.name, out int rw1, out int rl1, out int rd1); tourList.CountGames(player.name, player2.name, out int rw2, out int rl2, out int rd2); if ((player.GetElo() > player1.GetElo()) != (rw1 > rl1)) { return(player1); } if ((player.GetElo() > player2.GetElo()) != (rw2 > rl2)) { return(player2); } int count1 = (rw1 + rl1 + rd1); int count2 = (rw2 + rl2 + rd2); if (count1 * 1.1 <= count2 << 1) { return(player1); } if (count2 * 1.1 <= count1 >> 1) { return(player2); } return(null); }
public static void SetRepeition(CPlayer p, CPlayer o) { if ((player != p.name) || (opponent != o.name)) { player = p.name; opponent = o.name; SaveToIni(); tourList.CountGames(p.name, o.name, out int rw, out int rl, out _); if (games == 0) { repetition = p.tournament; if ((p.GetElo() > o.GetElo()) != (rw > rl)) { repetition++; } if (p.hisElo.list.Count < o.hisElo.list.Count) { repetition++; } rotate = true; } } games++; rotate ^= true; }
CPlayer GetPlayerElo(CPlayer player) { CPlayer p = null; int bstDel = 10000; int elo = player.GetElo(); foreach (CPlayer cp in list) { if (cp == player) { continue; } if (cp.engine == "Human") { continue; } int curE = cp.GetElo(); int curDel = Math.Abs(elo - curE); if (bstDel > curDel) { bstDel = curDel; p = cp; } } return(p); }