예제 #1
0
        private static FuelCar initNewFuelCar(string i_LicensePlateSrting, string i_VehicleModel, float i_EnergyLeft, string i_WheelManufacturer, float i_WheelCurrentAirPressure, string[] i_Parameters)
        {
            const bool v_IgnoreCase = true;
            const FuelEngine.eFuelType k_SupportedCarFuelType = FuelEngine.eFuelType.Octan96;
            const float k_MaxCarFuelTank = 35;

            if (i_EnergyLeft > k_MaxCarFuelTank)
            {
                throw new ValueOutOfRangeException(k_MaxCarFuelTank);
            }

            FuelEngine engine = new FuelEngine(k_MaxCarFuelTank, i_EnergyLeft, null, k_SupportedCarFuelType);

            if (i_WheelCurrentAirPressure > k_MaxAirPressureInCarWheels)
            {
                throw new ValueOutOfRangeException(k_MaxAirPressureInCarWheels);
            }

            List <Wheel> wheels = new List <Wheel>(k_NumberOfWheelsInCar);

            for (int i = 0; i < k_NumberOfWheelsInCar; i++)
            {
                wheels.Add(new Wheel(i_WheelManufacturer, i_WheelCurrentAirPressure, k_MaxAirPressureInCarWheels));
            }

            Car.eCarColor   color      = (Car.eCarColor)Enum.Parse(typeof(Car.eCarColor), i_Parameters[0], v_IgnoreCase);
            Car.eNumOfDoors numOfDoors = (Car.eNumOfDoors)Enum.Parse(typeof(Car.eNumOfDoors), i_Parameters[1], v_IgnoreCase);

            return(new FuelCar(i_LicensePlateSrting, i_VehicleModel, wheels, engine, color, numOfDoors));
        }
        public static Car.eNumOfDoors ParseNumOfDoorsInput(string i_Input)
        {
            Car.eNumOfDoors userOption = 0;
            try
            {
                switch ((Car.eNumOfDoors)Enum.Parse(typeof(Car.eNumOfDoors), i_Input))
                {
                case Car.eNumOfDoors.Two:
                    userOption = Car.eNumOfDoors.Two;
                    break;

                case Car.eNumOfDoors.Three:
                    userOption = Car.eNumOfDoors.Three;
                    break;

                case Car.eNumOfDoors.Four:
                    userOption = Car.eNumOfDoors.Four;
                    break;

                case Car.eNumOfDoors.Five:
                    userOption = Car.eNumOfDoors.Five;
                    break;

                default:
                    throw new FormatException("Invalid input, must be 'Two', 'Three', 'Four' or 'Five'");
                }
            }
            catch
            {
                throw new FormatException("Invalid input, must be 'Two', 'Three', 'Four' or 'Five'");
            }

            return(userOption);
        }
예제 #3
0
        private static ElectricCar initNewElectricCar(string i_LicensePlateSrting, string i_VehicleModel, float i_EnergyLeft, string i_WheelManufacturer, float i_WheelCurrentAirPressure, string[] i_Parameters)
        {
            const bool  v_IgnoreCase           = true;
            const float k_MaxCarHoursInBattery = 2.2f;

            if (i_EnergyLeft > k_MaxCarHoursInBattery)
            {
                throw new ValueOutOfRangeException(k_MaxCarHoursInBattery);
            }

            ElectricEngine engine = new ElectricEngine(k_MaxCarHoursInBattery, i_EnergyLeft, null);

            if (i_WheelCurrentAirPressure > k_MaxAirPressureInCarWheels)
            {
                throw new ValueOutOfRangeException(k_MaxAirPressureInCarWheels);
            }

            List <Wheel> wheels = new List <Wheel>(k_NumberOfWheelsInCar);

            for (int i = 0; i < k_NumberOfWheelsInCar; i++)
            {
                wheels.Add(new Wheel(i_WheelManufacturer, i_WheelCurrentAirPressure, k_MaxAirPressureInCarWheels));
            }

            Car.eCarColor   color      = (Car.eCarColor)Enum.Parse(typeof(Car.eCarColor), i_Parameters[0], v_IgnoreCase);
            Car.eNumOfDoors numOfDoors = (Car.eNumOfDoors)Enum.Parse(typeof(Car.eNumOfDoors), i_Parameters[1], v_IgnoreCase);

            return(new ElectricCar(i_LicensePlateSrting, i_VehicleModel, wheels, engine, color, numOfDoors));
        }
        private void InitializeCar()
        {
            Car.eColor      Color      = UserCommunicator.ToCarColor(UserCommunicator.getStringThatEqualsOneOf("What color is your car", new string[] { "Grey", "Blue", "White", "Black" }, false));
            Car.eNumOfDoors NumOfDoors = UserCommunicator.ToNumOfDoors(UserCommunicator.getIntInRange("How many doors your car have?", 2, 5));

            m_DataBase.m_Color      = Color;
            m_DataBase.m_NumOfDoors = NumOfDoors;
        }
        private Vehicle addElectricCar(string i_LicenseNumber, string i_Model, string i_ManufacturerName, float i_MaxAirPressure)
        {
            string electricCarData =
                @"Please enter the following additional information: 
1. Car color (Grey,Blue,White,Black)
2. numberOfDoors(Two,Three,Four,Five)";

            Console.WriteLine(electricCarData);
            Car.eColor      color         = (Car.eColor)Enum.Parse(typeof(Car.eColor), Console.ReadLine());
            Car.eNumOfDoors numberOfDoors = (Car.eNumOfDoors)Enum.Parse(typeof(Car.eNumOfDoors), Console.ReadLine());
            return(MakeVehicle.MakeElectricCar(i_Model, i_LicenseNumber, i_ManufacturerName, i_MaxAirPressure, color, numberOfDoors));
        }
