Exemple #1
0
        private void GetBatterResult(Player player)
        {
            // 타자에 대한 경기별 기록을 얻어온다.
            var matches = dbMgr.SelectAll<Match>();
            var ths = dbMgr.SelectAll<Th>();
            var bats = dbMgr.SelectAll<Bat>();

            var wMatches = from m in matches
                           join t in ths
                           on m.Id equals t.MatchId
                           join b in bats
                           on t.Id equals b.ThId
                           where b.HitterId == player.PlayerId
                            && m.GameId.StartsWith("2014")
                           group b by new { m.GameId } into g
                           select new
                           {
                               GameId = g.Key.GameId,
                               Total = g.Count(),
                               Hit = g.Count(x => x.PResult == PResultType.Hit),
                           };


      dgMatch.DataSource = wMatches;
        }
Exemple #2
0
        public Player Parse(String html, String team, Int32 playerId)
        {
            HtmlDocument doc = new HtmlDocument();
            doc.LoadHtml(html);
            var node = doc.DocumentNode.SelectSingleNode(".//div [@class='player_info']");

            Player player = new Player();

            Int32 tempNumber = 0;
            String[] spliter = new String[] { " " };

            // 플레이어 아이디
            player.PlayerId = playerId;

            // 이미지 파일명
            try
            {
                player.SCR = node.SelectSingleNode(".//div//img").GetAttributeValue("src", "");
            }
            catch
            {
                player.SCR = null;
            }

            // 팀명
            player.Team = team;

            // 이름
            var nodes = node.SelectNodes(".//li//span");
            player.Name = nodes[0].InnerText;

            // 백넘버
            if (Int32.TryParse(nodes[1].InnerText, out tempNumber))
            {
                player.BackNumber = tempNumber;
            }
            else
            {
                player.BackNumber = null;
            }

            // 생년월일
            String birthDate = nodes[2].InnerText;
            birthDate = birthDate.Replace("년", "").Replace("월", "").Replace("일", "").Replace(" ", "");
            if (birthDate.Length == 8)
            {
                player.BirthDate = birthDate.Replace("년", "").Replace("월", "").Replace("일", "").Replace(" ", "");
            }

            // 포지션, 손잡이
            String position = nodes[3].InnerText;
            position = position.Replace(@"(", " ").Replace(@")", "");
            if (position.Split(spliter, StringSplitOptions.RemoveEmptyEntries).Length == 2)
            {
                player.Position = position.Split(spliter, StringSplitOptions.RemoveEmptyEntries)[0];
                player.Hand = position.Split(spliter, StringSplitOptions.RemoveEmptyEntries)[1];
            }

            // 키, 몸무게
            String height = nodes[4].InnerText;
            height = height.Replace(@"cm/", " ").Replace(@"kg", "");
            if (height.Split(spliter, StringSplitOptions.RemoveEmptyEntries).Length == 2)
            {
                player.Height = Convert.ToInt32(height.Split(spliter, StringSplitOptions.RemoveEmptyEntries)[0]);
                player.Weight = Convert.ToInt32(height.Split(spliter, StringSplitOptions.RemoveEmptyEntries)[1]);
            }

            // 경력
            player.Career = nodes[5].InnerText;

            // 계약금
            player.Deposit = nodes[6].InnerText;
            // 연봉
            player.Salary = nodes[7].InnerText;
            // 지명순위
            player.Rank = nodes[8].InnerText;
            // 입단년도

            player.JoinYear = nodes[9].InnerText;
            return player;

        }
Exemple #3
0
        // 투수정보를 가지고온다.
        private void GetPitcherInfo(Player player, DataGridView dg, TextBox tb, DataGridView dgRatio)
        {
            var players = dbMgr.SelectAll<Player>();
            var matchs = dbMgr.SelectAll<Match>();
            var schedules = dbMgr.SelectAll<Schedule>();
            var ths = dbMgr.SelectAll<Th>();
            var bats = dbMgr.SelectAll<Bat>();
            var balls = dbMgr.SelectAll<Ball>();

            var pBalls = from m in matchs
                         join s in schedules
                         on m.GameId equals s.GameId
                         join t in ths
                         on m.Id equals t.MatchId
                         join b in bats
                         on t.Id equals b.ThId
                         join ball in balls
                         on b.Id equals ball.BatId
                         where b.PitcherId == player.PlayerId && ball.BallType != ""
                         && (m.GameId.StartsWith("2014") || m.GameId.StartsWith("2013"))
                         group ball by ball.BallType into g
                         select new
                         {
                             g.Key,
                             //MaxSpeed = g.Max(x => x.Speed),
                             //MinSpeed = g.Min(x => x.Speed),
                             Average = g.Average(x => x.Speed)
                         };
            dg.DataSource = pBalls;
            tb.Text = player.Name + " " + player.Hand;

            // 방어율 가져오기
            try
            {
                var ratios1 = (from m in matchs
                               join t in ths
                               on m.Id equals t.MatchId
                               join b in bats
                               on t.Id equals b.ThId
                               join p in players
                               on b.HitterId equals p.PlayerId
                               where (m.GameId.StartsWith("2014") || m.GameId.StartsWith("2013")) && b.PitcherId == player.PlayerId
                               select new
                               {
                                   H = p.Hand.Substring(2, 2),
                                   b.PResult
                               });

                var ratios2 = (from r in ratios1
                              group r by new { r.H } into g
                              select new
                              {
                                  Hand = g.Key.H,
                                  ratio = g.Count(x => x.PResult == PResultType.Hit) * 1.0 / g.Count()
                              });

                dgRatio.DataSource = ratios2;
            }
            catch
            {

            }
        }
