public TeamSimulationDetails(BasketballTeam t) { Team = t; Players = new BasketballPlayerList(); Outcomes = new List <TeamSimulationOutcome>(); double[] oppfg = t.OpponentFieldGoalsTakenByGame(); double[] fg = t.FieldGoalsTakenByGame(); FieldGoalPercentage = t.RemoveHomeAdvantage(t.FieldGoalPercentageByGame()).Average(); FieldGoalsTaken = t.RemoveHomeAdvantage(fg).Average(); FreeThrowPercentage = t.RemoveHomeAdvantage(t.FreeThrowPercentageByGame()).Average(); ThreePointPercentage = t.RemoveHomeAdvantage(t.ThreePointPercentageByGame()).Average(); ThreePointsTakenPercentage = t.RemoveHomeAdvantage(t.ThreePointersTakenByGame().Divide(fg)).Average(); OffensiveReboundPercentage = t.RemoveHomeAdvantage(t.OffensiveReboundPercentageByGame()).Average(); DefensiveReboundPercentage = t.RemoveHomeAdvantage(t.DefensiveReboundPercentageByGame()).Average(); OffensiveTurnoverPercentage = t.RemoveHomeAdvantage(t.TurnoversByGame().Divide(fg)).Average(); double[] b = t.StealsByGame(); StealPercentage = t.RemoveHomeAdvantage(b.Divide(b.Add(oppfg))).Average(); b = t.BlocksByGame(); BlockPercentage = t.RemoveHomeAdvantage(b.Divide(b.Add(oppfg))).Average(); BlockedPercentage = t.RemoveHomeAdvantage(t.OpponentBlocksByGame().Divide(fg)).Average(); FoulPercentage = t.RemoveHomeAdvantage(t.FoulsByGame().Divide(oppfg)).Average(); FouledPercentage = t.RemoveHomeAdvantage(t.OpponentFoulsByGame().Divide(fg)).Average(); PlayerFreeThrowProbabilities = new double[t.Players.Count]; PlayerFreeThrowPercentages = new double[t.Players.Count]; PlayerFieldGoalProbabilities = new double[t.Players.Count]; PlayerFieldGoalPercentages = new double[t.Players.Count]; PlayerThreePointProbabilities = new double[t.Players.Count]; PlayerThreePointPercentages = new double[t.Players.Count]; PlayerAssistPercentages = new double[t.Players.Count]; PlayerOnCourtProbabilities = new double[t.Players.Count]; PlayerStartProbabilities = new double[t.Players.Count]; PlayersOnCourt = new double[t.Players.Count]; double ft = t.FreeThrowsTakenByGame().Sum(); double fgs = fg.Sum(); double ap = t.AssistsByGame().Sum(); for (int p = 0; p < t.Players.Count; p++) { Players.Add(t.Players[p]); PlayerFreeThrowProbabilities[p] = t.Players[p].FTA / ft; PlayerFreeThrowPercentages[p] = t.Players[p].FTP; PlayerFieldGoalProbabilities[p] = t.Players[p].FTA / fgs; PlayerFieldGoalPercentages[p] = t.Players[p].FGP; if (t.Players[p].FGA > 0) { PlayerThreePointProbabilities[p] = t.Players[p].A3P / t.Players[p].FGA; } else { PlayerThreePointProbabilities[p] = 0; } PlayerThreePointPercentages[p] = t.Players[p].P3P; PlayerAssistPercentages[p] = t.Players[p].AST / (double)(t.Players[p].AST + t.Players[p].FGA); PlayerOnCourtProbabilities[p] = t.Players[p].MIN_T * t.Matchups.Count / 48.0; PlayerStartProbabilities[p] = t.Players[p].Starts / (double)t.Matchups.Count; } }
//public static void GetNflTeams(TeamList teams) //{ // HtmlIterator teamPage = new HtmlIterator(WebUtility.GetNflURL().ToString()); // while (teamPage.GetNext("<h5 ><a href=\"http://www.espn.com/nfl/team/_/name/")) // { // Team te = new Team(); // te.teamName = teamPage.GetNextTagText("a"); // teamPage.GetNext("<h5 ><a href=\"/nfl/team/roster/_/name/"); // te.teamURL = "http://www.espn.com" + teamPage.GetNextAttributeValue("href"); // teams.Add(te); // PlayerList playerList = new PlayerList(); // HtmlIterator t = new HtmlIterator(te.teamURL); // if (!t.GetNext("COLLEGE")) continue; // int endOfTable = t.HTML.IndexOf("</table>", t.StartIndex); // while (t.StartIndex < endOfTable && t.StartIndex >= 0) // { // FootballPlayer player = new FootballPlayer(); // int dummy; // if (int.TryParse(t.GetNextTagText("td"), out dummy)) // player.Number = dummy; // player.Name = t.GetNextTagText("a"); // player.Position = t.GetNextTagText("td"); // if (int.TryParse(t.GetNextTagText("td"), out dummy)) // player.Age = dummy; // player.Height = 0; // string[] height = t.GetNextTagText("td").Split('-'); // for (int i = 0; i < height.Length; i++) // { // if (int.TryParse(height[i], out dummy)) // player.Height += (12 * dummy) / (11 * i + 1); // } // if (int.TryParse(t.GetNextTagText("td"), out dummy)) // player.Weight = dummy; // if (int.TryParse(t.GetNextTagText("td"), out dummy)) // player.Experience = dummy; // else player.Experience = 0; // Rookie // player.College = t.GetNextTagText("td"); // te.Players.Add(player); // } // } //} public static void GetNcaabTeams(TeamList teams) { HtmlIterator teamPage = new HtmlIterator(WebUtility.GetURL().ToString()); while (teamPage.GetNext("<tr><td class='nowrap'")) { BasketballTeam te = new BasketballTeam(); te.teamName = teamPage.GetNextAttributeValue("rel"); te.teamURL = "http://basketball.realgm.com" + teamPage.GetNextAttributeValue("href"); teams.Add(te); BasketballPlayerList playerList = new BasketballPlayerList(); HtmlIterator t = new HtmlIterator(te.teamURL + "rosters/"); if (!t.GetNext("High School/Prep School")) { continue; } int endOfTable = t.HTML.IndexOf("</tbody>", t.StartIndex); while (t.StartIndex < endOfTable && t.StartIndex >= 0) { BasketballPlayer player = new BasketballPlayer(); int dummy; if (int.TryParse(t.GetNextTagText("td"), out dummy)) { player.Number = dummy; } else { continue; } player.Name = t.GetNextTagText("a"); player.Class = t.GetNextTagText("td"); player.Position = t.GetNextTagText("td"); player.Height = 0; string[] height = t.GetNextTagText("td").Split('-'); for (int i = 0; i < height.Length; i++) { if (int.TryParse(height[i], out dummy)) { player.Height += (12 * dummy) / (11 * i + 1); } } if (int.TryParse(t.GetNextTagText("td"), out dummy)) { player.Weight = dummy; } player.BirthDate = t.GetNextTagText("td"); player.BirthCity = t.GetNextTagText("td"); player.Nationality = t.GetNextTagText("td"); player.HighSchool = t.GetNextTagText("td"); te.Players.Add(player); } } }
public BasketballTeam() : base() { Players = new BasketballPlayerList(); }