Пример #1
0
        public void Initialize(string folder, int times)
        {
            _players.Clear();
            _folder = folder;
            _times  = times;

            if (Directory.Exists(_folder))
            {
                string[] files = Directory.GetFiles(_folder);
                if (files != null)
                {
                    for (int i = 0; i < files.Length; i++)
                    {
                        string    file   = files[i];
                        DNAPlayer player = Utility.CreateDNAPlayer(file);
                        _players.Add(player);
                    }
                }
            }
            if (_players.Count > 1)
            {
                if (_performance != null)
                {
                    if (_performance.Length != _players.Count && _performance[0].Length != _players.Count)
                    {
                        _performance = new LeagueResult[_players.Count][];
                        for (int i = 0; i < _players.Count; i++)
                        {
                            _performance[i] = new LeagueResult[_players.Count];
                            for (int j = 0; j < _players.Count; j++)
                            {
                                _performance[i][j] = new LeagueResult(0, 0, 0);
                            }
                        }
                    }
                    else
                    {
                        for (int i = 0; i < _players.Count; i++)
                        {
                            for (int j = 0; j < _players.Count; j++)
                            {
                                _performance[i][j] = new LeagueResult(0, 0, 0);
                            }
                        }
                    }
                }
                else
                {
                    _performance = new LeagueResult[_players.Count][];
                    for (int i = 0; i < _players.Count; i++)
                    {
                        _performance[i] = new LeagueResult[_players.Count];
                        for (int j = 0; j < _players.Count; j++)
                        {
                            _performance[i][j] = new LeagueResult(0, 0, 0);
                        }
                    }
                }
            }
        }
Пример #2
0
        public bool Finish(棋子 side)
        {
            LeagueResult result = RecordPerformance(side);

            if (result.Win + result.Lose + result.Equal < _times)
            {
                return(true);
            }
            else if (_queue.Count > 0)
            {
                _pair = _queue.Dequeue();
                return(true);
            }
            else
            {
                return(false);
            }
        }
Пример #3
0
        private LeagueResult RecordPerformance(棋子 side)
        {
            LeagueResult result = _performance[_pair.Key][_pair.Value];

            switch (side)
            {
            case 棋子.无:
                result.Equal++;
                break;

            case 棋子.白子:
                result.Lose++;
                break;

            case 棋子.黑子:
                result.Win++;
                break;
            }
            _performance[_pair.Key][_pair.Value] = result;
            return(result);
        }