Esempio n. 1
0
        /// <summary>
        /// Найти все свободные авто попадающие под определенные параметры. Только Таксишки!
        /// Работает методом исключения: сначала ищет все свободные авто
        /// соответствующие заданному классу комфорта;
        /// потом из полученного списка удаляет авто не совпадающие с заданными
        /// параметрами(по одному параметру за раз).
        /// </summary>
        /// <param name="smoke"></param>
        /// <param name="childPositions"></param>
        /// <param name="animals"></param>
        /// <param name="carClass"></param>
        /// <returns></returns>
        public List <Car> GetFreeTaxi(bool smoke, byte childPositions, bool animals, Taxi.CarClases carClass = Taxi.CarClases.Base)
        {
            LoggerMaster.LoggerM.Debug("In class: " + nameof(TaxiStation) + " : " + "Try call: " + MethodBase.GetCurrentMethod());

            //List<Car> freeCars = new List<Car>();

            //foreach (Car c in AllCars)
            //    if ((c is Taxi) && !(c as Taxi).IsRun && (c as Taxi).CarClass == carClass)
            //        freeCars.Add(c);

            //if (smoke)
            //    foreach (Car c in freeCars.ToArray())
            //        if (!c.Smoke)
            //            freeCars.Remove(c);
            //if (childPositions > 0)
            //    foreach (Car c in freeCars.ToArray())
            //        if (c.ChildPositions < childPositions)
            //            freeCars.Remove(c);
            //if (animals)
            //    foreach (Car c in freeCars.ToArray())
            //        if (!c.Animals)
            //            freeCars.Remove(c);

            //return freeCars;

            return(AllCars.Select(it => it as Taxi).Where(c => c != null &&
                                                          !c.IsRun &&
                                                          c.CarClass == carClass &&
                                                          c.Smoke == smoke &&
                                                          c.ChildPositions >= childPositions &&
                                                          c.Animals == animals).ToList <Car>());
        }
Esempio n. 2
0
        /// <summary>
        /// Функция для генерации автомобилек.
        /// </summary>
        /// <returns></returns>
        public static Taxi CarGenerator()
        {
            string RChar()
            {
                char[] chars = { 'a', 'b', 'c', 'e', 'h', 'k', 'm', 'n', 'o' };
                return(Convert.ToString(chars[_r.Next(0, chars.Length)]));
            }

            bool RBool()
            {
                if (_r.Next(0, 2) == 1)
                {
                    return(true);
                }
                return(false);
            }

            Taxi.CarClases Rtc()
            {
                int tmp = _r.Next(1, 4);

                if (tmp == 1)
                {
                    return(Taxi.CarClases.Base);
                }
                if (tmp == 2)
                {
                    return(Taxi.CarClases.Standard);
                }
                return(Taxi.CarClases.Premium);
            }

            string[] model    = { "lifan", "bmw", "lada", "chevrolet", "fiat", "honda", "kia" };
            ushort   startAge = Convert.ToUInt16(_r.Next(1950, 2018));
            string   number   = RChar() + _r.Next(100, 1000) + RChar() + RChar();

            string numberBody = Convert.ToString(_r.Next(100, 1000)) +
                                (RChar() + RChar() + RChar()) +
                                Convert.ToString(_r.Next(100, 1000)) +
                                (RChar() + RChar() + RChar()) +
                                Convert.ToString(_r.Next(100, 1000)) +
                                (RChar() + RChar() + RChar());

            string[] driverSurname = { "иванов", "смирнов", "кузнецов", "попов", "васильев", "петров", "соколов", "михайлов", "новиков", "федоров", "морозов" };
            string[] driverName    = { "василий", "георгий", "геннадий", "юрий", "виктор", "дмитрий", "алексей" };
            string[] driverName2   = { "иванович", "петрович", "васильевич", "георгиевич", "геннадьевич", "дмитриевич", "алексеевич" };

            uint mileage        = (uint)_r.Next(1, 800000);
            bool smoke          = RBool();
            byte childPositions = (byte)_r.Next(0, 6);

            Taxi.CarClases carCl   = Rtc();
            bool           animals = RBool();

            if (RBool())
            {
                return(new Taxi(model[_r.Next(0, model.Length)], startAge, number,
                                numberBody, driverSurname[_r.Next(0, driverSurname.Length)],
                                driverName[_r.Next(0, driverName.Length)],
                                driverName2[_r.Next(0, driverName2.Length)],
                                mileage, smoke, childPositions,
                                carCl, animals));
            }
            else
            {
                return(new Taxi(model[_r.Next(0, model.Length)],
                                startAge, number,
                                numberBody, mileage,
                                smoke, childPositions,
                                carCl, animals));
            }
        }