Beispiel #1
0
        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);
        }
Beispiel #2
0
 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;
 }
Beispiel #3
0
        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);
        }