Example #1
0
        public bool AddPlayer(PositionPlayer _newBatter)
        {
            if (lineup[8] != null || IsPositionFilled(_newBatter.Position))
            {
                return false;
            }

            AddBatter(_newBatter);
            return true;
        }
Example #2
0
        private HIT_TYPE determineHitStrenght(PositionPlayer _batter, BALL_HEIGHT _battedBallType, int _defenderRange, int _defenderThrowing)
        {
            int runnerScore = 0;
            int defenderScore = 2 * _defenderThrowing + _defenderRange - 150;

            switch (_battedBallType)
            {
                case BALL_HEIGHT.FLY_BALL:
                    runnerScore = (3 * _batter.Speed / 2);
                    if (runnerScore - defenderScore >= randomOneToThousand()) return HIT_TYPE.TRIPLE;
                    return HIT_TYPE.DOUBLE;

                case BALL_HEIGHT.LINE_DRIVE:
                    if (_batter.Speed >= randomOneToThousand()) return HIT_TYPE.TRIPLE;
                    runnerScore = (2 * _batter.Speed + 5 * _batter.Power);
                    if (runnerScore - defenderScore >= randomOneToThousand()) return HIT_TYPE.DOUBLE;
                    return HIT_TYPE.SINGLE;

                default:
                    return HIT_TYPE.SINGLE;
            }
        }
Example #3
0
        private DefensiveAttributes.POSITION getPositionLineDriveHitTo(PositionPlayer _batter)
        {
            int randomResult = randomOneToThousand();

            if (_batter.BatHand == PositionPlayer.BAT_HAND.RIGHT)
            {
                randomResult -= 100;
            }
            else
            {
                randomResult += 100;
            }

            if (randomResult < 100)
            {
                return DefensiveAttributes.POSITION.THIRD_BASEMAN;
            }
            else if (randomResult < 200)
            {
                return DefensiveAttributes.POSITION.LEFT_FIELDER;
            }
            else if (randomResult < 400)
            {
                return DefensiveAttributes.POSITION.SHORTSTOP;
            }
            else if (randomResult < 600)
            {
                return DefensiveAttributes.POSITION.CENTER_FIELDER;
            }
            else if (randomResult < 800)
            {
                return DefensiveAttributes.POSITION.SECOND_BASEMAN;
            }
            else if (randomResult < 900)
            {
                return DefensiveAttributes.POSITION.FIRST_BASEMAN;
            }
            else
            {
                return DefensiveAttributes.POSITION.RIGHT_FIELDER;
            }
        }
Example #4
0
        private DefensiveAttributes.POSITION getPositionGroundBallHitTo(PositionPlayer _batter)
        {
            int randomResult = randomOneToThousand();

            if (_batter.BatHand == PositionPlayer.BAT_HAND.RIGHT)
            {
                randomResult -= 100;
            }
            else
            {
                randomResult += 100;
            }

            if (randomResult < 150)
            {
                return DefensiveAttributes.POSITION.THIRD_BASEMAN;
            }
            else if (randomResult < 450)
            {
                return DefensiveAttributes.POSITION.SHORTSTOP;
            }
            else if (randomResult < 650)
            {
                return DefensiveAttributes.POSITION.FIRST_BASEMAN;
            }
            else if (randomResult < 950)
            {
                return DefensiveAttributes.POSITION.SECOND_BASEMAN;
            }
            else
            {
                return DefensiveAttributes.POSITION.PITCHER;
            }
        }
Example #5
0
        private DefensiveAttributes.POSITION getPositionFlyBallHitTo(PositionPlayer _batter)
        {
            int randomResult = randomOneToThousand();

            if (_batter.BatHand == PositionPlayer.BAT_HAND.RIGHT)
            {
                randomResult -= 100;
            }
            else
            {
                randomResult += 100;
            }

            if (randomResult < 300)
            {
                return DefensiveAttributes.POSITION.LEFT_FIELDER;
            }
            else if (randomResult < 600)
            {
                return DefensiveAttributes.POSITION.CENTER_FIELDER;
            }
            else
            {
                return DefensiveAttributes.POSITION.RIGHT_FIELDER;
            }
        }
Example #6
0
        private void doTriple(PositionPlayer _batter, Pitcher _pitcher, DefensiveAttributes.POSITION _hitToPosition, Game _game)
        {
            _game.GetLog().addEvent(_game.CurrentHalfInning, _game.HomeTeamAtBat, _batter.FirstName + " triples to " + POSITION_TEXT[Convert.ToInt32(_hitToPosition)] + "!");
            _game.advanceRunner(Game.BASE.THIRD, 3);
            _game.advanceRunner(Game.BASE.SECOND, 3);
            _game.advanceRunner(Game.BASE.FIRST, 3);
            _game.RunnerOnThird = _batter;
            //TODO: hit++ (batter)
            _game.GetAHit();
            //TODO: hit++ (pitcher)
            //TODO: Triple++ (batter)

            if (!tryField(_hitToPosition, _game))
            {
                doNonROEError(ERROR_TYPE.DEEP_BOBBLE, _game, _hitToPosition);
            }

            //Temp
            counter.triples++;
        }