Exemple #4
0
        // 선택한 타자의 교체된 숫자를 구해온다.
        private Int32 GetChangeCount(Player hitter)
        {
            var matches = dbMgr.SelectAll<Match>();
            var lineUps = dbMgr.SelectAll<LineUp>();

            var wLineUps = from l in lineUps
                           where l.PlayerId == hitter.PlayerId && l.EntryType == EntryType.Starting
                           select l;

            var wwLineUps = from l in wLineUps
                            join m in matches
                            on l.MatchId equals m.Id
                            join wl in lineUps
                            on new { l.MatchId, l.BatNumber, l.AttackType } equals new { wl.MatchId, wl.BatNumber, wl.AttackType }
                            where (Convert.ToInt32(m.GameId.Substring(0, 8)) > 20140700 && Convert.ToInt32(m.GameId.Substring(0, 8)) < 20150000) &&
                            wl.EntryType == EntryType.Change
                            select wl;

            return wwLineUps.Count();
        }
Exemple #5
0
        // 선택한 타자와 선발투수의 상대정보를 얻어온다.
        private void GetHitterVSInfo(Player hitter, DataGridView sender)
        {
            // 투수를 가지고 온다.
            Player pitcher;
            if (sender == dgAwayHitter)
            {
                pitcher = pitchers[0];
            }
            else
            {
                pitcher = pitchers[1];
            }

            var matches = dbMgr.SelectAll<Match>();
            var ths = dbMgr.SelectAll<Th>();
            var bats = dbMgr.SelectAll<Bat>();
            var players = dbMgr.SelectAll<Player>();

            // 평균치 데이터
            var allResult = (from m in matches
                             join t in ths
                             on m.Id equals t.MatchId
                             join b in bats
                             on t.Id equals b.ThId
                             join p in players
                             on b.PitcherId equals p.PlayerId
                             where m.GameId.StartsWith("2014") && b.HitterId == hitter.PlayerId
                              && b.PitcherId == pitcher.PlayerId
                             group b by new { b.HitterId } into g
                             select new
                             {
                                 Total = g.Count(),
                                 Hit = g.Count(x => x.PResult == PResultType.Hit),
                                 Pass = g.Count(x => x.PResult == PResultType.Pass),
                                 Out = g.Count(x => x.PResult == PResultType.Out),
                                 Avg = g.Count(x => x.PResult == PResultType.Hit) * 1.0 / g.Count()
                             });

            dgHitterVSInfo.DataSource = allResult;
        }
Exemple #6
0
        // 선택한 타자의 투수타입 타격정보를 얻어온다.
        private void GetHitterTypeInfo(Player hitter)
        {
            var matches = dbMgr.SelectAll<Match>();
            var ths = dbMgr.SelectAll<Th>();
            var bats = dbMgr.SelectAll<Bat>();
            var players = dbMgr.SelectAll<Player>();

            // 평균치 데이터
            var allResult = (from m in matches
                             join t in ths
                             on m.Id equals t.MatchId
                             join b in bats
                             on t.Id equals b.ThId
                             join p in players
                             on b.PitcherId equals p.PlayerId
                             where (Convert.ToInt32(m.GameId.Substring(0, 8)) > 20140700 && Convert.ToInt32(m.GameId.Substring(0, 8)) < 20150000) &&
                                b.HitterId == hitter.PlayerId
                             group b by new { b.HitterId, Hand = p.Hand.Substring(0, 2) } into g
                             select new
                             {
                                 Hand = g.Key.Hand,
                                 Total = g.Count(),
                                 Hit = g.Count(x => x.PResult == PResultType.Hit),
                                 Pass = g.Count(x => x.PResult == PResultType.Pass),
                                 Out = g.Count(x => x.PResult == PResultType.Out),
                                 Avg = g.Count(x => x.PResult == PResultType.Hit) * 1.0 / g.Count()
                             });

            dgHitterTypeInfo.DataSource = allResult;
        }
Exemple #7
0
        private Int32 GetHitCount(String date, Player p)
        {
            var players = dbMgr.SelectAll<Player>();
            var matchs = dbMgr.SelectAll<Match>();
            var schedules = dbMgr.SelectAll<Schedule>();
            var ths = dbMgr.SelectAll<Th>();
            var bats = dbMgr.SelectAll<Bat>();

            var hitcount = (from m in matchs
                            join s in schedules
                            on m.GameId equals s.GameId
                            join t in ths
                            on m.Id equals t.MatchId
                            join b in bats
                            on t.Id equals b.ThId
                            where m.GameId.Substring(0, 8) == date && b.HitterId == p.PlayerId
                              && b.PResult == PResultType.Hit
                            select b).Count();

            return hitcount;
        }