public void Perform(int matchCount)
        {
            var results = new List<MatchResult>();
            Team team1 = teamConverter.CreateTeam("Wisla Krakow");
            Team team2 = teamConverter.CreateTeam("Polonia Warszawa");

            for (int i = 0; i < matchCount; i++)
            {
                var match = new Match(team1, team2, isNeutralGround: false, isExtraTimeRequired: false);
                var simulator = new Simulator(MatchRandomizer.Current);
                var result = simulator.Play(match);
                results.Add(result);

                Console.WriteLine("{0}:{1}\t{2}", result.Score1, result.Score2, string.Join(", ", match.Events.OfType<GoalEvent>()));
            }

            PrintStatistics(results, team1);
        }
        public void Perform()
        {
            Team team1 = teamConverter.CreateTeam("Real Madrid");
            Team team2 = teamConverter.CreateTeam("FC Barcelona");

            var match = new Match(team1, team2, isNeutralGround: false, isExtraTimeRequired: true);
            var simulator = new Simulator(MatchRandomizer.Current);
            simulator.Play(match);

            var printingVisitor = new MatchEventPrintingVisitor();

            foreach (var group in match.Events.GroupBy(e => Tuple.Create(e.Minute, e.Extended)).OrderBy(g => g.Key))
            {
                if (group.Key.Item2 == 0)
                {
                    Console.Write("{0,5}: ", group.Key.Item1);
                }
                else
                {
                    Console.Write("{0,3}+{1}: ", group.Key.Item1, group.Key.Item2);
                }

                var events = group.ToArray();

                for (int i = 0; i < events.Length; i++)
                {
                    events[i].Visit(printingVisitor);

                    if (i < events.Length - 1)
                    {
                        Console.Write(", ");
                    }
                }

                Console.WriteLine();
            }

            Console.WriteLine();
            Console.WriteLine(match);
            Console.WriteLine();

            PrintPlayerStats(match.Team1);
            PrintPlayerStats(match.Team2);
        }