Advertisement
vovanhik_24

#49

Jan 12th, 2025 (edited)
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.00 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace ZooApp
  6. {
  7. public class Program
  8. {
  9. static void Main(string[] args)
  10. {
  11. AviaryCreator aviaryCreator = new AviaryCreator();
  12. List<Aviary> aviaries = aviaryCreator.GetAviaries();
  13.  
  14. Zoo zoo = new Zoo(aviaries);
  15. zoo.Run();
  16. }
  17. }
  18.  
  19. public enum Genders
  20. {
  21. Male,
  22. Female,
  23. }
  24.  
  25. public class Animal
  26. {
  27. public Animal(string animalType, string sound)
  28. {
  29. AnimalType = animalType;
  30. Sound = sound;
  31. CreateRandomGender();
  32. }
  33.  
  34. public string AnimalType { get; private set; }
  35. public string Sound { get; private set; }
  36. public Genders Gender { get; private set; }
  37.  
  38. private void CreateRandomGender()
  39. {
  40. Genders gender = (Genders)UserUtils.BaseRandomGenerator(Enum.GetValues(typeof(Genders)).Length);
  41. Gender = gender;
  42. }
  43. }
  44.  
  45. public class Aviary
  46. {
  47. private readonly List<Animal> _animals;
  48.  
  49. public Aviary(string name, List<Animal> animals)
  50. {
  51. Name = name;
  52. _animals = animals;
  53. }
  54.  
  55. public string Name { get; private set; }
  56.  
  57. public void DisplayInfo()
  58. {
  59. Console.WriteLine($"Вольер: {Name}");
  60. Console.WriteLine($"Количество животных: {_animals.Count}");
  61. Console.WriteLine("Информация о животных:");
  62.  
  63. foreach (Animal animal in _animals)
  64. {
  65. Console.WriteLine($"-Животное: {animal.AnimalType}| Пол: {animal.Gender}, Звук: {animal.Sound}");
  66. }
  67. }
  68. }
  69.  
  70. class AviaryCreator
  71. {
  72. private readonly List<Aviary> _aviarys;
  73. private readonly AnimalCreator _createAnimal;
  74.  
  75. public AviaryCreator()
  76. {
  77. _aviarys = new List<Aviary>();
  78. _createAnimal = new AnimalCreator();
  79. InitializeAviary();
  80. }
  81.  
  82. public List<Aviary> GetAviaries()
  83. {
  84. return _aviarys.ToList();
  85. }
  86.  
  87. private void InitializeAviary()
  88. {
  89. _aviarys.Add(new Aviary("Львиный вольер", _createAnimal.CreateAnimals(new Animal("Лев", "Rour"))));
  90. _aviarys.Add(new Aviary("Крокодилий вольер", _createAnimal.CreateAnimals(new Animal("Крокодил", "Growl"))));
  91. _aviarys.Add(new Aviary("Обезьяний вольер", _createAnimal.CreateAnimals(new Animal("Обезьяна", "Laugh"))));
  92. _aviarys.Add(new Aviary("Вольер с хищными птицами", _createAnimal.CreateAnimals(new Animal("Птица", "Squeak"))));
  93. }
  94. }
  95.  
  96. public class AnimalCreator
  97. {
  98. public List<Animal> CreateAnimals(Animal animal)
  99. {
  100. List<Animal> animals = new List<Animal>();
  101. int animalCount = UserUtils.GenerateRandom(0, 10);
  102.  
  103. for (int i = 0; i < animalCount; i++)
  104. {
  105. animals.Add(new Animal(animal.AnimalType, animal.Sound));
  106. }
  107.  
  108. return animals;
  109. }
  110. }
  111.  
  112. public class Zoo
  113. {
  114. private readonly List<Aviary> _aviarys;
  115.  
  116. public Zoo(List<Aviary> aviarys)
  117. {
  118. _aviarys = aviarys;
  119. }
  120.  
  121. public void Run()
  122. {
  123. const int ExitCommand = 0;
  124.  
  125. bool isWorking = true;
  126.  
  127. while (isWorking)
  128. {
  129. Console.Clear();
  130. Console.WriteLine("Выберите вольер, к которому вы хотите подойти:\n");
  131.  
  132. ShowAviarys();
  133.  
  134. Console.WriteLine($"\n{ExitCommand}. Выход");
  135. Console.Write("\nВведите номер: ");
  136.  
  137. EnterAviary(ref isWorking, ExitCommand);
  138. }
  139. }
  140.  
  141. private void ShowAviarys()
  142. {
  143. for (int i = 0; i < _aviarys.Count; i++)
  144. {
  145. Console.WriteLine($"{i + 1}. {_aviarys[i].Name}");
  146. }
  147. }
  148.  
  149. private void EnterAviary(ref bool isWorking, int exitCommand)
  150. {
  151. if (int.TryParse(Console.ReadLine(), out int choice))
  152. {
  153. if (choice == exitCommand)
  154. {
  155. isWorking = false;
  156. }
  157. else if (choice >= 1 && choice <= _aviarys.Count)
  158. {
  159. Console.Clear();
  160. Aviary selectedAviary = _aviarys[choice - 1];
  161. selectedAviary.DisplayInfo();
  162. Console.WriteLine("Нажмите Enter, чтобы вернуться в меню.");
  163. Console.ReadLine();
  164. }
  165. else
  166. {
  167. Console.WriteLine("Неверный выбор. Попробуйте еще раз.");
  168. Console.ReadLine();
  169. }
  170. }
  171. else
  172. {
  173. Console.WriteLine("Некорректный ввод. Пожалуйста, введите число.");
  174. Console.ReadLine();
  175. }
  176. }
  177. }
  178.  
  179. class UserUtils
  180. {
  181. private static Random s_random = new Random();
  182.  
  183. public static int GenerateRandom(int maxValue)
  184. {
  185. return s_random.Next(0, maxValue + 1);
  186. }
  187.  
  188. public static int GenerateRandom(int minValue, int maxValue)
  189. {
  190. return s_random.Next(minValue, maxValue + 1);
  191. }
  192.  
  193. public static int BaseRandomGenerator(int maxValue)
  194. {
  195. return s_random.Next(0, maxValue);
  196. }
  197.  
  198. public static int BaseRandomGenerator(int minValue, int maxValue)
  199. {
  200. return s_random.Next(minValue, maxValue);
  201. }
  202. }
  203. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement