示例#1
0
        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;
            }
        }
示例#2
0
        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.");
            }
        }
示例#3
0
        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);
        }
示例#4
0
 public GyepElemTulNagyKivetel(IGyepElem gyepElem, ZoldTerulet zoldTerulet) : base(gyepElem)
 {
     this._zoldTerulet = zoldTerulet;
 }
示例#5
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);
        }