Пример #1
0
        private Inning PlayInning(TeamData data)
        {
            var    scenarios = GetBatScenarios();
            Random random    = new Random(DateTime.Now.Millisecond);
            Inning inning    = new Inning();

            while (inning.IsActive && inning.Carreras < 9)
            {
                double r = random.NextDouble();
                string accion;
                if (inning.HaveRunners)
                {
                    accion = data.RangoA.FirstOrDefault(d => d.EnRango(r)).Accion;
                }
                else
                {
                    accion = data.RangoB.FirstOrDefault(d => d.EnRango(r)).Accion;
                }
                var scenario = scenarios[accion];
                inning = inning.AddPlate();
                inning = inning.Out(scenario.Outs);
                inning = inning.Move(scenario.Moves);
                simulaciones.Add(new BatsResult(scenario.Name, data.Nombre));
            }
            while (inning.IsActive)
            {
                inning = inning.Out(1);
            }
            return(inning);
        }
Пример #2
0
        private Inning Copy()
        {
            var copy = new Inning
            {
                Carreras = Carreras,
                Outs     = Outs
            };

            bases.CopyTo(copy.bases, 0);
            return(copy);
        }
Пример #3
0
        public static Inning OneRun(bool isWinner)
        {
            var ini = new Inning();

            if (isWinner)
            {
                ini = ini.Move(4);
            }
            for (int i = 0; i < 3; i++)
            {
                ini = ini.Out();
            }
            return(ini);
        }
Пример #4
0
        public Game(TeamData a, TeamData b)
        {
            EquipoA      = a;
            EquipoB      = b;
            ResultadosA  = new List <Inning>(9);
            ResultadosB  = new List <Inning>(9);
            simulaciones = new List <BatsResult>();
            while (ResultadosA.Count < 9 && ResultadosB.Count < 9)
            {
                ResultadosA.Add(PlayInning(EquipoA));
                ResultadosB.Add(PlayInning(EquipoB));
            }
            int ei = 11;

            while (CarrerasA == CarrerasB && ei > 0)
            {
                ResultadosA.Add(PlayInning(EquipoA));
                ResultadosB.Add(PlayInning(EquipoB));
                ei--;
            }
            if (CarrerasA == CarrerasB)
            {
                Random random = new Random(DateTime.Now.Millisecond);
                double d      = random.NextDouble();
                if (d < 0.5)
                {
                    ResultadosA.Add(Inning.OneRun(true));
                    ResultadosB.Add(Inning.OneRun(false));
                }
                else
                {
                    ResultadosA.Add(Inning.OneRun(false));
                    ResultadosB.Add(Inning.OneRun(true));
                }
            }
        }