Ejemplo n.º 1
0
    /// <summary>
    /// If runner reaches to home plate.
    /// </summary>
    /// <param name="batter"></param>
    public static void RunnerToHomePlate(Batter batter)
    {
        InGameManager.runnerInBases[3] = null;
        //Add score by 1;
        if (InGameManager.currentAttack == InGameManager.game.home)
        {
            InGameManager.game.homeScoreBoard.AddRun(InGameManager.currentInning);
        }
        else if (InGameManager.currentAttack == InGameManager.game.away)
        {
            InGameManager.game.awayScoreBoard.AddRun(InGameManager.currentInning);
        }
        else
        {
            throw new System.NullReferenceException("Error: There is no appropriate team matching. Check currentAttack and Game instance again.");
        }

        //And other statistic stuffs.
        bool isEarnedRun = true;

        if (isEarnedRun)
        {
            //Earned Run
            InGameManager.currentPitcher.stats.SetStat(1, PlayerStatistics.PS.ER);
        }
        //Runs Batted In
        InGameManager.currentBatter.stats.SetStat(1, PlayerStatistics.PS.RBI);
        //Run
        batter.stats.SetStat(1, PlayerStatistics.PS.R);
    }
Ejemplo n.º 2
0
        public bool HadAtBat(Batter batter, DateTime gameDate)
        {
            var hadAtBat = false;

            if (gameDate < DateTime.Now.AddDays(-2))
            {
                if (batter == null || batter.PlayerSlug == null)
                {
                    return(false);
                }
                var statsAfterGame = _playerStatsRepository.Submit(
                    queryDate: gameDate.AddDays(1),
                    playerSlug: batter.PlayerSlug);
                var statsBeforeGame = _playerStatsRepository.Submit(
                    queryDate: gameDate,
                    playerSlug: batter.PlayerSlug);
                if (statsAfterGame.AtBats > statsBeforeGame.AtBats)
                {
                    hadAtBat = true;
                }
            }
            else
            {
                Console.WriteLine("Game too fresh");
            }
            return(hadAtBat);
        }
Ejemplo n.º 3
0
    private bool isFinished(Batter batter)
    {
        if (waittime2 < 0)
        {
            return(true);
        }

        if (batter.hitballObj.GetComponentInChildren <Ball>().kekka != "")
        {
            string kekka = batter.hitballObj.GetComponentInChildren <Ball>().kekka;
            if (kekka.Equals("HR") && batter.hitballObj.GetComponentInChildren <Ball>().isBound)
            {
                kekka = "2BH";
            }
            Debug.Log(kekka);
            batter.gameManager.kekka = kekka;
            return(true);
        }
        if (batter.hitballObj.transform.GetComponent <Rigidbody>().velocity.magnitude <= 0.2 && waittime < 0)
        {
            Debug.Log("ballstop");
            batter.gameManager.kekka = "OUT";
            return(true);
        }

        return(false);
    }
Ejemplo n.º 4
0
 private void AddBatter(
     Dictionary <int, Dictionary <string, int> > d,
     int j,
     Batter batter)
 {
     if (d.TryGetValue(j, out Dictionary <string, int> batterDict))
     {
         if (batterDict.TryGetValue(batter.PlayerSlug, out int batterAps))
         {
             batterAps++;
             batterDict[batter.PlayerSlug] = batterAps;
         }
         else
         {
             batterDict.Add(batter.PlayerSlug, 1);
         }
     }
     else
     {
         var playerDict = new Dictionary <string, int>
         {
             { batter.PlayerSlug, 1 }
         };
         d.Add(j, playerDict);
     }
 }
Ejemplo n.º 5
0
 private void AddToRoster(Dictionary <string, Batter> roster, Batter batterAt)
 {
     if (!roster.ContainsKey(batterAt.PlayerSlug))
     {
         roster.Add(batterAt.PlayerSlug, batterAt);
     }
 }