예제 #6
0
        private static void inputCarDetails(out Car.eColorOfCar o_ColorOfCar, out Car.eNumOfDoors o_NumOfDoors)
        {
            int userChoice = 0;

            o_ColorOfCar = 0;
            o_NumOfDoors = 0;

            Console.WriteLine(@"Please enter the color of the car:
1. Red,
2. Blue,
3. Black,
4. Gray");
            userChoice = inputBetweenRange(1, 4);
            switch (userChoice)
            {
            case 1:
                o_ColorOfCar = Car.eColorOfCar.Red;
                break;

            case 2:
                o_ColorOfCar = Car.eColorOfCar.Blue;
                break;

            case 3:
                o_ColorOfCar = Car.eColorOfCar.Black;
                break;

            case 4:
                o_ColorOfCar = Car.eColorOfCar.Gray;
                break;
            }

            Console.Write(@"Please enter num of doors from 2 to 5");
            userChoice = inputBetweenRange(2, 5);
            switch (userChoice)
            {
            case 2:
                o_NumOfDoors = Car.eNumOfDoors.Two;
                break;

            case 3:
                o_NumOfDoors = Car.eNumOfDoors.Three;
                break;

            case 4:
                o_NumOfDoors = Car.eNumOfDoors.Four;
                break;

            case 5:
                o_NumOfDoors = Car.eNumOfDoors.Five;
                break;
            }
        }
예제 #7
0
        public static void GetVehicleNumberOfDoorsFromUser(out Car.eNumOfDoors o_NumOfDoors)
        {
            int           userChoice = 0;
            bool          validInput = false;
            StringBuilder userPrompt = new StringBuilder();

            userPrompt.Append(" ---------------------------------------------" + Environment.NewLine);
            userPrompt.Append(" Please choose your vehicle's number of doors:" + Environment.NewLine);
            userPrompt.Append("  2" + Environment.NewLine);
            userPrompt.Append("  3" + Environment.NewLine);
            userPrompt.Append("  4" + Environment.NewLine);
            userPrompt.Append("  5" + Environment.NewLine);
            userPrompt.Append(" ---------------------------------------------" + Environment.NewLine);

            Console.Write(userPrompt + Environment.NewLine);

            while (validInput == false)
            {
                try
                {
                    validInput = GetValidIntFromUserInRange(out userChoice, 2, 5);
                }
                catch (FormatException)
                {
                    Console.WriteLine("Error: Please enter a number.");
                }
                catch (ValueOutOfRangeException ex)
                {
                    Console.WriteLine("Error: The number of doors should be between " + ex.MinValue + " to " + ex.MaxValue);
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Unknown error occured: " + Environment.NewLine + ex.Message + Environment.NewLine);
                }
            }

            o_NumOfDoors = (Car.eNumOfDoors)userChoice;
        }
예제 #8
0
        /*** Class Logic ***/

        public void SetCarDoorsAndColor(Car.eColor i_Color, Car.eNumOfDoors i_NumOfDoors)
        {
            m_Color         = i_Color;
            m_NumberOfDoors = i_NumOfDoors;
        }
예제 #9
0
 public static Vehicle MakeElectricCar(string i_Model, string i_LicenseNumber, string i_WheelManufacturerName, float i_WheelMaxAirPressure, Car.eColor i_Color, Car.eNumOfDoors i_NumberOfDoors)
 {
     return(new Car(i_Model, i_LicenseNumber, i_WheelManufacturerName, i_WheelMaxAirPressure, i_Color, i_NumberOfDoors, new Battery(k_ElectricCarMaxBattery)));
 }
예제 #10
0
 public static Vehicle MakeRegularCar(string i_Model, string i_LicenseNumber, string i_WheelManufacturerName, float i_WheelMaxAirPressure, Car.eColor i_Color, Car.eNumOfDoors i_NumberOfDoors)
 {
     return(new Car(i_Model, i_LicenseNumber, i_WheelManufacturerName, i_WheelMaxAirPressure, i_Color, i_NumberOfDoors, new GasTank(GasTank.eTypeOfFuel.Octan98, k_RegularCarVolumeGasTank)));
 }