Example #7
0
        private void doSingle(PositionPlayer _batter, Pitcher _pitcher, DefensiveAttributes.POSITION _hitToPosition, Game _game)
        {
            _game.GetLog().addEvent(_game.CurrentHalfInning, _game.HomeTeamAtBat, _batter.FirstName + " singles to " + POSITION_TEXT[Convert.ToInt32(_hitToPosition)] + "!");
            _game.advanceRunner(Game.BASE.THIRD, 1);
            _game.advanceRunner(Game.BASE.SECOND, 1);
            //TODO: advance extra base?
            _game.advanceRunner(Game.BASE.FIRST, 1);
            //TODO: advance extra base?
            _game.RunnerOnFirst = _batter;
            //TODO: hit++ (batter)
            _game.GetAHit();
            //TODO: hit++ (pitcher)

            tryAdvanceFromThirdBase(_hitToPosition, _game);
            tryAdvanceFromSecondBase(_hitToPosition, _game);

            //Temp
            counter.singles++;
        }
Example #8
0
        private void doROEError(ERROR_TYPE _gravity, Game _game, PositionPlayer _batter, DefensiveAttributes.POSITION _posCommitingError)
        {
            _game.CommitError();

            bool doDeep = false;

            switch (_gravity)
            {
                case ERROR_TYPE.DEEP_FIELDING:
                    _game.GetLog().addEvent(_game.CurrentHalfInning, _game.HomeTeamAtBat, _batter.FirstName + " reaches on an outfield fielding error by " + _game.GetDefenderFirstName(_posCommitingError) + "!");
                    doDeep = true;
                    break;
                case ERROR_TYPE.DEEP_THROWING:
                    _game.GetLog().addEvent(_game.CurrentHalfInning, _game.HomeTeamAtBat, _batter.FirstName + " reaches on an outfield throwing error by " + _game.GetDefenderFirstName(_posCommitingError) + "!");
                    doDeep = true;
                    break;
                case ERROR_TYPE.SHORT_THROWING:
                    _game.GetLog().addEvent(_game.CurrentHalfInning, _game.HomeTeamAtBat, _batter.FirstName + " reaches on an infield throwing error by " + _game.GetDefenderFirstName(_posCommitingError) + "!");
                    doDeep = true;
                    break;
                case ERROR_TYPE.SHORT_FIELDING:
                    _game.GetLog().addEvent(_game.CurrentHalfInning, _game.HomeTeamAtBat, _batter.FirstName + " reaches on an infield fielding error by " + _game.GetDefenderFirstName(_posCommitingError) + "!");
                    doDeep = false;
                    break;
            }

            if (doDeep)
            {
                doDeepError(_game);
                _game.RunnerOnSecond = _batter;
            }
            else
            {
                doShortError(_game);
                _game.RunnerOnFirst = _batter;
            }
        }
Example #9
0
        private void doLineDrive(PositionPlayer _batter, Pitcher _pitcher, DefensiveAttributes.POSITION _hitToPosition, Game _game)
        {
            if (isAHit(BABIP_ON_LINE_DRIVES, _game.GetDefenderRange(_hitToPosition)))
            {
                switch (determineHitStrenght(_batter, BALL_HEIGHT.LINE_DRIVE, _game.GetDefenderRange(_hitToPosition), _game.GetDefenderThrowing(_hitToPosition)))
                {
                    case HIT_TYPE.SINGLE:
                        doSingle(_batter, _pitcher, _hitToPosition, _game);
                        break;

                    case HIT_TYPE.DOUBLE:
                        doDouble(_batter, _pitcher, _hitToPosition, _game);
                        break;

                    case HIT_TYPE.TRIPLE:
                        doTriple(_batter, _pitcher, _hitToPosition, _game);
                        break;

                    default:
                        doSingle(_batter, _pitcher, _hitToPosition, _game);
                        break;
                }
            }
            else
            {
                if (!tryField(_hitToPosition, _game))
                {
                    doROEError(ERROR_TYPE.DEEP_FIELDING, _game, _batter, _hitToPosition);
                }
                else
                {
                    _game.GetLog().addEvent(_game.CurrentHalfInning, _game.HomeTeamAtBat, _batter.FirstName + " lines out to " + POSITION_TEXT[Convert.ToInt32(_hitToPosition)] + ".");
                    _game.IncreaseOuts();
                    if (_game.Outs != 0 && (_hitToPosition == DefensiveAttributes.POSITION.CENTER_FIELDER || _hitToPosition == DefensiveAttributes.POSITION.LEFT_FIELDER || _hitToPosition == DefensiveAttributes.POSITION.RIGHT_FIELDER))
                    {
                        tryAdvanceFromThirdBase(_hitToPosition, _game);
                        if (_game.Outs != 0)
                        {
                            tryAdvanceFromSecondBase(_hitToPosition, _game);
                        }
                    }
                }
            }

            //Temp
            counter.linedrives++;
        }
