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); } }
// 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); }