public LeagueEngine(IBioData bioData, IStatData statData, Services services)
        {
            _bioData = bioData;
            _statData = statData;
            _services = services;

            _timer = new Timer(TimeSpan.FromSeconds(1).TotalMilliseconds);
            _timer.Elapsed += Run;
            _timer.AutoReset = true;

            _gameActions = new Dictionary<LeagueAction, Action<object>>
            {
                {LeagueAction.BioUpdate, o => UpdatePlayerBios(o?.ConvertTo<BioUpdateOptions>())},
                {LeagueAction.StatUpdate, o => UpdatePlayerStats(o?.ConvertTo<StatUpdateOptions>())},
                {LeagueAction.TeamUpdate, o => UpdateTeams(o?.ConvertTo<TeamUpdateOptions>())}
            };
        }
        static void Main(string[] args)
        {
            Console.WriteLine("Cwiczenie 1\n");

            c_Pojazd     pojazd1     = new c_Pojazd("van", "IVECO", 1.6, 3, "123456", "rejestr1", 2015, "biały", "12124");
            c_Wlasciciel wlasciciel1 = new c_Wlasciciel("Janusz", "Nosacz", "Kwiatowa 6", "527152671", "2164d", "12,12,12", 2016, 3);

            c_Pojazd     pojazd2     = new c_Pojazd("SUV", "TOYOTA", 3.6, 5, "7854397", "rej2", 2014, "Czarny", "73hofwe");
            c_Wlasciciel wlasciciel2 = new c_Wlasciciel("Beata", "Plizga", "Nowa 3", "89273508247", "wid9", "15.15.15", 2018, 17);

            c_Pojazd     pojazd3     = new c_Pojazd("GIT", "Citroen", 1.6, 5, "2452r23r", "rej3", 2005, "srebrny", "397ery390");
            c_Wlasciciel wlasciciel3 = new c_Wlasciciel("Gabriel", "Kowal", "Stara 7", "93278yr9", "f387y", "15.16.17", 2015, 0);

            Auto[] samochody = new Auto[3];

            samochody[0] = new Auto(pojazd1, wlasciciel1);
            samochody[1] = new Auto(pojazd2, wlasciciel2);
            samochody[2] = new Auto(pojazd3, wlasciciel3);


            IPoliceData[] police = new IPoliceData[3];

            police[0] = samochody[0];
            police[1] = samochody[1];
            police[2] = samochody[2];

            ICepikData[] cepik = new ICepikData[3];

            cepik[0] = samochody[0];
            cepik[1] = samochody[1];
            cepik[2] = samochody[2];

            IStatData[] stat = new IStatData[3];

            stat[1] = samochody[1];
            stat[2] = samochody[2];
            stat[0] = samochody[0];


            for (int i = 0; i < 3; i++)
            {
                Console.WriteLine(police[i].get_user_punkty_karne());
                Console.WriteLine(cepik[i].get_user_imie());
                Console.WriteLine(stat[i].get_car_marka() + "\n");
            }
        }
        static void Main(string[] args)
        {
            bool powtorka = true;

            while (powtorka)
            {
                Console.WriteLine("Podaj numer cwiczenia");
                string cwiczenie = Console.ReadLine();
                if (cwiczenie == "1")
                {
                    List <Auto> cars = new List <Auto>();
                    cars.Add(new Auto("Sedan", "Ford", 120, 5, "JH4NA1150MT000683", "KR1023K", 2012, "Biały", "134513566", "Jan Kowalski", "ul. Klonowa 12 30-001 Kraków", "76032103645", "VOM677636", "21.01.2000", 2013, 21));
                    cars.Add(new Auto("Kombi", "Seat", 180, 3, "SCFAC23302B500083", "KR1021S", 2016, "Czerwony", "1344353566", "Jan Kowalski", "ul. Klonowa 12 30-001 Kraków", "76032103645", "VOM677636", "21.01.2000", 2017, 21));
                    cars.Add(new Auto("Kabriolet", "Seat", 100, 3, "1J4FT68SXXL633294", "KR1032A", 2010, "Niebieski", "13443535436", "Paweł Nowak", "ul. Akacjowa 52 30-003 Kraków", "76032103124", "VOM621636", "20.07.2010", 2012, 9));

                    ICepikData  car1 = cars.Find(x => x.Nr_rejestracyjny == "KR1023K");
                    IStatData   car2 = cars.Find(x => x.Nr_rejestracyjny == "KR1021S");
                    IPoliceData car3 = cars.Find(x => x.Nr_rejestracyjny == "KR1032A");

                    Console.WriteLine("Wywołanie obiektu typu ICepikData");
                    car1.getData();

                    Console.WriteLine(" \n Wywołanie obiektu typu IStatData");
                    car2.getData();

                    Console.WriteLine(" \n Wywołanie obiektu typu IPoliceData");
                    car3.getData();
                }
                if (cwiczenie == "2")
                {
                    Console.WriteLine("Przeciążanie operatorów: ");
                    Point p1 = new Point(4, 5);
                    Point p2 = new Point(3, 0);
                    Console.WriteLine("Utworzono dwa obiekty Point, p1(4,5) i p2 (3,0)");
                    Point p3 = p1 + p2;
                    Console.WriteLine("Punkt p3 przy wykorzystaniu operatora +: " + p3.x + ", " + p3.y);
                    if (p1)
                    {
                        Console.WriteLine("Zastosowanie operatora true/false na p1 dało true");
                    }
                    else
                    {
                        Console.WriteLine("Zastosowanie operatora true/false na p1 dało false");
                    }

                    if (p2)
                    {
                        Console.WriteLine("Zastosowanie operatora true/false na p2 dało true");
                    }
                    else
                    {
                        Console.WriteLine("Zastosowanie operatora true/false na p2 dało false");
                    }

                    Console.WriteLine("Wynik działania p1<p2: " + (p1 < p2));
                    Console.WriteLine("Nie ma możliwości przeciążenia tylko operatora '<'");

                    p1++;
                    Console.WriteLine("Zastosowano operator ++ na p1, wynik: " + p1.x + ", " + p1.y);

                    p2--;
                    Console.WriteLine("Zastosowano operator ++ na p2, wynik: " + p2.x + ", " + p2.y);

                    Point p = 5;
                    p1++;
                    Console.WriteLine("Wykonana operacje Point p=5, współrzędne powstałego punktu: " + p.x + ", " + p.y);

                    p = new Point(2, 5);
                    int suma = (int)p;
                    Console.WriteLine("Wykonana operacje Point p=new Point(2,5); int suma = (int)suma, wynik operacji: " + suma);
                    Console.WriteLine("Nie ma możliwości nadpisania operatora +=, gdyż nie ma możlwiości przeciążania operatorów przypisań.");
                }

                if (cwiczenie == "3")
                {
                    Dzialania dzialania = new Dzialania();
                    Dzialanie dzialanie = new Dzialanie(dzialania.Dodaj);
                    dzialanie += dzialania.Odejmij;
                    dzialanie += dzialania.Pomnoz;
                    dzialanie += dzialania.Podziel;
                    dzialanie(10, 5);
                }

                Console.WriteLine("Powtórzyć program? [T/N]");
                string pytanie = Console.ReadLine();
                if (pytanie == "N" || pytanie == "n")
                {
                    powtorka = false;
                }
            }
        }