public Megrendelo(int feluletekSzama, int ID) { this._feluletekSzama = feluletekSzama; this._osszTerulet = 0; this._id = ID; Feluletek = new ZoldTerulet[8]; for (int i = 0; i < feluletekSzama; i++) { Feluletek[i] = RandomTerulet(ID); _osszTerulet += Feluletek[i].Terulet; } }
public int CompareTo(object obj) { if (obj == null) { return(1); } ZoldTerulet zt = obj as ZoldTerulet; if (zt != null) { return((this.Terulet).CompareTo(zt.Terulet)); } else { // TODO: catch, cw throw new ArgumentException("A megadott objektum nem ZoldTerulet tipusu."); } }
public static LancoltLista <IGyepElem> GyepRaktar(int gyepekSzama) { LancoltLista <IGyepElem> gyepRaktar = new LancoltLista <IGyepElem>(); IGyepElem gyepElem; int random; ZoldTerulet legkisebbTerulet = feluletek.GetUtolsoElem(); for (int i = 0; i < gyepekSzama; i++) { random = R.Next(0, 4); if (random == 0) { gyepElem = new KertiGyep(R.Next(1, 10), R.Next(1, 10)); } else if (random == 1) { gyepElem = new MediterranGyep(R.Next(1, 10), R.Next(1, 10)); } else if (random == 2) { gyepElem = new ParkGyep(R.Next(1, 10), R.Next(1, 10)); } else { gyepElem = new SportGyep(R.Next(1, 10), R.Next(1, 10)); } if (gyepElem.Terulet > legkisebbTerulet.Terulet) { // A rendszer váltson ki kivételt, ha olyan méretű gyeptégla kerül be, amely meghaladja a legkisebb zöldterület méretét. throw new GyepElemTulNagyKivetel(gyepElem, legkisebbTerulet); } gyepRaktar.BeszurCsokkenoSorrendben(gyepElem.Terulet, gyepElem); } return(gyepRaktar); }
public GyepElemTulNagyKivetel(IGyepElem gyepElem, ZoldTerulet zoldTerulet) : base(gyepElem) { this._zoldTerulet = zoldTerulet; }
// 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); }