Ejemplo n.º 6
0
    public void init(Batter batter)
    {
        Destroy(batter.ballInstance);


        batter.hitballObj = Instantiate(batter.hitballPrefab, new Vector3(0f, 1.0f, 0f), Quaternion.identity);

        batter.hitballObj.SetActive(true);
        Rigidbody rb = batter.hitballObj.transform.GetComponent <Rigidbody>();

        float maxBattingSpeedKmH = basespeed * 0.277f;
        float kakudo             = basetatekakudo * Mathf.PI / 180;

        float speedY   = Mathf.Sin(kakudo) * maxBattingSpeedKmH / 1.4f;
        float speedMae = Mathf.Cos(kakudo) * maxBattingSpeedKmH / 1.4f;

        Debug.Log("speedY: " + speedY + "speedMae: " + speedMae);

        float yokoKakudo = baseyokokakudo * Mathf.PI / 180; //-30~150
        float speedX     = Mathf.Sin(yokoKakudo) * speedMae;
        float speedZ     = Mathf.Cos(yokoKakudo) * speedMae;

        Debug.Log("x:" + speedX + "y:" + speedY + "z:" + speedZ);

        rb.velocity = new Vector3(speedX, speedY, speedZ);
    }
Ejemplo n.º 7
0
 private static Player CastToPlayer(Batter player)
 {
     return(new Player
     {
         Name = player.Name,
         Slug = player.PlayerSlug
     });
 }
Ejemplo n.º 8
0
        private void HandleHitterAtPlateEvent(HitterWasAtBat msg, Boolean shouldPersist)
        {
            _totalBases += msg.HitValue;
            _atBats     += msg.IsAtBat ? 1 : 0;
            _rbi        += msg.RbiOnPlay;
            _hits       += msg.HitValue > 0 ? 1 : 0;
            if (msg.PlayType == Shared.PlayType.Walk)
            {
                _walks += 1;
            }
            else if (msg.PlayType == Shared.PlayType.HitByPitch)
            {
                _hitByPitch += 1;
            }
            else if (msg.IsSacrificeFly)
            {
                _sacrificeFlies += 1;
            }

            if (shouldPersist)
            {
                //Console.WriteLine($"{_id} has {Average()} BA, {OnBase()} OBP, and {Slugging()} SLG");
                var batter = new Batter
                {
                    AtBats         = _atBats,
                    Average        = Average(),
                    Hits           = _hits,
                    Id             = _id,
                    PlayerId       = _id,
                    Name           = "",
                    OnBase         = OnBase(),
                    SacrificeFlies = _sacrificeFlies,
                    Slugging       = Slugging(),
                    Walks          = _walks,
                    HitByPitch     = _hitByPitch,
                    TotalBases     = _totalBases
                };

                _coll.ReplaceOneAsync <Batter>(b => b.Id.Equals(_id),
                                               batter, new UpdateOptions {
                    IsUpsert = true
                })
                .PipeTo(Self);

                RethinkDB.R.Db("baseball").Table("batterStat").Insert(batter).RunNoReply(RethinkConnection.Connection);


                //write to event store
                var eventData = new EventData(Guid.NewGuid(), "HitterPlateAppearance", true,
                                              System.Text.Encoding.Default.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(msg)),
                                              new byte[] { });
                EventConnection.Connection
                .AppendToStreamAsync(msg.Id, ExpectedVersion.Any, eventData)
                .PipeTo(Self);
            }
        }
Ejemplo n.º 9
0
 public Cake(Shape shape, Batter batter, Frost frost = null)
 {
     this.shape  = shape;
     this.batter = batter;
     this.frost  = frost;
     this.pickSet.Add(typeof(Shape).ToString(), shape.pickId);
     this.pickSet.Add(typeof(Batter).ToString(), batter.pickId);
     this.pickSet.Add(typeof(Frost).ToString(), frost != null ? frost.pickId : -1);
     this.Render();
 }
