예제 #1
0
        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);
        }
예제 #2
0
 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;
 }