private void WRbyTeam()
        {
            Summoner    _s    = db.getSummonerInfo(cboSummoner.SelectedItem + "");
            List <Game> games = db.getGames(_s, new Champion(), true);
            Dictionary <int, winloss> player = new Dictionary <int, winloss>();
            List <int> IDs = new List <int>();

            foreach (Game _g in games)
            {
                if (_g.fellowPlayers != null)
                {
                    foreach (FellowPlayer _f in _g.fellowPlayers)
                    {
                        if (_f.teamId == _g.stats.team)
                        {
                            winloss _t;
                            if (player.ContainsKey(_f.summonerId))
                            {
                                _t = player[_f.summonerId];
                            }
                            else
                            {
                                _t = new winloss();
                            }
                            if (_g.stats.win)
                            {
                                _t.win += 1;
                            }
                            else
                            {
                                _t.loss += 1;
                            }

                            player[_f.summonerId] = _t;

                            if (!IDs.Contains(_f.summonerId))
                            {
                                IDs.Add(_f.summonerId);
                            }
                        }
                    }
                }
            }

            var   summoners = league.getSummonerNameList(IDs);
            Form2 _form2    = new Form2();

            _form2.Text = "Win Rates by Team Mate";
            _form2.statsDisplay.ColumnCount     = 3;
            _form2.statsDisplay.Columns[0].Name = "Win";
            _form2.statsDisplay.Columns[1].Name = "Loss";
            _form2.statsDisplay.Columns[2].Name = "Ratio";
            int i = 0;

            foreach (var __s in summoners)
            {
                var index = _form2.statsDisplay.Rows.Add();
                _form2.statsDisplay.Rows[index].HeaderCell.Value = __s.Value;
                _form2.statsDisplay.Rows[index].Cells[0].Value   = player[int.Parse(__s.Key)].win;
                _form2.statsDisplay.Rows[index].Cells[1].Value   = player[int.Parse(__s.Key)].loss;
                _form2.statsDisplay.Rows[index].Cells[2].Value   = (double)(player[int.Parse(__s.Key)].win) / (player[int.Parse(__s.Key)].win + player[int.Parse(__s.Key)].loss);
                i++;
            }
            _form2.Show();
        }
Exemple #2
0
        private void GenerateWinLossChart()
        {
            Dictionary<double, winloss> _winloss = new Dictionary<double, winloss>();
            int matches = 0;
            foreach (Match m in all_time_matches)
            {
                //if (m.match_time < DateTime.Today.AddDays(-50)) continue;
                if (m.winner != Winner.TeamA && m.winner != Winner.TeamB) continue;
                double elo_diff = m.team_a.rating.ConservativeRating * 50 - m.team_b.rating.ConservativeRating * 50;
                elo_diff = Math.Floor(elo_diff / 50.0) * 50.0;

                if (!_winloss.ContainsKey(Math.Abs(elo_diff)))
                {
                    winloss wl = new winloss();
                    wl.wins = 0;
                    wl.losses = 0;
                    if (m.winner == Winner.TeamA)
                    {
                        if (elo_diff > 0)
                            wl.wins++;
                        else
                            wl.losses++;
                    }
                    else
                    {
                        if (elo_diff > 0)
                        {
                            wl.losses++;
                            _winloss.Add(elo_diff, wl);
                        }
                        else
                        {
                            wl.wins++;
                            _winloss.Add(-elo_diff, wl);
                        }
                    }
                }
                else if (m.winner == Winner.TeamA)
                {
                    if (elo_diff > 0)
                    {
                        winloss wl = _winloss[elo_diff];
                        wl.wins++;
                        _winloss[elo_diff] = wl;
                    }
                    else
                    {
                        winloss wl = _winloss[-elo_diff];
                        wl.losses++;
                        _winloss[-elo_diff] = wl;
                    }
                }
                else
                {
                    if (elo_diff > 0)
                    {
                        winloss wl = _winloss[elo_diff];
                        wl.losses++;
                        _winloss[elo_diff] = wl;
                    }
                    else
                    {
                        winloss wl = _winloss[-elo_diff];
                        wl.wins++;
                        _winloss[-elo_diff] = wl;
                    }
                }
                matches++;
            }

            using (StreamWriter r = new StreamWriter("../../winlossdata.txt"))
            {
                r.WriteLine("Diff" + "\t" + "W/L%");
                foreach (double i in _winloss.Keys)
                {
                    double wl_pct = Convert.ToDouble(_winloss[i].wins) / (_winloss[i].wins + _winloss[i].losses);
                    r.WriteLine(i.ToString() + "\t" + wl_pct.ToString());
                }
                r.WriteLine("Found" + matches + " matches");
            }
        }
Exemple #3
0
        public void GenerateWinLossChart()
        {
            Dictionary<double, winloss> _winloss = new Dictionary<double, winloss>();
            int matches = 0;
            double round_to = 30.0;
            foreach (HLTVMatch m in match_list)
            {
                double skill_diff = m.team_a.rating.ConservativeRating - m.team_b.rating.ConservativeRating;
                skill_diff = Math.Floor(skill_diff * 50 / round_to) * round_to;

                if (!_winloss.ContainsKey(Math.Abs(skill_diff)))
                {
                    winloss wl = new winloss();
                    wl.wins = 0;
                    wl.losses = 0;
                    if (m.a_rounds > m.b_rounds)
                    {
                        // team a won
                        if (skill_diff > 0)
                        {
                            // add a win; add to the dictionary
                            // elo_diff is greater than zero
                            wl.wins++;
                            _winloss.Add(skill_diff, wl);
                        }
                        else
                        {
                            // add a loss; add to the dicionary
                            // elo_diff is less than zero
                            wl.losses++;
                            _winloss.Add(-skill_diff, wl);
                        }
                    }
                    else
                    {
                        if (skill_diff > 0)
                        {
                            // add a loss;
                            // elo_diff is greater than zero
                            wl.losses++;
                            _winloss.Add(skill_diff, wl);
                        }
                        else
                        {
                            // add a win;
                            // elo_diff is less than zero
                            wl.wins++;
                            _winloss.Add(-skill_diff, wl);
                        }
                    }
                }
                else if (m.a_rounds > m.b_rounds)
                {
                    if (skill_diff > 0)
                    {
                        winloss wl = _winloss[skill_diff];
                        wl.wins++;
                        _winloss[skill_diff] = wl;
                    }
                    else
                    {
                        winloss wl = _winloss[-skill_diff];
                        wl.losses++;
                        _winloss[-skill_diff] = wl;
                    }
                }
                else
                {
                    if (skill_diff > 0)
                    {
                        winloss wl = _winloss[skill_diff];
                        wl.losses++;
                        _winloss[skill_diff] = wl;
                    }
                    else
                    {
                        winloss wl = _winloss[-skill_diff];
                        wl.wins++;
                        _winloss[-skill_diff] = wl;
                    }
                }
                matches++;
            }

            using (StreamWriter r = new StreamWriter("../../winlossdata.txt"))
            {
                r.WriteLine("Diff" + "\t" + "W/L%");
                foreach (double i in _winloss.Keys)
                {
                    double wl_pct = Convert.ToDouble(_winloss[i].wins) / (_winloss[i].wins + _winloss[i].losses);
                    r.WriteLine(i.ToString() + "\t" + wl_pct.ToString());
                }
                r.WriteLine("Found" + matches + " matches");
            }
        }