Ejemplo n.º 10
0
 /// <summary>
 /// Determines whether attempt to steal base or not.
 /// </summary>
 /// <param name="batter"></param>
 /// <returns></returns>
 public static bool BaseStealDetermine(Batter batter, bool isRandom = false)
 {
     if (isRandom)
     {
         return(false);
     }
     else
     {
         return(false);
     }
 }
Ejemplo n.º 11
0
        public static int?ExtractBatterHomeRuns(IPlayer player)
        {
            Batter b = player as Batter;

            if (b == null)
            {
                return(null);
            }

            return(b.ProjectedHR);
        }
Ejemplo n.º 12
0
 private bool LineupHas(Batter batter, List <Batter> lineup)
 {
     foreach (var b in lineup)
     {
         if (b.Name == batter.Name)
         {
             return(true);
         }
     }
     return(false);
 }
Ejemplo n.º 13
0
        public static int?ExtractBatterHitsPlusWalks(IPlayer player)
        {
            Batter b = player as Batter;

            if (b == null)
            {
                return(null);
            }

            return(b.ProjectedBB + b.ProjectedH);
        }
Ejemplo n.º 14
0
        public void BatterSet()
        {
            Batter b = new Batter();

            this.CSVData    = b.CSVData;
            this.DATA       = b.DATA;
            this.child      = b.child;
            this.child2     = b.child2;
            this.SearchList = b.SearchList;
            this.Year       = b.Year;
        }
Ejemplo n.º 15
0
        public static int?ExtractBatterAtBats(IPlayer player)
        {
            Batter b = player as Batter;

            if (b == null)
            {
                return(null);
            }

            return(b.ProjectedAB);
        }
Ejemplo n.º 16
0
        static void Main(string[] args)
        {
            Console.WriteLine("Start");
            Ball ball  = new Ball();
            Ball ball2 = new Ball();
            Bat  bat   = ball.GetNewBat();

            bat = ball.GetNewBat();

            Pitcher       pitcher       = new Pitcher(ball);
            Catcher       cathcer       = new Catcher(ball);
            Batter        batter        = new Batter(ball);
            FirstBaseman  firstBaseman  = new FirstBaseman(ball);
            SecondBaseman secondBaseman = new SecondBaseman(ball);
            ThirdBaseman  thirdBaseman  = new ThirdBaseman(ball);
            Fan           energeticFan  = new Fan(ball);
            Umpire        goodUmpire    = new Umpire(ball);


            bat.HitTheBall(new BallEventArgs(50, 80));
            bat.HitTheBall(new BallEventArgs(50, 80));
            //int[][] parmas = new int[][];
            ball.OnBallInPlayTest(new BallEventArgs(50, 80));
            bat.HitTheBall(new BallEventArgs(40, 200));
            bat.HitTheBall(new BallEventArgs(40, 200));
            Console.WriteLine();
            bat.HitTheBall(new BallEventArgs(40, 200));


            //Add listener many times:
            goodUmpire.StartLookingAtBall(ball);
            goodUmpire.StartLookingAtBall(ball);
            bat.HitTheBall(new BallEventArgs(30, 910));

            Console.WriteLine();
            goodUmpire.StopLookingAtBall();
            bat.HitTheBall(new BallEventArgs(30, 910));
            goodUmpire.StopLookingAtBall();
            goodUmpire.StopLookingAtBall();

            Console.WriteLine();

            bat.HitTheBall(new BallEventArgs(50, 80));
            Console.WriteLine();

            goodUmpire.StartWaitgingForHit(bat);
            goodUmpire.StartWaitgingForHit(bat);
            bat.HitTheBall(new BallEventArgs(50, 80));

            bat.HitTheBall(new BallEventArgs(50, 80));


            Console.ReadKey();
        }
