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); }
private Inning Copy() { var copy = new Inning { Carreras = Carreras, Outs = Outs }; bases.CopyTo(copy.bases, 0); return(copy); }
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); }
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)); } } }