示例#1
0
        public void ListaElemeketAtrak(LancoltLista <IGyepElem> Honnan, LancoltLista <IGyepElem> Hova)
        {
            IGyepElem aktGyepElem;

            while (!Honnan.UresLista())
            {
                aktGyepElem = Honnan.GetAktElem(1);
                Hova.BeszurCsokkenoSorrendben(aktGyepElem.Terulet, aktGyepElem);
                Honnan.Torles(aktGyepElem);
            }
        }
示例#2
0
        // egy telket fed le, mohó szeretne lenni
        public bool AktTeruletLefedo(ZoldTerulet Z, LancoltLista <IGyepElem> kivettGyepElemek)
        {
            int       t = 1;
            double    osszLefedettTerulet = 0;
            double    lefedettsegMerteke  = 0;
            int       futasokSzama        = 0;
            IGyepElem aktGyepElem;

            LancoltLista <IGyepElem> AktTeruletElemei = new LancoltLista <IGyepElem>();
            bool tulszamolt = false;

            while (osszLefedettTerulet < Z.Terulet && !Elemek.UresLista() && lefedettsegMerteke < Z.LefedettsegMin && !tulszamolt)
            {
                aktGyepElem = Elemek.GetAktElem(t);

                tulszamolt = (aktGyepElem == null);

                if (aktGyepElem != null && (osszLefedettTerulet + aktGyepElem.Terulet) < Z.Terulet)
                {
                    if (Z is MaganKert && (aktGyepElem is KertiGyep || aktGyepElem is SportGyep))
                    {
                        osszLefedettTerulet += aktGyepElem.Terulet;
                        AktTeruletElemei.BeszurCsokkenoSorrendben(aktGyepElem.Terulet, aktGyepElem);
                        Elemek.Torles(aktGyepElem);
                    }
                    else if (Z is KozPark && (aktGyepElem is ParkGyep || aktGyepElem is SportGyep))
                    {
                        osszLefedettTerulet += aktGyepElem.Terulet;
                        AktTeruletElemei.BeszurCsokkenoSorrendben(aktGyepElem.Terulet, aktGyepElem);
                        Elemek.Torles(aktGyepElem);
                    }
                    else if (Z is FutballStadion && aktGyepElem is SportGyep)
                    {
                        osszLefedettTerulet += aktGyepElem.Terulet;
                        AktTeruletElemei.BeszurCsokkenoSorrendben(aktGyepElem.Terulet, aktGyepElem);
                        Elemek.Torles(aktGyepElem);
                    }
                    else
                    {
                        t++;
                    }
                }
                else
                {
                    t++;
                }
                futasokSzama++;

                lefedettsegMerteke = 100 * osszLefedettTerulet / Z.Terulet;
            }

            if (lefedettsegMerteke >= Z.LefedettsegMin)
            {
                // ha sikerült lefedni a területet - megrendelő nem kerül kiszolgálásra, ha nem sikerül minden területét lefedni
                ListaElemeketAtrak(AktTeruletElemei, kivettGyepElemek);
                return(true);
            }
            // ha nem sikerült lefedni a területet
            ListaElemeketAtrak(AktTeruletElemei, Elemek);
            return(false);
        }