Ejemplo n.º 17
0
    public void init(Batter batter)
    {
        batter.gameManager.kekka = "";
        batter.gameManager.printCall();

        Debug.Log("BattingStateinit");
        batter.ballInstance       = Instantiate(batter.ballObj, new Vector3(13.0f, 1.0f, 13.0f), Quaternion.identity);
        batter.ballObjBall        = batter.ballInstance.GetComponent <Ball>();
        batter.ballObjBall.kyusyu = batter.gameManager.kyusyu;

        m_Animator = batter.GetComponentInParent <Animator>();
    }
Ejemplo n.º 18
0
        public bool PichingJudge(int throwPoint)
        {
            Batter batter = new Batter();

            batter.CpuMeetPoint();
            bool hit = false;

            if (Batter.MeetPoint >= 1 && Batter.MeetPoint <= 3)
            {
                if (Batter.MeetPoint != 3)
                {
                    if (Batter.MeetPoint == throwPoint || Batter.MeetPoint == throwPoint + 1)
                    {
                        hit = true;
                    }
                }
                else if (Batter.MeetPoint == throwPoint)
                {
                    hit = true;
                }
            }
            else if (Batter.MeetPoint >= 4 && Batter.MeetPoint <= 6)
            {
                if (Batter.MeetPoint != 6)
                {
                    if (Batter.MeetPoint == throwPoint || Batter.MeetPoint == throwPoint + 1)
                    {
                        hit = true;
                    }
                }
                else if (Batter.MeetPoint == throwPoint)
                {
                    hit = true;
                }
            }
            else if (Batter.MeetPoint >= 7 && Batter.MeetPoint <= 9)
            {
                if (Batter.MeetPoint != 9)
                {
                    if (Batter.MeetPoint == throwPoint || Batter.MeetPoint == throwPoint + 1)
                    {
                        hit = true;
                    }
                }
                else if (Batter.MeetPoint == throwPoint)
                {
                    hit = true;
                }
            }
            return(hit);
        }
Ejemplo n.º 19
0
        private bool PlayerPassesFilters(IPlayer player)
        {
            if (cbUndrafted.Checked && !string.IsNullOrEmpty(player.FantasyTeam))
            {
                return(false);
            }

            Batter b = player as Batter;

            if (cb1B.Checked && b != null && b.Is1B)
            {
                return(true);
            }
            if (cb2B.Checked && b != null && b.Is2B)
            {
                return(true);
            }
            if (cb3B.Checked && b != null && b.Is3B)
            {
                return(true);
            }
            if (cbSS.Checked && b != null && b.IsSS)
            {
                return(true);
            }
            if (cbOF.Checked && b != null && b.IsOF)
            {
                return(true);
            }
            if (cbC.Checked && b != null && b.IsC)
            {
                return(true);
            }
            if (cbUtil.Checked && b != null)
            {
                return(true);
            }

            Pitcher p = player as Pitcher;

            if (cbSP.Checked && p != null && p.IsSP)
            {
                return(true);
            }
            if (cbRP.Checked && p != null && p.IsRP)
            {
                return(true);
            }

            return(false);
        }
Ejemplo n.º 20
0
 /*
  * バッティング結果を集計
  * 1. ボールが停止する
  * 2. 一定時間経過する
  * 3. 壁に当たる
  */
 public void batting(Batter batter)
 {
     if (isFinished(batter))
     {
         batter.state = new AfterState();
         batter.state.init(batter);
     }
     else
     {
         waittime  -= Time.deltaTime;
         waittime2 -= Time.deltaTime;
     }
     //Debug.Log(batter.hitballObj.transform.GetComponent<Rigidbody>().velocity.magnitude);
 }
