コード例 #1
0
        public async virtual Task <NascarEvent> SimulatePracticeAsync(NascarEvent raceEvent)
        {
            _lapTimeService = new LapTimeService(raceEvent.Track);

            NascarPracticeRun p1 = raceEvent.Runs.OfType <NascarPracticeRun>().FirstOrDefault(r => r.RunType == NascarRunType.Practice1);

            if (p1 != null)
            {
                p1.Vehicles = raceEvent.Vehicles;
                SimulatePracticeRun(p1);
                PopulateResults(p1);
            }

            NascarPracticeRun p2 = raceEvent.Runs.OfType <NascarPracticeRun>().FirstOrDefault(r => r.RunType == NascarRunType.Practice2);

            if (p2 != null)
            {
                p2.Vehicles.Clear();
                p2.Vehicles = raceEvent.Vehicles;
                SimulatePracticeRun(p2);
                PopulateResults(p2);
            }

            NascarPracticeRun p3 = raceEvent.Runs.OfType <NascarPracticeRun>().FirstOrDefault(r => r.RunType == NascarRunType.FinalPractice);

            if (p3 != null)
            {
                p3.Vehicles.Clear();;
                p3.Vehicles = raceEvent.Vehicles;
                SimulatePracticeRun(p3);
                PopulateResults(p3);
            }

            return(await Task.FromResult(raceEvent));
        }
コード例 #2
0
        private void PrintResults(NascarPracticeRun run)
        {
            Console.WriteLine($" Practice Round {run.Round} Results");

            foreach (PracticeResult result in run.Results.OrderBy(r => r.Position))
            {
                Console.WriteLine($"{result.Position} Car# {result.VehicleId} {result.LapTime} {result.LapSpeed}");
            }

            Console.WriteLine();
        }
コード例 #3
0
        protected virtual void SimulatePracticeRun(NascarPracticeRun run)
        {
            Console.WriteLine($"Simulating {run.RunType.ToString()} for series {run.SeriesId}");

            var timesOnTrack = 3;

            foreach (NascarVehicle vehicle in run.Vehicles)
            {
                int lapNumber = 0;

                for (int i = 0; i < timesOnTrack; i++)
                {
                    var laps = new NascarConsecutiveLaps()
                    {
                        VehicleId = vehicle.VehicleId,
                        Laps      = GetLaps(lapNumber + 1)
                    };

                    run.ConsecutiveLaps.Add(laps);

                    lapNumber = laps.Laps.Max(l => l.LapNumber);
                }
            }
        }