Ejemplo n.º 1
0
        public virtual void ConsoleMenu()
        {
            DeviceCreator dc = new DeviceCreator();
            IDictionary<string, IDevice> AllDevices = new Dictionary<string, IDevice>();
            AllDevices.Add("Fridge", Fridge);
            AllDevices.Add("Freezer", Freezer);
            AllDevices.Add("Heater", Heater);
            AllDevices.Add("AirConditioning", AirConditioning);
            AllDevices.Add("TV", TV);
            AllDevices.Add("MediaPlayer", MediaPlayer);
            while (true)
            {

                Console.Clear();
                foreach (var name in AllDevices)
                {
                    Console.WriteLine("Устройство: " + name.Key + ". " + name.Value);
                }
                Console.WriteLine();
                Console.Write("Введите команду: ");
                string[] commands = Console.ReadLine().Split(' ');
                if (commands[0].ToLower() == "exit" & commands.Length == 1)
                {
                    return;
                }
                if (commands[0].ToLower() == "mods" & commands.Length == 1)
                {
                    HelpByMode();
                }
                if (commands[0].ToLower() == "help" & commands.Length == 1)
                {
                    Help();
                }
                if (commands.Length != 2)
                {
                    Console.WriteLine();
                    Console.WriteLine("Неверный формат команды");
                    Console.WriteLine("Доступные команды: help");
                    Console.WriteLine("Доступные режимы: mods");
                    Console.WriteLine("Доступные названия устройств: Fridge<>, Freezer<>, Heater<>, AirConditioning<>, TV<>, MediaPlayer<>");
                    Console.WriteLine("Нажмите любую клавишу для продолжения");
                    Console.ReadKey();
                    continue;
                }
                if (commands[0].ToLower() == "add" && !AllDevices.ContainsKey(commands[1]))
                {
                    string regex = @"Fridge|Freezer|Heater|AirConditioning|TV|MediaPlayer\w*";
                    if (Regex.IsMatch(commands[1], regex))
                    {
                        if (commands[1].Contains("Fridge"))
                        {
                            AllDevices.Add(commands[1], dc.CreateFridge());
                        }
                        if (commands[1].Contains("Freezer"))
                        {
                            AllDevices.Add(commands[1], dc.CreateFreezer());
                        }
                        if (commands[1].Contains("Heater"))
                        {
                            AllDevices.Add(commands[1], dc.CreateHeater());
                        }
                        if (commands[1].Contains("AirConditioning"))
                        {
                            AllDevices.Add(commands[1], dc.CreateAirConditioning());
                        }
                        if (commands[1].Contains("TV"))
                        {
                            AllDevices.Add(commands[1], dc.CreateTV());
                        }
                        if (commands[1].Contains("MediaPlayer"))
                        {
                            AllDevices.Add(commands[1], dc.CreateMediaPlayer());
                        }
                    }
                    else
                    {
                        Console.WriteLine("Невозможно добавить устройство с таким именем");
                        Console.WriteLine("Нажмите любую клавишу для продолжения");
                        Console.ReadKey();
                    }
                    continue;
                }
                if (commands[0].ToLower() == "add" && AllDevices.ContainsKey(commands[1]))
                {
                    Console.WriteLine("Устройство с таким именем уже существует");
                    Console.WriteLine("Нажмите любую клавишу для продолжения");
                    Console.ReadKey();
                    continue;
                }
                if (AllDevices.ContainsKey(commands[1]))
                {
                    switch (commands[0].ToLower())
                    {
                        case "on":
                            AllDevices[commands[1]].On();
                            break;
                        case "off":
                            AllDevices[commands[1]].Off();
                            break;
                        case "del":
                            AllDevices.Remove(commands[1]);
                            break;
                        case "incr_t":
                            if (AllDevices[commands[1]].Power == true)
                            {
                                if (Fridge.GetType() == AllDevices[commands[1]].GetType())
                                {
                                    IFridge device = (IFridge)AllDevices[commands[1]];
                                    device.IncreaseTemperature();
                                }
                                else if (Heater.GetType() == AllDevices[commands[1]].GetType())
                                {
                                    IHeater device = (IHeater)AllDevices[commands[1]];
                                    device.IncreaseTemperature();
                                }
                                else if (AirConditioning.GetType() == AllDevices[commands[1]].GetType())
                                {
                                    IAirConditioning device = (IAirConditioning)AllDevices[commands[1]];
                                    device.IncreaseTemperature();
                                }
                            }
                            else
                            {
                                Console.WriteLine("Сначала включите устройство");
                                Console.WriteLine("Нажмите любую клавишу для продолжения");
                                Console.ReadKey();
                            }
                            break;
                        case "decr_t":
                            if (AllDevices[commands[1]].Power == true)
                            {
                                if (Fridge.GetType() == AllDevices[commands[1]].GetType())
                                {
                                    IFridge device = (IFridge)AllDevices[commands[1]];
                                    device.DecreaseTemperature();
                                }
                                else if (Heater.GetType() == AllDevices[commands[1]].GetType())
                                {
                                    IHeater device = (IHeater)AllDevices[commands[1]];
                                    device.DecreaseTemperature();
                                }
                                else if (AirConditioning.GetType() == AllDevices[commands[1]].GetType())
                                {
                                    IAirConditioning device = (IAirConditioning)AllDevices[commands[1]];
                                    device.DecreaseTemperature();
                                }
                            }
                            else
                            {
                                Console.WriteLine("Сначала включите устройство");
                                Console.WriteLine("Нажмите любую клавишу для продолжения");
                                Console.ReadKey();
                            }
                            break;
                        case "incr_s":
                            if (AllDevices[commands[1]].Power == true)
                            {
                                if (TV.GetType() == AllDevices[commands[1]].GetType())
                                {
                                    ITV device = (ITV)AllDevices[commands[1]];
                                    device.IncreaseSound();
                                }
                                else if (MediaPlayer.GetType() == AllDevices[commands[1]].GetType())
                                {
                                    IMediaPlayer device = (IMediaPlayer)AllDevices[commands[1]];
                                    device.IncreaseSound();
                                }
                            }
                            else
                            {
                                Console.WriteLine("Сначала включите устройство");
                                Console.WriteLine("Нажмите любую клавишу для продолжения");
                                Console.ReadKey();
                            }
                            break;
                        case "decr_s":
                            if (AllDevices[commands[1]].Power == true)
                            {
                                if (TV.GetType() == AllDevices[commands[1]].GetType())
                                {
                                    ITV device = (ITV)AllDevices[commands[1]];
                                    device.DecreaseSound();
                                }
                                else if (MediaPlayer.GetType() == AllDevices[commands[1]].GetType())
                                {
                                    IMediaPlayer device = (IMediaPlayer)AllDevices[commands[1]];
                                    device.DecreaseSound();
                                }
                            }
                            else
                            {
                                Console.WriteLine("Сначала включите устройство");
                                Console.WriteLine("Нажмите любую клавишу для продолжения");
                                Console.ReadKey();
                            }
                            break;
                        case "s_off":
                            if (AllDevices[commands[1]].Power == true)
                            {
                                if (TV.GetType() == AllDevices[commands[1]].GetType())
                                {
                                    ITV device = (ITV)AllDevices[commands[1]];
                                    device.SoundOff();
                                }
                                else if (MediaPlayer.GetType() == AllDevices[commands[1]].GetType())
                                {
                                    IMediaPlayer device = (IMediaPlayer)AllDevices[commands[1]];
                                    device.SoundOff();
                                }
                            }
                            else
                            {
                                Console.WriteLine("Сначала включите устройство");
                                Console.WriteLine("Нажмите любую клавишу для продолжения");
                                Console.ReadKey();
                            }
                            break;
                        case "s_on":
                            if (AllDevices[commands[1]].Power == true)
                            {
                                if (TV.GetType() == AllDevices[commands[1]].GetType())
                                {
                                    ITV device = (ITV)AllDevices[commands[1]];
                                    device.SoundOn();
                                }
                                else if (MediaPlayer.GetType() == AllDevices[commands[1]].GetType())
                                {
                                    IMediaPlayer device = (IMediaPlayer)AllDevices[commands[1]];
                                    device.SoundOn();
                                }
                            }
                            else
                            {
                                Console.WriteLine("Сначала включите устройство");
                                Console.WriteLine("Нажмите любую клавишу для продолжения");
                                Console.ReadKey();
                            }
                            break;
                        case "next_c":
                            if (AllDevices[commands[1]].Power == true)
                            {
                                if (TV.GetType() == AllDevices[commands[1]].GetType())
                                {
                                    ITV device = (ITV)AllDevices[commands[1]];
                                    device.NextChannel();
                                }
                            }
                            else
                            {
                                Console.WriteLine("Сначала включите устройство");
                                Console.WriteLine("Нажмите любую клавишу для продолжения");
                                Console.ReadKey();
                            }
                            break;
                        case "prev_c":
                            if (AllDevices[commands[1]].Power == true)
                            {
                                if (TV.GetType() == AllDevices[commands[1]].GetType())
                                {
                                    ITV device = (ITV)AllDevices[commands[1]];
                                    device.PreviousChannel();
                                }
                            }
                            else
                            {
                                Console.WriteLine("Сначала включите устройство");
                                Console.WriteLine("Нажмите любую клавишу для продолжения");
                                Console.ReadKey();
                            }
                            break;
                        case "sel_c":
                            if (AllDevices[commands[1]].Power == true)
                            {
                                if (TV.GetType() == AllDevices[commands[1]].GetType())
                                {
                                    ITV tv = (ITV)AllDevices[commands[1]];
                                    Console.WriteLine("Введите номер канала: ");
                                    int temp;
                                    Int32.TryParse(Console.ReadLine(), out temp);
                                    if (temp <= tv.Channel.MaxChannelNumber && temp >= tv.Channel.MaxChannelNumber)
                                    {
                                        tv.SelectChannel(temp);
                                    }
                                }
                            }
                            else
                            {
                                Console.WriteLine("Сначала включите устройство");
                                Console.WriteLine("Нажмите любую клавишу для продолжения");
                                Console.ReadKey();
                            }
                            break;
                        case "next_t":
                            if (AllDevices[commands[1]].Power == true)
                            {
                                if (MediaPlayer.GetType() == AllDevices[commands[1]].GetType())
                                {
                                    IMediaPlayer mp = (IMediaPlayer)AllDevices[commands[1]];
                                    mp.NextTrack();
                                }
                            }
                            else
                            {
                                Console.WriteLine("Сначала включите устройство");
                                Console.WriteLine("Нажмите любую клавишу для продолжения");
                                Console.ReadKey();
                            }
                            break;
                        case "prev_t":
                            if (AllDevices[commands[1]].Power == true)
                            {
                                if (MediaPlayer.GetType() == AllDevices[commands[1]].GetType())
                                {
                                    IMediaPlayer device = (IMediaPlayer)AllDevices[commands[1]];
                                    device.PreviousTrack();
                                }
                            }
                            else
                            {
                                Console.WriteLine("Сначала включите устройство");
                                Console.WriteLine("Нажмите любую клавишу для продолжения");
                                Console.ReadKey();
                            }
                            break;
                        case "sel_t":
                            if (AllDevices[commands[1]].Power == true)
                            {
                                if (MediaPlayer.GetType() == AllDevices[commands[1]].GetType())
                                {
                                    IMediaPlayer device = (IMediaPlayer)AllDevices[commands[1]];
                                    Console.WriteLine("Введите название аудиотрека: ");
                                    string s = Console.ReadLine();
                                    if (device.SelectTrack(s)) { }
                                    else
                                    {
                                        Console.WriteLine("Нет диска или трек не найден");
                                        Console.WriteLine("Нажмите любую клавишу для продолжения");
                                        Console.ReadKey();
                                    }
                                }
                            }
                            else
                            {
                                Console.WriteLine("Сначала включите устройство");
                                Console.WriteLine("Нажмите любую клавишу для продолжения");
                                Console.ReadKey();
                            }
                            break;
                        case "play":
                            if (AllDevices[commands[1]].Power == true)
                            {
                                if (MediaPlayer.GetType() == AllDevices[commands[1]].GetType())
                                {
                                    IMediaPlayer device = (IMediaPlayer)AllDevices[commands[1]];
                                    device.Play();
                                }
                            }
                            else
                            {
                                Console.WriteLine("Сначала включите устройство");
                                Console.WriteLine("Нажмите любую клавишу для продолжения");
                                Console.ReadKey();
                            }
                            break;
                        case "pause":
                            if (AllDevices[commands[1]].Power == true)
                            {
                                if (MediaPlayer.GetType() == AllDevices[commands[1]].GetType())
                                {
                                    IMediaPlayer device = (IMediaPlayer)AllDevices[commands[1]];
                                    device.Pause();
                                }
                            }
                            else
                            {
                                Console.WriteLine("Сначала включите устройство");
                                Console.WriteLine("Нажмите любую клавишу для продолжения");
                                Console.ReadKey();
                            }
                            break;
                        case "stop":
                            if (AllDevices[commands[1]].Power == true)
                            {
                                if (MediaPlayer.GetType() == AllDevices[commands[1]].GetType())
                                {
                                    IMediaPlayer device = (IMediaPlayer)AllDevices[commands[1]];
                                    device.Stop();
                                }
                            }
                            else
                            {
                                Console.WriteLine("Сначала включите устройство");
                                Console.WriteLine("Нажмите любую клавишу для продолжения");
                                Console.ReadKey();
                            }
                            break;
                        case "extr_disc":
                            if (AllDevices[commands[1]].Power == true)
                            {
                                if (MediaPlayer.GetType() == AllDevices[commands[1]].GetType())
                                {
                                    IMediaPlayer device = (IMediaPlayer)AllDevices[commands[1]];
                                    device.ExtractDisc();
                                }
                            }
                            else
                            {
                                Console.WriteLine("Сначала включите устройство");
                                Console.WriteLine("Нажмите любую клавишу для продолжения");
                                Console.ReadKey();
                            }
                            break;
                        case "ins_disc":
                            if (AllDevices[commands[1]].Power == true)
                            {
                                if (MediaPlayer.GetType() == AllDevices[commands[1]].GetType())
                                {
                                    IMediaPlayer device = (IMediaPlayer)AllDevices[commands[1]];
                                    if (device.DiscPresence == false)
                                    {
                                        List<string> numbers = new List<string>();
                                        Console.WriteLine("Введите название диска");
                                        string diskName = Console.ReadLine();
                                        Console.WriteLine("Введите треки для диска, когда будет введено название последнего напишите \"end\"");
                                        while (Console.ReadLine() != "end")
                                        {
                                            numbers.Add(Console.ReadLine());
                                        }
                                        string[] trac = numbers.ToArray<string>();
                                        trac[trac.Length - 1] = null;
                                        device.InsertDisc(new Disc(diskName, trac));
                                    }
                                    else
                                    {
                                        Console.WriteLine("для начала вытащите из устройства текущий диск");
                                        Console.WriteLine("Нажмите любую клавишу для продолжения");
                                        Console.ReadKey();
                                    }

                                }
                            }
                            else
                            {
                                Console.WriteLine("Сначала включите устройство");
                                Console.WriteLine("Нажмите любую клавишу для продолжения");
                                Console.ReadKey();
                            }
                            break;
                        case "set_ml_m":
                            if (AllDevices[commands[1]].Power == true)
                            {
                                if (Fridge.GetType() == AllDevices[commands[1]].GetType())
                                {
                                    IFridge device = (IFridge)AllDevices[commands[1]];
                                    device.SetManualMode();
                                }
                            }
                            else
                            {
                                Console.WriteLine("Сначала включите устройство");
                                Console.WriteLine("Нажмите любую клавишу для продолжения");
                                Console.ReadKey();
                            }
                            break;
                        case "set_nl_m":
                            if (AllDevices[commands[1]].Power == true)
                            {
                                if (Fridge.GetType() == AllDevices[commands[1]].GetType())
                                {
                                    IFridge device = (IFridge)AllDevices[commands[1]];
                                    device.SetNormalMode();
                                }
                            }
                            else
                            {
                                Console.WriteLine("Сначала включите устройство");
                                Console.WriteLine("Нажмите любую клавишу для продолжения");
                                Console.ReadKey();
                            }
                            break;
                        case "set_wm_m":
                            if (AllDevices[commands[1]].Power == true)
                            {
                                if (Fridge.GetType() == AllDevices[commands[1]].GetType())
                                {
                                    IFridge device = (IFridge)AllDevices[commands[1]];
                                    device.SetWarmMode();
                                }
                            }
                            else
                            {
                                Console.WriteLine("Сначала включите устройство");
                                Console.WriteLine("Нажмите любую клавишу для продолжения");
                                Console.ReadKey();
                            }
                            break;
                        case "set_lt_m":
                            if (AllDevices[commands[1]].Power == true)
                            {
                                if (Fridge.GetType() == AllDevices[commands[1]].GetType())
                                {
                                    IFridge device = (IFridge)AllDevices[commands[1]];
                                    device.SetLowTemperatureMode();
                                }
                            }
                            else
                            {
                                Console.WriteLine("Сначала включите устройство");
                                Console.WriteLine("Нажмите любую клавишу для продолжения");
                                Console.ReadKey();
                            }
                            break;
                        case "set_ff_m":
                            if (Freezer.GetType() == AllDevices[commands[1]].GetType())
                            {
                                IFreezer device = (IFreezer)AllDevices[commands[1]];
                                if (device.PresenceFridge)
                                {
                                    IFridge device1 = (IFridge)AllDevices[device.CurrentFridge];
                                    if (device1.Power)
                                    {
                                        device.SetFastFreezeMode();
                                    }
                                    else
                                    {
                                        Console.WriteLine("Сначала включите холодильник");
                                        Console.WriteLine("Нажмите любую клавишу для продолжения");
                                        Console.ReadKey();
                                    }
                                }
                                else
                                {
                                    Console.WriteLine("Для переключения режима морозильная камера должна быть подключена к холодильнику");
                                    Console.WriteLine("Нажмите любую клавишу для продолжения");
                                    Console.ReadKey();
                                }
                            }

                            break;
                        case "set_fg_m":
                            if (Freezer.GetType() == AllDevices[commands[1]].GetType())
                            {
                                IFreezer device = (IFreezer)AllDevices[commands[1]];
                                if (device.PresenceFridge)
                                {
                                    IFridge device1 = (IFridge)AllDevices[device.CurrentFridge];
                                    if (device1.Power)
                                    {
                                        device.SetFreezingMode();
                                    }
                                    else
                                    {
                                        Console.WriteLine("Сначала включите холодильник");
                                    }
                                }
                                else
                                {
                                    Console.WriteLine("Для переключения режима морозильная камера должна быть подключена к холодильнику");
                                }
                            }
                            break;
                        case "set_st_m":
                            if (Freezer.GetType() == AllDevices[commands[1]].GetType())
                            {
                                IFreezer device = (IFreezer)AllDevices[commands[1]];
                                if (device.PresenceFridge)
                                {
                                    IFridge device1 = (IFridge)AllDevices[device.CurrentFridge];
                                    if (device1.Power)
                                    {
                                        device.SetStorageMode();
                                    }
                                    else
                                    {
                                        Console.WriteLine("Сначала включите холодильник");
                                    }
                                }
                                else
                                {
                                    Console.WriteLine("Для переключения режима морозильная камера должна быть подключена к холодильнику");
                                }
                            }
                            break;
                        case "set_ir_m":
                            if (AllDevices[commands[1]].Power == true)
                            {
                                if (Heater.GetType() == AllDevices[commands[1]].GetType())
                                {
                                    IHeater device = (IHeater)AllDevices[commands[1]];
                                    device.SetModeInRoom();
                                }
                            }
                            else
                            {
                                Console.WriteLine("Сначала включите устройство");
                                Console.WriteLine("Нажмите любую клавишу для продолжения");
                                Console.ReadKey();
                            }
                            break;
                        case "set_os_m":
                            if (AllDevices[commands[1]].Power == true)
                            {
                                if (Heater.GetType() == AllDevices[commands[1]].GetType())
                                {
                                    IHeater device = (IHeater)AllDevices[commands[1]];
                                    device.SetModeOnStreet();
                                }
                            }
                            else
                            {
                                Console.WriteLine("Сначала включите устройство");
                                Console.WriteLine("Нажмите любую клавишу для продолжения");
                                Console.ReadKey();
                            }
                            break;
                        case "set_cl_m":
                            if (AllDevices[commands[1]].Power == true)
                            {
                                if (AirConditioning.GetType() == AllDevices[commands[1]].GetType())
                                {
                                    IAirConditioning device = (IAirConditioning)AllDevices[commands[1]];
                                    device.SetModeCooling();
                                }
                            }
                            else
                            {
                                Console.WriteLine("Сначала включите устройство");
                                Console.WriteLine("Нажмите любую клавишу для продолжения");
                                Console.ReadKey();
                            }
                            break;
                        case "set_ht_m":
                            if (AllDevices[commands[1]].Power == true)
                            {
                                if (AirConditioning.GetType() == AllDevices[commands[1]].GetType())
                                {
                                    IAirConditioning device = (IAirConditioning)AllDevices[commands[1]];
                                    device.SetModeHeating();
                                }
                            }
                            else
                            {
                                Console.WriteLine("Сначала включите устройство");
                                Console.WriteLine("Нажмите любую клавишу для продолжения");
                                Console.ReadKey();
                            }
                            break;
                        case "set_vt_m":
                            if (AllDevices[commands[1]].Power == true)
                            {
                                if (AirConditioning.GetType() == AllDevices[commands[1]].GetType())
                                {
                                    IAirConditioning device = (IAirConditioning)AllDevices[commands[1]];
                                    device.SetModeVentilation();
                                }
                            }
                            else
                            {
                                Console.WriteLine("Сначала включите устройство");
                                Console.WriteLine("Нажмите любую клавишу для продолжения");
                                Console.ReadKey();
                            }
                            break;
                        case "con_f":
                            Console.WriteLine("Введите название холодильника к которому хотите подключить морозильную камеру");
                            string fridgeName = Console.ReadLine();
                            IFridge newF = (IFridge)AllDevices[fridgeName];
                            if (newF.PresenceFreezer)
                            {
                                Console.WriteLine("К данному холодильнику уже подключена морозильная камера камера: " + newF.CurrentFreezerName);
                            }
                            else
                            {
                                IFreezer newFz = (IFreezer)AllDevices[commands[1]];
                                newF.ConnectFreezer(commands[1]);
                                newFz.ConnectFridge(fridgeName);
                            }

                            break;
                        case "dis_f":
                            Console.WriteLine("Введите название холодильника от которого хотите отключить морозильную камеру");
                            string fridgeName1 = Console.ReadLine();
                            IFridge newFg = (IFridge)AllDevices[fridgeName1];
                            IFreezer newFrz = (IFreezer)AllDevices[commands[1]];
                            newFg.DisableFreezer(commands[1]);
                            newFrz.DisableFrifge(fridgeName1);
                            break;
                        default:
                            Console.WriteLine("Нажмите любую клавишу для продолжения");
                            Console.ReadKey();
                            break;

                    }
                }
                else
                {
                    Console.WriteLine("Нет устройства с таким именем или неправильный формат команды");
                    Console.WriteLine("Нажмите любую клавишу для продолжения");
                    Console.ReadKey();
                }
            }
        }
Ejemplo n.º 2
0
 static void Main(string[] args)
 {
     DeviceCreator dc = new DeviceCreator();
     Menu menu = new Menu(dc.CreateFridge(), dc.CreateHeater(), dc.CreateFreezer(), dc.CreateAirConditioning(), dc.CreateTV(), dc.CreateMediaPlayer());
     menu.ConsoleMenu();
 }