Ejemplo n.º 21
0
        public BatterActor(String id)
        {
            _id = id;

            Receive <HitterWasAtBat>(msg =>
            {
                _totalBases += msg.HitValue;
                _atBats     += msg.IsAtBat ? 1 : 0;
                _rbi        += msg.RbiOnPlay;
                _hits       += msg.HitValue > 0 ? 1 : 0;
                if (msg.PlayType == Shared.PlayType.Walk)
                {
                    _walks += 1;
                }
                else if (msg.PlayType == Shared.PlayType.HitByPitch)
                {
                    _hitByPitch += 1;
                }
                else if (msg.IsSacrificeFly)
                {
                    _sacrificeFlies += 1;
                }

                //Console.WriteLine($"{_id} has {Average()} BA, {OnBase()} OBP, and {Slugging()} SLG");
                var batter = new Batter
                {
                    AtBats         = _atBats,
                    Average        = Average(),
                    Hits           = _hits,
                    Id             = _id,
                    PlayerId       = _id,
                    Name           = "",
                    OnBase         = OnBase(),
                    SacrificeFlies = _sacrificeFlies,
                    Slugging       = Slugging(),
                    Walks          = _walks,
                    HitByPitch     = _hitByPitch,
                    TotalBases     = _totalBases
                };

                _coll.ReplaceOneAsync <Batter>(b => b.Id.Equals(_id),
                                               batter, new UpdateOptions {
                    IsUpsert = true
                })
                .PipeTo(Self);

                RethinkDB.R.Db("baseball").Table("batterStat").Insert(batter).RunNoReply(RethinkConnection.Connection);
            });
        }
Ejemplo n.º 22
0
    public void OnClickCPUPitching()
    {
        GameObject pitObj  = maneger.pitcher;
        Pitcher    pitcher = pitObj.GetComponent <Pitcher>();

        pitcher.strategy = new PitchingPlayerStrategy();

        GameObject batObj = maneger.batter;
        Batter     batter = batObj.GetComponent <Batter>();

        batter.strategy = new BattingCPUStrategy();

        maneger.mode = "battle";
        Close();
    }
Ejemplo n.º 23
0
 public void batting(Batter batter)
 {
     if (batter.gameManager.kyusyu != KYUSYU.NONE)
     {
         if (waittime < 0)
         {
             batter.state = new BattingState();
             batter.state.init(batter);
         }
         else
         {
             waittime -= Time.deltaTime;
         }
     }
 }
Ejemplo n.º 24
0
    public void batting(Batter batter)
    {
        if (waittime < 0)
        {
            batter.state = new WaitingBattingState();
            batter.state.init(batter);
            batter.gameManager.kekka = "wait";

            if (batter.hitballObj != null)
            {
                Destroy(batter.hitballObj);
            }
        }
        waittime -= Time.deltaTime;
    }
Ejemplo n.º 25
0
        public bool Likes(Selection selection, out string reasonForDislike)
        {
            reasonForDislike = string.Empty;
            var choices         = new List <Batter>();
            var originalChoices = new List <Batter>
            {
                selection.Batter1,
                selection.Batter2,
                selection.Batter3,
                selection.Batter4
            };

            foreach (var batter in originalChoices)
            {
                if (!MissingFromLineup(
                        batter,
                        selection.GameDate))
                {
                    choices.Add(batter);
                }
            }
            if (choices.Count == 0)
            {
                reasonForDislike = $@"  All top 3 batters for {
					selection.Batter1.TeamSlug
					} had time off in the last 3 days"                    ;
                return(false);
            }
            var bestAvg           = 0.000M;
            var batterWithBestAvg = new Batter();

            foreach (var batter in choices)
            {
                // recalculate Batting Average
                RecalculateBattingAverage(batter, selection.GameDate);
                if (batter.BattingAverage > bestAvg)
                {
                    batterWithBestAvg = batter;
                    bestAvg           = batter.BattingAverage;
                }
            }
            selection.Batter = batterWithBestAvg;
#if DEBUG
            Console.WriteLine($"{selection.Batter} has the highest batting average");
#endif
            return(true);
        }
