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;
            }
        }
예제 #2
0
        //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);
                }
            }
        }
예제 #3
0
 public BasketballTeam() : base()
 {
     Players = new BasketballPlayerList();
 }