public AtBat Read(string[] arr)
        {
            AtBat atBat = new AtBat();

            atBat.Inning     = int.Parse(arr[1]);
            atBat.BatterId   = arr[3];
            atBat.FinalCount = arr[4];
            atBat.Pitches    = ParsePitchString(arr[5]);
            atBat.Play       = ParsePlay(arr[6]);
            atBat.Batter     = Context.Instance.People.Where(person => person.PersonId == atBat.BatterId).FirstOrDefault();
            return(atBat);
        }
        /// <summary>
        /// Gets the result.
        /// </summary>
        /// <returns>GamePlayResult</returns>
        /// <param name="currentAtBat">AtBat</param>
        /// <param name="result">GamePlayResult</param>
        public static GamePlayResult GetResult(AtBat currentAtBat, PitchResults result)
        {
            switch (result)
            {
            case PitchResults.Balk:
                return(new Balk(currentAtBat.Pitcher, currentAtBat.Batter, currentAtBat.Batter));

            case PitchResults.HBP:
                return(new HitByPitch(currentAtBat.Pitcher, currentAtBat.Batter, currentAtBat.Batter));

            case PitchResults.BB:
                return(new Walk(currentAtBat.Pitcher, currentAtBat.Batter, currentAtBat.Batter));

            case PitchResults.K:
                return(new Strikeout(currentAtBat.Pitcher, currentAtBat.Batter, currentAtBat.Batter));

            case PitchResults.GO:
                return(new GroundOut(currentAtBat.Pitcher, currentAtBat.Batter, currentAtBat.Batter));

            case PitchResults.FO:
                int roll = Dice.Roll2d10();
                if (roll <= currentAtBat.Pitcher.PitchingStats.Control)
                {
                    return(new PopFlyOut(currentAtBat.Pitcher, currentAtBat.Batter, currentAtBat.Batter));   //currentAtBat.Pitcher in control will induce infield popout
                }
                return(new Flyout(currentAtBat.Pitcher, currentAtBat.Batter, currentAtBat.Batter));

            case PitchResults.Single:
                return(new Single(currentAtBat.Pitcher, currentAtBat.Batter, currentAtBat.Batter));

            case PitchResults.Double:
                return(new Double(currentAtBat.Pitcher, currentAtBat.Batter, currentAtBat.Batter));

            case PitchResults.Triple:
                return(new Triple(currentAtBat.Pitcher, currentAtBat.Batter, currentAtBat.Batter));

            case PitchResults.HR:
                return(new HomeRun(currentAtBat.Pitcher, currentAtBat.Batter, currentAtBat.Batter));
            }
            return(null);
        }
        /// <summary>
        /// Gets the result.
        /// </summary>
        /// <returns>GamePlayResult</returns>
        /// <param name="currentAtBat">AtBat</param>
        /// <param name="result">GamePlayResult</param>
        public static GamePlayResult GetResult(AtBat currentAtBat, BattingResults result)
        {
            switch (result)
            {
            case BattingResults.HBP:
                return(new HitByPitch(currentAtBat.Batter, currentAtBat.Pitcher, currentAtBat.Batter));

            case BattingResults.BB:
                return(new Walk(currentAtBat.Batter, currentAtBat.Pitcher, currentAtBat.Batter));

            case BattingResults.K:
                return(new Strikeout(currentAtBat.Batter, currentAtBat.Pitcher, currentAtBat.Batter));

            case BattingResults.GO:
                return(new GroundOut(currentAtBat.Batter, currentAtBat.Pitcher, currentAtBat.Batter));

            case BattingResults.FO:
                int roll = Dice.Roll2d10();
                if (roll <= (int)((double)currentAtBat.Batter.BattingStats.PowerRating * 1.5))
                {
                    return(new DeepFlyOut(currentAtBat.Batter, currentAtBat.Pitcher, currentAtBat.Batter));    //Check for deep fly out
                }
                return(new Flyout(currentAtBat.Batter, currentAtBat.Pitcher, currentAtBat.Batter));

            case BattingResults.Single:
                return(new Single(currentAtBat.Batter, currentAtBat.Pitcher, currentAtBat.Batter));

            case BattingResults.Double:
                return(new Double(currentAtBat.Batter, currentAtBat.Pitcher, currentAtBat.Batter));

            case BattingResults.Triple:
                return(new Triple(currentAtBat.Batter, currentAtBat.Pitcher, currentAtBat.Batter));

            case BattingResults.HR:
                return(new HomeRun(currentAtBat.Batter, currentAtBat.Pitcher, currentAtBat.Batter));
            }
            return(null);
        }
Exemple #4
0
        public static void PlayOneHalfInning(Bases bases, int outs)
        {
            var testAtBat = new AtBat();

            testAtBat.GenerateRandomPlateAppearance();
            if (testAtBat.BasesValue > 0)
            {
                bases.Advance(testAtBat.BasesValue);
            }
            else
            {
                ++outs;
            }

            Console.WriteLine($"{testAtBat.Name} Advance {testAtBat.BasesValue}:");
            Console.WriteLine($"{bases}\nOuts: {outs}");
            Console.ReadLine();

            if (outs < 3)
            {
                PlayOneHalfInning(bases, outs);
            }
        }
Exemple #5
0
        private static AtBat GetAtBatFromXml(XmlNode atBatNode, int dbGameID, short inningNum, string inningHalf, string GID)
        {
            AtBat atBat = null;

            try
            {
                atBat = new AtBat
                {
                    atbat_num      = Convert.ToInt16(atBatNode.Attributes["num"].Value),
                    Balls          = Convert.ToInt16(atBatNode.Attributes["b"].Value),
                    Strikes        = Convert.ToInt16(atBatNode.Attributes["s"].Value),
                    Outs           = Convert.ToInt16(atBatNode.Attributes["o"].Value),
                    start_tfs      = atBatNode.Attributes["start_tfs"] == null ? null : atBatNode.Attributes["start_tfs"].Value,
                    start_tfs_zulu = atBatNode.Attributes["start_tfs_zulu"] == null ? null : atBatNode.Attributes["start_tfs_zulu"].Value,
                    batter         = Convert.ToInt32(atBatNode.Attributes["batter"].Value),
                    stand          = atBatNode.Attributes["stand"].Value,
                    b_height       = atBatNode.Attributes["b_height"] == null ? null : atBatNode.Attributes["b_height"].Value,
                    pitcher        = Convert.ToInt32(atBatNode.Attributes["pitcher"].Value),
                    p_throws       = atBatNode.Attributes["p_throws"] == null ? null : atBatNode.Attributes["p_throws"].Value,
                    atbat_des      = atBatNode.Attributes["des"].Value,
                    atbat_event    = atBatNode.Attributes["event"].Value,
                    GameId         = dbGameID,
                    Inning         = inningNum,
                    InningHalf     = inningHalf,
                    play_guid      = atBatNode.Attributes["play_guid"] == null || string.IsNullOrEmpty(atBatNode.Attributes["play_guid"].Value) ? (Guid?)null : Guid.Parse(atBatNode.Attributes["play_guid"].Value),
                    GID            = GID
                };
            }
            catch (Exception ex)
            {
                string err = string.Format("Error in GetAtBatFromXml: {0}", ex.ToString());
                Console.WriteLine(err);
                log.Error(err);
            }

            return(atBat);
        }