Ejemplo n.º 26
0
        private bool PlayerPassesFilters(IPlayer player)
        {
            Batter b = player as Batter;

            if (cb1B.Checked && b != null && b.Is1B)
            {
                return(true);
            }
            if (cb2B.Checked && b != null && b.Is2B)
            {
                return(true);
            }
            if (cb3B.Checked && b != null && b.Is3B)
            {
                return(true);
            }
            if (cbSS.Checked && b != null && b.IsSS)
            {
                return(true);
            }
            if (cbOF.Checked && b != null && b.IsOF)
            {
                return(true);
            }
            if (cbC.Checked && b != null && b.IsC)
            {
                return(true);
            }
            if (cbUtil.Checked && b != null)
            {
                return(true);
            }

            Pitcher p = player as Pitcher;

            if (cbSP.Checked && p != null && p.IsSP)
            {
                return(true);
            }
            if (cbRP.Checked && p != null && p.IsRP)
            {
                return(true);
            }

            return(false);
        }
Ejemplo n.º 27
0
    //공이 생성 될 때 초기화
    public void Init(Vector3 targetV, int patternN)
    {
        if (isInit)
        {
            return;
        }

        batter = FindObjectOfType <Batter>();

        do
        {
            curveRateX = Random.Range(-5f, 5f);
        } while (Mathf.Abs(curveRateX) < 3);
        curveRateX *= (1 + CountManager.instance.countPitch * 0.01f);

        do
        {
            curveRateY = Random.Range(-5f, 5f);
        } while (Mathf.Abs(curveRateY) < 3);
        curveRateY *= (1 + CountManager.instance.countPitch * 0.01f);


        pattern = patternN;
        target  = targetV;

        direction      = target - this.transform.position;
        moveDirect     = this.transform.position;
        targetDistance = Vector3.Distance(this.transform.position, target);


        isInit       = true;
        isBall       = false;
        canvas       = Instantiate(canvasDistance);
        textDistance = canvas.GetComponentInChildren <Text>();
        if (GameManager.instance.mode == GameManager.Mode.AUTO)
        {
            speed = Random.Range(0.4f, 0.5f) + CountManager.instance.countPitch * 0.02f;
        }
        else
        {
            speed = Random.Range(0.4f, 0.5f);
        }

        rotate = new Vector3(Random.Range(60, 120), Random.Range(60, 120), Random.Range(60, 120)) * speed * 10;
    }
Ejemplo n.º 28
0
        private bool NotInLineup(
            DateTime gameDate,
            Batter batter)
        {
            if (batter == null || batter.TeamSlug == null)
            {
                return(true);
            }
            var lineup = _lineupRepository.Submit(
                gameDate,
                batter.TeamSlug).Lineup;

            if (!LineupHas(batter, lineup))
            {
                return(true);
            }
            return(false);
        }
Ejemplo n.º 29
0
        private Batter MapDtoToBatter(LineupDto dto)
        {
            var playerSlug = GetPlayerSlug(dto.PlayerId, Players);
            var batter     = new Batter
            {
                PlayerSlug           = playerSlug,
                Name                 = GetName(dto.PlayerId, Players),
                TeamId               = TeamFor(dto.TeamId, Teams),
                Bats                 = GetBats(dto.PlayerId, Players),
                BattingOrder         = dto.BattingOrder,
                LineupPosition       = dto.LineupPosition,
                PositionAbbreviation = dto.PositionAbbreviation,
                Sequence             = dto.Sequence,
                TeamSlug             = TeamSlugFor(dto.TeamId, Teams),
                TeamName             = TeamNameFor(dto.TeamId, Teams),
                BattingAverage       = GetBattingAverage(playerSlug)
            };

            return(batter);
        }
Ejemplo n.º 30
0
 private bool MissingFromLineup(
     Batter batter,
     DateTime gameDate)
 {
     if (_pickerOptions.OptionOn(Constants.Options.NoDaysOff))
     {
         for (int daysback = 1;
              daysback < _pickerOptions.IntegerOption(
                  Constants.Options.DaysOffDaysBack) + 1;
              daysback++)
         {
             var queryDate = gameDate.AddDays(-daysback);
             if (NotInLineup(queryDate, batter))
             {
                 return(true);
             }
         }
     }
     return(false);
 }