Example #10
0
        private void doHomerun(PositionPlayer _batter, Pitcher _pitcher, DefensiveAttributes.POSITION _hitToPosition, Game _game)
        {
            _game.GetLog().addEvent(_game.CurrentHalfInning, _game.HomeTeamAtBat, _batter.FirstName + " homers to " + POSITION_TEXT[Convert.ToInt32(_hitToPosition)] + "!");
            _game.advanceRunner(Game.BASE.THIRD, 3);
            _game.advanceRunner(Game.BASE.SECOND, 3);
            _game.advanceRunner(Game.BASE.FIRST, 3);
            _game.ScoreRun();
            //TODO: hit++ (batter)
            _game.GetAHit();
            //TODO: hit++ (pitcher)
            //TODO: HR++ (batter)
            //TODO: HR++ (game)
            //TODO: HR++ (pitcher)

            //Temp for analysis
            counter.homeRuns++;
        }
Example #11
0
        private void doGroundBall(PositionPlayer _batter, Pitcher _pitcher, DefensiveAttributes.POSITION _hitToPosition, Game _game)
        {
            if (isAHit(BABIP_ON_GROUND_BALLS, _game.GetDefenderRange(_hitToPosition)))
            {
                doSingle(_batter, _pitcher, _hitToPosition, _game);
            }
            else
            {
                if (!tryField(_hitToPosition, _game))
                {
                    doROEError(ERROR_TYPE.SHORT_FIELDING, _game, _batter, _hitToPosition);
                }
                else
                {
                    if (!tryThrow(_hitToPosition, _game))
                    {
                        doROEError(ERROR_TYPE.SHORT_THROWING, _game, _batter, _hitToPosition);
                    }
                    else
                    {
                        //must revise this part of the logic
                        if (_game.Outs < 2)
                        {
                            if (_game.RunnerOnFirst != null)
                            {
                                if (!(_game.RunnerOnFirst.Speed * 4 <= randomOneToThousand()))
                                {
                                    _game.GetLog().addEvent(_game.CurrentHalfInning, _game.HomeTeamAtBat, _batter.FirstName + " grounds to " + POSITION_TEXT[Convert.ToInt32(_hitToPosition)] + " for a double play!");
                                    _game.RunnerOnFirst = null;
                                    _game.IncreaseOuts();

                                    if (_game.Outs == 1)
                                    {
                                        _game.advanceRunner(Game.BASE.THIRD, 1);
                                        _game.advanceRunner(Game.BASE.SECOND, 1);
                                    }

                                    _game.RunnerOnSecond = null;
                                }
                                else
                                {
                                    _game.advanceRunner(Game.BASE.THIRD, 1);
                                    _game.advanceRunner(Game.BASE.SECOND, 1);

                                    _game.RunnerOnFirst = _batter;
                                    _game.GetLog().addEvent(_game.CurrentHalfInning, _game.HomeTeamAtBat, _batter.FirstName + " grounds to " + POSITION_TEXT[Convert.ToInt32(_hitToPosition)] + " for a fielder's choice!");
                                }
                            }
                            else
                            {
                                _game.GetLog().addEvent(_game.CurrentHalfInning, _game.HomeTeamAtBat, _batter.FirstName + " grounds out to " + POSITION_TEXT[Convert.ToInt32(_hitToPosition)] + ".");
                                _game.advanceRunner(Game.BASE.THIRD, 1);
                                _game.advanceRunner(Game.BASE.SECOND, 1);
                            }
                        }
                        else
                        {
                            _game.GetLog().addEvent(_game.CurrentHalfInning, _game.HomeTeamAtBat, _batter.FirstName + " grounds out to "  + POSITION_TEXT[Convert.ToInt32(_hitToPosition)] + ".");
                        }
                        _game.IncreaseOuts();
                    }
                }
            }

            //Temp
            counter.groundballs++;
        }
Example #12
0
 public int GetWalkRate(PositionPlayer.BAT_HAND _againtHand)
 {
     return pitcher.WalkRate(_againtHand);
 }
Example #13
0
 public InMatchPositionPlayer(PositionPlayer _positionPlayer)
     : base(_positionPlayer)
 {
     // TODO: this is not necessarily the case (example: starting the game at another position)
     positionPlayer = _positionPlayer;
 }
Example #14
0
        private void AddBatter(PositionPlayer _newBatter)
        {
            int i = 0;

            while (lineup[i] != null)
            {
                i++;
            }

            lineup[i] = _newBatter;
        }