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(); }
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"); } }
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"); } }