lovelyvook

Unit_48

Aug 12th, 2024 (edited)
219
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.70 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace Ijunior
  6. {
  7.     internal class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             Game game = new Game();
  12.             game.Work();
  13.         }
  14.     }
  15.  
  16.     class Game
  17.     {
  18.         private Zoo _zoo = new Zoo();
  19.  
  20.         public void Work()
  21.         {
  22.             const string CommandChooseCage = "1";
  23.             const string CommandExit = "2";
  24.  
  25.             bool isWork = true;
  26.  
  27.             while (isWork)
  28.             {
  29.                 Console.Write($"{CommandChooseCage} - посмотреть на вольер" +
  30.                               $"\n{CommandExit} - выйти" +
  31.                               $"\nВведите номер: ");
  32.  
  33.                 switch (Console.ReadLine())
  34.                 {
  35.                     case CommandChooseCage:
  36.                         ChooseCage();
  37.                         break;
  38.  
  39.                     case CommandExit:
  40.                         isWork = false;
  41.                         break;
  42.  
  43.                     default:
  44.                         Console.WriteLine("Некорректный ввод");
  45.                         break;
  46.                 }
  47.  
  48.                 Console.ReadKey();
  49.                 Console.Clear();
  50.             }
  51.         }
  52.  
  53.         private void ChooseCage()
  54.         {
  55.             Console.WriteLine($"Доступно {_zoo.CagesCount} вольеров");
  56.             Console.Write("Выберите номер: ");
  57.  
  58.             if (int.TryParse(Console.ReadLine(), out int index))
  59.             {
  60.                 if (index > 0 && index <= _zoo.CagesCount)
  61.                     _zoo.ShowCage(index - 1);
  62.                 else
  63.                     Console.WriteLine("Такого вольера нет");
  64.             }
  65.             else
  66.             {
  67.                 Console.WriteLine("Некорректный ввод");
  68.             }
  69.         }
  70.     }
  71.  
  72.     class Zoo
  73.     {
  74.         private List<Cage> _cages;
  75.  
  76.         public Zoo()
  77.         {
  78.             _cages = new List<Cage>();
  79.             CreateCages();
  80.         }
  81.  
  82.         public int CagesCount => _cages.Count;
  83.  
  84.         public void ShowCage(int index)
  85.         {
  86.             _cages[index].ShowInfo();
  87.         }
  88.  
  89.         private void CreateCages()
  90.         {
  91.             int defaultCountCages = 5;
  92.  
  93.             for (int i = 0; i < defaultCountCages; i++)
  94.             {
  95.                 _cages.Add(new Cage());
  96.                 FillCage(_cages[i]);
  97.             }
  98.         }
  99.  
  100.         private void FillCage(Cage cage)
  101.         {
  102.             int minAnimals = 1;
  103.             int maxAnimals = 5;
  104.             int countAnimals = Utils.GetRandomNumber(minAnimals, maxAnimals);
  105.  
  106.             Dictionary<string, string> availableAnimals = new Dictionary<string, string>()
  107.             {
  108.                 {"кот", "мяу" } ,
  109.                 {"собака", "гав" } ,
  110.                 {"лягушка", "ква" } ,
  111.                 {"корова", "му" } ,
  112.                 {"утка", "кря" },
  113.                 {"свинья", "хрю" },
  114.                 {"овца", "бе" },
  115.                 {"осел", "иа" }
  116.             };
  117.  
  118.             string[] availableSex = new string[] { "самка", "самец" };
  119.  
  120.             string name = availableAnimals.Keys.ElementAt(Utils.GetRandomNumber(0, availableAnimals.Count - 1));
  121.             string sound = availableAnimals[name];
  122.  
  123.             for (int i = 0; i < countAnimals; i++)
  124.             {
  125.                 string sex = availableSex[Utils.GetRandomNumber(0, availableSex.Length)];
  126.                 cage.AddAnimal(name, sound, sex);
  127.             }
  128.         }
  129.     }
  130.  
  131.     class Cage
  132.     {
  133.         List<Animal> _animals = new List<Animal>();
  134.  
  135.         public void AddAnimal(string name, string sound, string sex)
  136.         {
  137.             _animals.Add(new Animal(name, sound, sex));
  138.         }
  139.  
  140.         public void ShowInfo()
  141.         {
  142.             foreach (Animal animal in _animals)
  143.             {
  144.                 animal.ShowInfo();
  145.             }
  146.         }
  147.     }
  148.  
  149.     class Animal
  150.     {
  151.         private string _name;
  152.         private string _sound;
  153.         private string _sex;
  154.  
  155.         public Animal(string name, string sound, string sex)
  156.         {
  157.             _name = name;
  158.             _sound = sound;
  159.             _sex = sex;
  160.         }
  161.  
  162.         public void ShowInfo()
  163.         {
  164.             Console.WriteLine($"{_sex} {_name} говорит {_sound}");
  165.         }
  166.     }
  167.  
  168.     class Utils
  169.     {
  170.         private static Random s_random = new Random();
  171.  
  172.         public static int GetRandomNumber(int minValue, int maxValue)
  173.         {
  174.             return s_random.Next(minValue, maxValue);
  175.         }
  176.     }
  177. }
Advertisement
Add Comment
Please, Sign In to add comment